我用的MSComm控件实现的串口通信,查了资料都是只要讲述帧格式定义的方式,没有见到程序中如何体现帧格式。请问大侠们是够可以提供一个简单的定义帧格式实现发送数据的代码,我参考一下,现在了解的只是如何定义在程序中如何实现没有一点概念。我是初学者,希望得到大家的帮忙!谢

解决方案 »

  1.   

    给个例子struct PACKET
    {
        char cHead;          // 自定义帧头标志,如0x02或者'A'(这个任意)
        int  nLength;        // 说明后点vbData的长度
        BYTE vbData[1];      // 实际上应该是变长的结构,这里只定义一个字节
    };
      

  2.   

    1 定义一个结构体。
    2 填充完毕结构体内容
    3 把这个结构体序列话为byte[]数组,发生出去。4 接收这里,直接解析byte[]为对应的结构体即可。注意:byte[]开头一定要加上version字段。例如: 
    strct NFileFrame
    {
    byte m_version;
    string m_fileName;
    int  m_phonenum;
    }
    看完后,如果还不明白,请直接问。
      

  3.   

    结构体序列化为byte[]数组这步怎么实现呢?楼上的,我来晚了 
      

  4.   

    我发现在发送帧的时候,我定义的结构体是以字符‘:’为帧头的,它对应的十六进制数应该为3A,但我在数据调试时发现它的数据为3A CC CC CC,这个不知道是什么原因呢?这样会影响接收到的数据的呀,该怎么办呢?请懂帧格式的朋友帮忙下。谢谢!
      

  5.   

    弄明白了 原来结构体中有字节对齐问题 只要在结构体前加上伪指令#pragma pack (n),C编译器将按照n个字节对齐。就可以了 只要将n设为1就可以了不用再填充了 结贴!谢谢大家啦
      

  6.   

     大哥能发我一份代码吗,谢了阿 [email protected]