我的應用程序從串行端口(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