第一次用编VC的程序,一个基于Modbus协议的串口通信,读下位机的数据,现在搞不清楚读进来的数据是什么格式和类型的,比如说下位机里的数是10H(十六进制),那如果我想在接收后显示出相应的十进制数(也就是16)应该怎么做?可以直接显示吗?
可能说的不太清楚,在线等,有不清楚的地方我在解释,谢谢各位!

解决方案 »

  1.   

    char data = 0x10;
    char str[10];itoa(data,str,10);MessageBox(str);
    这里主要用到了 itoa 函数。
      

  2.   

    Modbus协议中的数据内容应该是双方约定好的,每个不同功能号所读取的数据也不同。如果你不知道数据实际表示的意义,就算读过来又有什么用呢!
      

  3.   

    我是把接收到的数据存入了一个BYTE型的数组里,然后再把每相邻的两个字节整合到一个UINT型的变量中,我试过直接给UINT变量赋16进制的值然后不用通过任何变换就可以显示十进制数了。
    不知道接收的数据会是什么样子,现在下位机还没做好没有办法联机调试。有人说接收到的数据要先转换ASCII码。
      

  4.   

    我也做过串口通信,软件端发送协议指令过去,一般返回就是16进制的一组数据了。
    最好不用byte数组接受,用char比较好!!!