当前位置: 技术问答>linux和unix
串口收到的数据存储到文件,出现了怪现象
来源: 互联网 发布时间:2016-07-21
本文导语: 上位机向串口每次发送10个字节,内容是从0——150,第一次发:0x00 0x01 0x02 …… 0x09,然后第二次发:0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13,然后依次增加,直到0x95(也就是十进制的150),然后再次循环发送...
上位机向串口每次发送10个字节,内容是从0——150,第一次发:0x00 0x01 0x02 …… 0x09,然后第二次发:0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13,然后依次增加,直到0x95(也就是十进制的150),然后再次循环发送。
我在LINUX下编写C程序接收串口数据,也是每次收10个字节,放到一个unsigned char的数组中,然后将这10个字节存储到文件中。
接收一段时间后,我打开文件查看接收内容,发现有个问题:
直接用vim打开,发现第一行是空行,从第二行才开始有内容,由于是十六进制的内容,显示出来就都是乱七八糟的符号了。
然后我输入命令,以十六进制显示,发现第一行是从0x0A开始显示,依次向后,但是前面的0x00 0x01 …… 0x09不见了,真是奇怪了。
我继续向后面看,发现后面没有这种问题,到0x95(十进制150)后,后面紧跟着就是00 01 02 03 04 05 06 07 08 09 0A……,也就是说只有第一次收到的10个字节丢掉了,不知道怎么回事。
有可能是因为十六进制的0A表示换行,但是为什么后面的都正常呢?而且即使有换行,第一次收到的10个字节的数据也没有道理丢失啊?郁闷中。
请高手指教
我在LINUX下编写C程序接收串口数据,也是每次收10个字节,放到一个unsigned char的数组中,然后将这10个字节存储到文件中。
接收一段时间后,我打开文件查看接收内容,发现有个问题:
直接用vim打开,发现第一行是空行,从第二行才开始有内容,由于是十六进制的内容,显示出来就都是乱七八糟的符号了。
然后我输入命令,以十六进制显示,发现第一行是从0x0A开始显示,依次向后,但是前面的0x00 0x01 …… 0x09不见了,真是奇怪了。
我继续向后面看,发现后面没有这种问题,到0x95(十进制150)后,后面紧跟着就是00 01 02 03 04 05 06 07 08 09 0A……,也就是说只有第一次收到的10个字节丢掉了,不知道怎么回事。
有可能是因为十六进制的0A表示换行,但是为什么后面的都正常呢?而且即使有换行,第一次收到的10个字节的数据也没有道理丢失啊?郁闷中。
请高手指教
|
发个代码上来瞧瞧噻, 这么说看不出是什么问题。
|
read(fd4,&buff4[m4],10);
fdfile=open("/tmp/temp1",O_WRONLY | O_CREAT | O_APPEND);
write(fdfile,&data4[1],m4);
close(fdfile);
sleep(1);
你 这个 m4 怎么来 的 ?值又是什么 ?
读到 &buff4[m4]
写入确实 从 &data4[1]
这。。。。不对吧。。
fdfile=open("/tmp/temp1",O_WRONLY | O_CREAT | O_APPEND);
write(fdfile,&data4[1],m4);
close(fdfile);
sleep(1);
你 这个 m4 怎么来 的 ?值又是什么 ?
读到 &buff4[m4]
写入确实 从 &data4[1]
这。。。。不对吧。。