2011-02-24 60 views
0

我有一臺設備連接到我的電腦,每隔5分鐘向計算機發送一次串行數據。我想編寫一個基本的程序,每5分鐘捕獲一次這個串行數據,並將其放入數據庫中。我希望能夠使用C#,因爲我之前使用過C#和數據庫,並且發現它非常簡單。串行數據記錄

有沒有人可以爲我提供任何建議,我可能會這樣做,我真的不知道從哪裏開始,我知道理論上聽起來很容易,但是當我開始時,我確實發現它很難。

回答

0

使用C#,您可以使用System.IO.Ports名稱空間通過串行端口進行通信 - 有一篇不錯的文章here

或者,您可以使用Python和pySerial模塊。我已經編寫了一個應用程序來使用pySerial通過串行端口進行通信 - 它使用起來非常簡單,並且可以在許多不同的操作系統上運行,包括OSX和Windows(我假設您使用的是Windows)。 Python還內置了對SQLite的支持。

-1

在串口上捕獲數據的問題是串口不是線程安全的,所以如果有多個偵聽器,數據將被破壞。

如果您確定您是唯一一個在此端口上偵聽數據的人,.NET有一個內置的包裝System.IO.Ports.SerialPort,您可以使用它來連接到COM1,COM2等等。您需要知道本設備發送數據的速率(波特率),錯誤檢查(奇偶校驗)協議以及它發送的數據格式(您將得到它作爲一個字節數組,你必須逐字節地將數據轉換成你可以使用的數據)。然後,您的程序應該能夠打開端口,並使用將讀取和消化數據的處理程序來偵聽DataReceived事件。再次,非常重要的是,你永遠不會有兩個線程試圖一次讀取;最簡單的方法是設置一個volatile布爾值,指示處理程序正在讀取數據;如果在前一個處理程序仍在運行時產生了另一個處理程序,則新處理程序應該執行的第一件事是讀取該值,並且在設置後立即退出新處理程序。

+1

使用一個線程閱讀不是火箭科學。相當自動與DataReceived事件。 – 2011-02-25 01:27:31