我有一台外部机器,可以在我的 Raspberry pi 中向我发送结果。在我的模拟器 Cutecom 中,我一行一行地得到结果,没有问题。我使用 Codeblocks 并编写了自己的 C 应用程序,每 10 秒读取一次这些数据。但是奇怪的事情发生了。有时我有一行一行的结果,有时我在每行的末尾都有奇怪的字符^M ^J,结果我的决赛结果很糟糕。我认为这些EOF字符是因为外部机器在Windows中开发的。
好的结果
+PARAMETERS: 45 BYTES FROM 0000:0000 (063)
MACHINE_1:(AN=23.45,H=34.56,D=12.34)
糟糕的结果
+PARAMETERS: 45 BYTES FROM 0000:0000 (063)^M^JMACHINE_1:
(AN=21.45,H=33.56,D=10.34)
好的,直到这里唯一的问题是命令行显示结果的方式,但我的结果还可以。但是,如果我尝试使用 strtok 来获取一些令牌,那么由于这些字符,我会遇到严重的问题。我能做些什么?我可以添加一些东西来转义这些字符吗?这是我用来从机器读取数据的代码部分
char buff[300];
memset(buff, 0, sizeof(buff));
for (;;)
{
n=read(fd,buff,sizeof(buff));
sleep(1);
printf("%s", buff);
printf("\n");
....
....