【发布时间】:2015-10-08 03:14:32
【问题描述】:
我想实现一个相当简单的函数,输出串口的字节数组,例如
byte[] o = readAllDataFromSerialPort();
实现了实际的串口功能。我使用串口接收一些数据,并通过事件DataReceived处理数据。
sp = new SerialPort(portname, 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
sp.Handshake = Handshake.None;
sp.DataReceived += new SerialDataReceivedEventHandler(serialDataReceived);
我检查接收到的数据是否有“消息结束”包,以便关闭串行端口,等等。喜欢
if (data = "UA") sp.Close()
所以基本上我想做的是等待关闭,然后再返回数据,这样在顶级视图上程序不会继续,直到数据到达。但是,我无法理解如何以有效和优雅的方式实现这种“等待”,因为我的数据依赖于事件。任何提示或线索或示例将不胜感激。
【问题讨论】:
-
等待是个很糟糕的主意,很可能导致死锁。普遍的建议适用,只是不要打扰。你只是在你的程序中添加失败模式,根本没有任何好处。
标签: c# serial-port