vc读串口时遇到的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 04:52:40
我做的一个程序是接收单片机发来的串口数据,数据是以16进制形式发来,格式为帧头0xAA、功能代码、数据长度、数据1高位、数据1地位、数据2高位、数据2低位。串口的接收基本工作我都做了,但不知如何判断帧头,如何把接收到的数据1、2分离出来,然后转换成十进制浮点数形式写入txt文件,两数据间用“,”隔开,两数据写完后换行
你的答案没回答完整,你把剩下的“把收到的数据以十进制浮点数形式写入一txt文件,两数据间用“,”隔开,两数据写完后换行”回答完整,如果可行我就把分给你

1.将收到的数据放在一个缓冲区buf内.
2.依次搜索buf中的元素,当遇到0xAA时表示开始了一帧数据,你在依次将后面的数据解析出来就可以了.
for(int i = 0; i < len; i++)
{
if(buf[i] == 0xAA)
break;
}

if(i < len)
{
//此时:
buf[i] == 0xAA
buf[i+1]功能码
buf[i+2]长度
要提取数据1和2这样做:
WORD data1 = buf[i+3];//数据1高位
data1 = (data1 << 8) + buf[i+4];
数据2同理
}

需要注意的是:有可能一次收不完一帧数据,所以需要等待将数据收完后在做处理.你的每帧数据长度一定,所以很好判断的.