2012-02-08 157 views
3

我剛剛完成了一個用C語言編寫的小型項目,我從串口讀取數據流並解析傳入的數據。 該軟件對POSIX系統編寫的(使用的termios),並且遵照標準步驟,以與串行工作的I/O將POSIX C代碼移植到windows中

  1. 使用open()
  2. 配置通信參數(的termios)
  3. 打開串行設備在文件句柄上設置阻止模式(fcntl)
  4. 在串行接口上​​執行read()。
  5. 完成後在串行接口上​​執行close()。

除了插座部分,代碼是直的ANSI C.

我的問題是,如何參與會是使在Windows平臺上的代碼工作。 這個端口不是我寫的,我只想告訴其他可能有興趣移植它的人(即瑣碎,不那麼微不足道,把你的眼睛從瘋狂誘導出來)。

此外,如果有人使用Windows「Windows Services for UNIX」,他們是否能夠使用該代碼而不修改它?

因此,如果有人有這方面的經驗,請你分享。

回答

3

它應該很容易做到。名稱非常不同,但調用和概念的順序非常相似。

你要找的是DCB結構應與SetComState()功能可用於設置波特率,停止位等,然後使用SetCommTimeouts()並在COMMTIMEOUTS結構設置超時值,使後續的讀取調用阻塞。

這是一個漂亮的PDF文件short introductionBackup。)

+1

謝謝,DCB結構幾乎直接映射到termios結構。由於在* nix系統中一切都是以文件形式表示的,這是很正常的,所以我擔心這會在windows中出現問題。但是你也可以在窗口中聲明一個文件句柄,並以幾乎相同的方式使用它,所以我很高興。謝謝 – bing 2012-02-08 13:49:51