我的应用程序从串行端口(MyDataReader)读取每个xms的一些数据并将其显示在控件上,MyDataReader也可以是一个文件,我可以从中读取数据。System.Threading.Timer和SerialPort读取
我使用了一个简单的计时器,每读完一个刻度我都从串口/文件中读取数据,处理它并显示它,它工作得很好。
现在我添加了另一个需要读取数据的设备,并且切换到了System.Threading.Timer,但是现在我的“tick”函数在从串口读取数据时工作不正常,我得到零。当我进入调试模式和断点ReadFromSerialPort()函数时,有时我会得到有效的数据,有时候我没有。
如果我将读取从串口切换到文件读取,它可以正常工作,我调用了所有显示数据的控件。
我锁定从一个串口读/写:
lock(this)
{
writetoserialport;
readfromserialport;
}
任何人有任何想法,为什么我得到零的时候,当我断点我有时数据? 这就像它打开从不同线程上的串行端口读取,我需要等待要读取的数据。
谢谢。
你能提供更多的代码吗? – Nick 2011-03-09 10:57:55
而不是轮询,为什么不做串口上的异步读取。 – CheeZe5 2011-03-09 15:47:13