VC下用CSerialPort类进行串口编程

http://zhidao.baidu.com/link?url=k36OcIy91UdrO74r21fL3mnbsYzspRs54EoYRU7Uk7iY5h2CHpwK... http://zhidao.baidu.com/link?url=k36OcIy91UdrO74r21fL3mnbsYzspRs54EoYRU7Uk7iY5h2CHpwKHfBYpgZRBF01Si0Lb67RZ7a0H8iKuaWyQ2oxSL55VEt3uCd8a6SCzku
我在看到您回答的这个问题,我现在遇到同样的问题,我是想直接在龚建伟串口调试助手上改,但serialPort.Read这个函数用不起是为什么啊?我接收的数据帧头AF,再接收64个字节的数据,帧为FA。在OnCommunication函数下面怎么改啊?
展开
 我来答
wangpaishi
2014-04-15 · TA获得超过570个赞
知道小有建树答主
回答量:932
采纳率:52%
帮助的人:758万
展开全部

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; // 取出帧后,重置缓冲区有效数据长度为零
    }
}
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式