日期:2014-05-18  浏览次数:20773 次

C# 串口编程 处理应答问题
本人做串口编程的时候遇到一些问题,想和大家探讨一下!
本人C#串口编程还算比较熟悉,编过一些程序,基本的数据读写还是会的,普通的通信协议的解析也还清除,但是最近遇到一个问题却让我没了思路。

问题是这样的,PC机和PLC通过串口进行通信,PC机发送一个指定的读命令,这个读命令包含一个固定的字长,然后PLC接收到这个命令之后,会判断这个命令是否“合法”,如果命令合法就应答一个字节数据,表示自己做好了接收命令的准备,之后PC机发送需要读写的寄存器地址,PLC根据这个地址返回相应的数据(多个字节)。

现在我点犯难了,如何处理好这个关系,到底接听使用serialport类的监听事件,还是专门做一个监听的线程。接收的数据会根据发送的数据产生相应的格式变化!

没有高手可以提供一点解决这种问题的思路,点点迷津,如何组织我的代码,在下不胜感激。

------解决方案--------------------
探讨
不是 西门子 S7 200 PPI通信!
这个和Modbus RTU是不是有点不一样!
Modbus好像一般是一问一答!

------解决方案--------------------
serialport对象的waitone方法和serialport对象的reset方法搭配使用 一下 试一试 即:先waitone然后再reset