VC下用CSerialPort类进行串口编程
http://zhidao.baidu.com/link?url=k36OcIy91UdrO74r21fL3mnbsYzspRs54EoYRU7Uk7iY5h2CHpwK...
http://zhidao.baidu.com/link?url=k36OcIy91UdrO74r21fL3mnbsYzspRs54EoYRU7Uk7iY5h2CHpwKHfBYpgZRBF01Si0Lb67RZ7a0H8iKuaWyQ2oxSL55VEt3uCd8a6SCzku
我在看到您回答的这个问题,我现在遇到同样的问题,我是想直接在龚建伟串口调试助手上改,但serialPort.Read这个函数用不起是为什么啊?我接收的数据帧头AF,再接收64个字节的数据,帧为FA。在OnCommunication函数下面怎么改啊? 展开
我在看到您回答的这个问题,我现在遇到同样的问题,我是想直接在龚建伟串口调试助手上改,但serialPort.Read这个函数用不起是为什么啊?我接收的数据帧头AF,再接收64个字节的数据,帧为FA。在OnCommunication函数下面怎么改啊? 展开
1个回答
展开全部
serialPort.Read这个函数用不起???还是不起作用
帧嘛
定义一个 BYTE buffer[1+64+1]; 也就是 buffer[66];
再定义一个int bufferLength = 0;
OnCommunication(...)中
{
if (0 == bufferLength) // 帧头还未接收
{
if (0xAF != ch) // 不是帧头
return; // 返回
}
if (65 == bufferLength) // 帧尾还未接收
{
if (0xFA != ch) // 不是帧尾
{
bufferLength = 0; // 丢弃已经接收的数据,重置缓冲区有效数据长度为零
return; // 返回
}
}
// 要实时显示接收到的 ch ,在这里添加代码即可
buffer[bufferLength] = ch;
bufferLength++;
if (66 == bufferLength)
{
// 一帧已经接收完毕,数据在 buffer 中
bufferLength = 0; // 取出帧后,重置缓冲区有效数据长度为零
}
}
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询