我有一个文件,需要通过串口传送给下位机。数据格式是这样的:
6.8367 1036.4711
6.8375 1036.4680
6.8383 1036.4630
6.8392 1036.4601
6.8400 1036.4570
6.8408 1036.4551
6.8417 1036.4541
6.8425 1036.4520有两个信号量,每一行两个,一行代表一个。
我是不是应该先把这个十进制数转换成十六进制啊。还是有别的方法?
请指教!

解决方案 »

  1.   


    关键是看下位机需要如何解读和处理。从你的数值范围来看,比较简单的方法是:每个实数分为两个 Integer (unsogned short) 来表示,即一个表示整数部分,一个表示小数部分。
      

  2.   

    可以查阅一些MODBUS的资料,参考一下
      

  3.   

    看下位机用的是什么协议:
    1)字符串处理方式
    2)BCD码处理方式
    3)IEEE745处理方式
      

  4.   

    楼主的意思是要构建串口通信协议?
    一般的串口通信协议结构如下:
    STX+ADD+CMD+Data+ETX +Check
    STX:通信起始符
    ADD:下位机地址
    CMD:通信命令
    Data:要传送的数据(可选,比如读下位机就不需要)
    ETX:通信结束符
    Check:校验和,可自行定义一个校验方式,用于检查每次通信是否出错。教研方法有多种就你的要求而言,你的下位机是接受16进制数据的,那么我建议你将数据转换为ASCII编码形式发送。
    比如:6.8367 1036.4711 可以转换为:36 2E 38 33 36 37 20 31 30 33 36 2E 34 37 31 31 十六
    进制表示
    02表示STX 
    04表示ETX  
    ADD为01的话就是:30 31 为02的话就是:30 32
    CMD可选,你可以不需要它
    Check方式也可选,你可以不需要它那么最终就可以构成一个串口通信命令了:02 30 31 36 2E 38 33 36 37 20 31 30 33 36 2E 34 37 31 31 04
    STX ADD                    Data                          ETX