我有一臺設備連接到我的電腦,每隔5分鐘向計算機發送一次串行數據。我想編寫一個基本的程序,每5分鐘捕獲一次這個串行數據,並將其放入數據庫中。我希望能夠使用C#,因爲我之前使用過C#和數據庫,並且發現它非常簡單。串行數據記錄
有沒有人可以爲我提供任何建議,我可能會這樣做,我真的不知道從哪裏開始,我知道理論上聽起來很容易,但是當我開始時,我確實發現它很難。
我有一臺設備連接到我的電腦,每隔5分鐘向計算機發送一次串行數據。我想編寫一個基本的程序,每5分鐘捕獲一次這個串行數據,並將其放入數據庫中。我希望能夠使用C#,因爲我之前使用過C#和數據庫,並且發現它非常簡單。串行數據記錄
有沒有人可以爲我提供任何建議,我可能會這樣做,我真的不知道從哪裏開始,我知道理論上聽起來很容易,但是當我開始時,我確實發現它很難。
在串口上捕獲數據的問題是串口不是線程安全的,所以如果有多個偵聽器,數據將被破壞。
如果您確定您是唯一一個在此端口上偵聽數據的人,.NET有一個內置的包裝System.IO.Ports.SerialPort,您可以使用它來連接到COM1,COM2等等。您需要知道本設備發送數據的速率(波特率),錯誤檢查(奇偶校驗)協議以及它發送的數據格式(您將得到它作爲一個字節數組,你必須逐字節地將數據轉換成你可以使用的數據)。然後,您的程序應該能夠打開端口,並使用將讀取和消化數據的處理程序來偵聽DataReceived事件。再次,非常重要的是,你永遠不會有兩個線程試圖一次讀取;最簡單的方法是設置一個volatile布爾值,指示處理程序正在讀取數據;如果在前一個處理程序仍在運行時產生了另一個處理程序,則新處理程序應該執行的第一件事是讀取該值,並且在設置後立即退出新處理程序。
使用一個線程閱讀不是火箭科學。相當自動與DataReceived事件。 – 2011-02-25 01:27:31