日期:2014-05-17  浏览次数:21114 次

c# 串口通信 SerialPort 缓冲
在做顾客显示屏的串口通信时遇到一个问题,第一次在显示屏上显示了一个数字之后,第二次更改了传过去的值,但是显示的仍然是第一次的值,我猜想可能是没有清除缓冲区的原因,但是就是不知道在哪里清除,调用了SerialPort 的 Flush 方法和DiscardInBuffer 和DiscardOutBuffer 方法都没有用,请高手指点?
 

------解决方案--------------------
我一直用SerialPort挺好的,不存在这个问题
lz检查一下自己的代码

------解决方案--------------------
或许这跟显示屏的程序可能有关系。例如假设你发送一行文字,比如文字的后边或者前边有换行回车,客显会以为你要换行(如果遇到只有一行的就看不出来了)。

在每发送一行信息时,都在文字的前头包括客显的清空指令,或者绝对定位到第一行的指令。不管这有没有必要,都这样发送消息。
------解决方案--------------------
可以上点源码看看,不然难以判断
------解决方案--------------------
两种情况:1楼主自己定义的缓冲区数据没有清除,系统串口缓冲区是读一次数据就清除一次。
2只能发送第一个包,第二个包被破坏而不能接受,因此数据没有更新,仍显示第一次的数据。
------解决方案--------------------
我用2台笔记本连接,接受不到数据。但是本机发送能接受。求助!!
------解决方案--------------------
无码无真相...太短了...
------解决方案--------------------
探讨
或许这跟显示屏的程序可能有关系。例如假设你发送一行文字,比如文字的后边或者前边有换行回车,客显会以为你要换行(如果遇到只有一行的就看不出来了)。

在每发送一行信息时,都在文字的前头包括客显的清空指令,或者绝对定位到第一行的指令。不管这有没有必要,都这样发送消息。

------解决方案--------------------
应该是没有通讯好,你的指令不对