2011-03-26 55 views
2

我正在幫他的電氣工程項目朋友。他正在構建一個將使用串行端口與某些軟件進行通信的設備。在Windows平臺(Win7)上,如何直接讀取和寫入串行端口上的特定引腳?有沒有Windows公開這種類型的API?Windows中的串口編程

回答

4

是的,基本上你可以用一個特殊的名字打開一個串口設備,比如COM1,並且可以像讀取文件一樣讀寫它。所使用的引腳將(自然地)成爲串行發送和接收引腳。

如果你想控制特定的引腳,但不一定以串行的方式,你可能會更好的使用並行端口。並行端口電壓通常對TTL電平邏輯更友好,並且通常可以直接驅動。

更新:如果您只是需要根據您的評論切換一個引腳,則可能可以使用DTR線路進行此操作。有關如何執行此操作,請參閱EscapeCommFunction函數文檔。

+0

電壓是沒有問題的,因爲麪包板電路就能從3處理什麼25V。理想情況下,我想要做的是使用引腳向電路發送持續的+ 3V信號。我是否仍然可以使用串行端口來執行此操作,還是需要切換到並行端口?另外,你可以指向我的任何代碼參考? MSDN是否具有CreateFile(... Com1 ...)以外的其他功能? – MarkP 2011-03-26 03:54:43

+0

@ user318811:Greg的權利:對於這樣的任何事情,您幾乎可以肯定要使用並行端口。串行端口上的引腳幾乎全部由UART驅動,並且主要在一個時鐘下執行,所以通常不可能在給定狀態下保持一段時間長於給定時間段(基本上,傳輸時間一個字節,無論你選擇什麼速度)。你可以減慢串行端口(例如,到300波特)以使其保持更長的狀態,但是這也會限制最大轉換速率(例如〜300 /秒)。 – 2011-03-26 04:16:08

+0

您可以將DTR線用作單個位控制,當您打開端口時(在正確模式下)它會變高,當您關閉它時變爲低電平 – 2011-03-26 06:15:58

0

您可以使用WaitCommEvent函數來監視特定的引腳。假設電壓變化觸發CTS信號,也可以是這樣的

hCommn = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); 
...... 
WaitCommEvent(hCommn, EV_CTS, NULL); 
...... 

WaitCommEvent from MSDN