我正在与 Arduino 合作。
我想在 C 中的一个字符串之后发送Ctrl+ 。我尝试截断但没有奏效。那么该怎么做呢?z^Z
Ctrl+ Z= 26 = '\032'
= '\x1A'
。任何一个反斜杠转义序列都可以写成字符串文字(但要小心十六进制转义,就好像它后面跟着一个数字或 AF 或 af,这也将被视为十六进制转义的一部分,这不是你要)。
但是,如果您在 Windows 机器上模拟终端输入(因此您希望将字符视为 EOF 指示),则需要重新考虑。这不是它的工作原理。
它可能会也可能不会用 Arduino 做你想做的事;在某种程度上,这取决于你认为它会做什么。它还取决于输入字符串是否会被视为来自终端。
我破解了这个,因为我需要类似的
#include <stdio.h>
#define CTRL(x) (#x[0]-'a'+1)
int main (void)
{
printf("hello");
printf("%c", CTRL(n));
printf("%c", CTRL(z));
}
希望对你有帮助 8)
我假设“截断”实际上意味着附加。
在 ASCII 中,CTRL+z是代码点 26,因此您可以简单地将其附加为字符,例如:
#define CTRL_Z 26
char buffer[100];
sprintf (buffer, "This is my message%c", CTRL_Z);
该sprintf
方法只是执行此操作的方法之一,但它们基本上都取决于您在末尾放置一个值为 26 的单个字节。
以下应该有效:无论您要\032
在最后写什么附加例如:
strcpy(InputCommand,"hi\032");
GetSerialData(InputCommand,......); //this is my own function which uses serialPuts()