如果 某协议的数据长度最大是 50,现在根据协议创建一个 BYTE frame[55],那么创建时,frame[]里面放什么样的数据?毕竟现实中要根据需要确定数据位,那么创建时frame里怎么放数据? (是不是放初始化的数据?比如“欢迎使用”之类的)还有如果要设置 DCB的起始位怎么设置,我没找到DCB里的起始位啊,倒是有停止位。   还有如果有停止位,是不是发送命令时 是不是也要把停止位也发送过去?似乎有的协议虽然有停止位,但是发送的数据却是以数据段结尾,数据段发完了起码看起来后面就没了。还有当上电后返回数据0xfc是在哪个函数里返回?用return返回就可以了吗

解决方案 »

  1.   

    当然初始化 是{NULL}了, 你的串口协议肯定有开头和结束标志, 这个初始化为0就不影响你解析数据。 
      

  2.   

    比如我的串口协议 帧格式   帧头,数据长度,命令,数据       这是不是说明没有结束标记啊,听说终止位是在 DCB里设置的。这个终止位是不是不在   帧格式的数据区里?
      

  3.   

    muzizongheng   你的积分挺多的,给我点吧,这个问题我把全部积分都放上了。。
      

  4.   

    还有如果要设置 DCB的起始位怎么设置,我没找到DCB里的起始位啊,倒是有停止位。  
    // 起始位都是1位,不用设置也没有地方可以设置那么创建时frame里怎么放数据? 
    // 可以设置为全0x00,或者根据协议,将不会变化的数值直接设置好,其它的设为0x00;还有如果有停止位,是不是发送命令时 是不是也要把停止位也发送过去
    // 起始位,停止位,数据位都是针对单个字节的,
    // 1起始位,1停止位,8数据位,是指发送一个字节信息的时候,会有10个脉冲时间,1个脉冲表示字节开始,一个脉冲表示字节结束,中间8个脉冲是数据。
    // 这个由串口硬件控制,你只要在软件中设置好就可以了还有当上电后返回数据0xfc是在哪个函数里返回?用return返回就可以了吗
    // 这个应该是指下位机上电后会发送一个字节0xfc,你需要在串口中ReadFile()得到它。
      

  5.   

    lfchen你是从哪里知道这些的?哪本书啊?推荐几本讲串口编程的书吧
      

  6.   

    你现在做的串口编程方面是上位机还是下位机啊。如果使用VC写上位机的话,根本不需要对硬件了解太多啊,只需要根据协议接收数据、解析数据就可以了。那些什么停止位、校验位的你根本不需要去管,按通用的方法设置DCB就好了。