不要给我推荐Modbus TCP之类的方法,第三方设备没有这个功能,只有TCP类似Socket通讯的方式。
现在遇到的问题:
1、使用TRCV_C接收来自设备的数据,因第三方发送的为ASCII码,LEN设定为0,收到的数据格式设置为String的情况下,能够在收到数据中找到实际第三方设备发出的数据,但是前后都有乱码且数据的位置不唯一。
2、如果LEN设置成定长,比如我需要接收10个Byte的数据,收到的数据显示的只有8个Byte的字符,被截掉了2个Byte,如果改成设定LEN10,发8个字符,收到的更不对了。
补充一下,如果我发0987654321,显示87654321,但是中间我发过一个短的数字串,比如12345,然后再发0987654321,收到的数据全乱了。

解决方法,供参考:
1、第三方设备支持发送定长数据,所以我所有的解决方法都建立在定长基础上。
2、因为数据的格式是唯一的,见下面的图,有三个位置的字符是不会变的,两个小数点,一个逗号,如果发现收到的数据这三个char不对了,将TRCV_C整个重启,即CONT管脚复位一次即可清除端口接收缓冲区的数据(注意非DATA管脚数据),我始终认为就是缓冲区在作怪导致。
3、Data区不要用String格式,根据手册描述,String会有两个Byte的占位,导致收到的数据会被砍头2个Byte,我这里使用Char数组接收,也方便判断收到的格式。
