2009-12-04 45 views
0

我正在使用一個GPS模塊,通過串行RS232到USB接口將數據傳輸到我的Mac。我寫了一個objC程序,它接收原始數據並將其轉換爲有意義的信息。從Xcode,我如何從一個不斷更新的文本文件中讀取數據?

使用名爲goSerial的程序,我可以將所有傳入數據記錄到文本文件中。我已經能夠讓我的程序讀取文本文件並逐行處理數據。

我希望這個過程能夠實時發生,即一旦收到數據,它就會被記錄到文本文件中,然後我的程序就會讀取它。這種情況的第一部分自動發生,即文本文件不斷附加(當未打開時)。是否有可能監視一個文本文件的附加數據,只讀新行?另外,這樣做是否會影響新傳入數據的保存能力?

謝謝!

(另外,如果有人知道我怎麼可以直接發送串行數據的Xcode,請讓我知道!)

回答

2

我不確定串口對USB的影響如何,但傳統上,unix使用Device-File Mechanism訪問串行設備,該設備將來自設備的輸入視爲要讀取的文件。您將使用NSFileHandle從Cocoa/Foundation讀取文件。您可能需要簽出IORegistryExplorer應用,以查看您的設備如何顯示。

0

您應該能夠創建一個Unix域套接字,然後你可以有你的goSerial應用程序中打開(因爲它看起來像是FS上的普通文件)

然後從另一端讀取,在您的應用程序中逐行顯示。這可能是最簡單的方法,或者可以看看GNU的coreutils中的尾部源代碼,特別是它的-f函數(儘管想更多,你可能會想看看FreeBSD實現是如何工作的,因爲我相信GNU版本使用一些特定的linux回調函數)

2

您可以使用kqueue(可能帶有諸如UKKQueue的包裝)來觀察文件的更改。