发布于 2015-02-04 12:29:41
5楼
/还有1个特别注意的是串口工具里接受到的16进制数据是忽略高位字节的0的,例如数字“0”的Uicode码是“0031”,当用手机发送1给DTU时,在串口工具里显示的是“31”,这在程序里需要处理,还有就是最好PLC发送给DTU的汉字是4的倍数,原因是每个汉字的Uicode码占2个字节,例如PLC需要发送“简阳1#泵启动”7个汉字,占14个字节,那么转换为Unicode码后就是需要发送:
“16# 7B809633 16#00310023 16#6CF5542F 16#52A8”
这样的话,一是PLC里面不好处理,不能使用双子块传送,二是这些16#进制数据并不是实际的数据而是Uicode码的转换值,两者有很大的不同,例如“16#52A8”与“16#000052A8”在做为数据处理时是等效的,而做为Uicode码时是完全不同的,那么手机接收到的短信就有可能是乱码;
所以最好发送的汉字是4的倍数,例如“简阳1#泵启动!”这样的话就不会出错,当然发送奇数汉字也可以,那么在PLC程序里就必须使用字节传送了,不能使用双子块整体传送,大大增加了PLC的负担和人为的工作量!