題 打開串口怎麼辦?


打開標準PC串口的做法是什麼,電氣方面(即哪些引腳上的電壓)?

例如,古老的VB6程序控制著我負責維護切換的設備 .PortOpen 控制一些TTL。連接只使用了2個引腳(壞焊料分開),所以我焊接到哪個引腳?

唯一的標籤/文檔是指引腳7和9,說0V和5V括號,但確實如此 .PortOpen 真的只是在RI和RTS之間放置5V?

作為一個後期腳本,這不是關於設置的最奇怪的事情。我上面提到的TTL也通過BNC連接到儀器到DB9(!),只使用了1個引腳。我猜有一個共同接地的假設,因為BNC屏蔽沒有連接到GND引腳?連接到儀器的“腳踏板”引腳,這是一種遠程觸發設備的方法。

更新

根據 這一頁,DTR和RTS引腳 能夠 打開端口時變高。如果它們如此配置,則在端口關閉時它們將隨後變低。

如果未啟用DTR和RTS,則打開端口應將兩者都設置為低(並保持低電平)。


4
2018-06-23 06:41


起源


TTL?通過鏡頭?晶體管 - 晶體管邏輯?
後者。這是一個通過打開/關閉串口切換的觸發器打開和關閉的通過。 - reve_etrange
@reve_etrange:我問的是因為串口不是TTL級別,所以你不能直接連接它們。我以為你的意思是別的。
@Federico Russo,在我的嵌入式應用程序和調試中,我經常使用沒有驅動程序的TTL級UARTS。不是每個人都有這些 ftdichip.com/Products/Cables/USBTTLSerial.htm? - kenny
@kenny:OP說他在PC上,有一個串口從-12V到+ 12V。


答案:


我不同意@Stevenvh的回答。特別是對於窗戶。在.NET或MSCOMM OCX中,“端口打開”和“端口關閉”API調用將強制DTR和RTS線路改變或不改變其狀態。

在端口打開時,如果在打開端口之前將DTR設置為“true”,則DTR將設置為電氣狀態,對應於布爾屬性DTREnable。默認情況下,它將保持“假”,如果用戶,從不設置DTREnable,那麼在“開放端口”DTR線將保持“假”,如打開端口之前。

行名“RTS”和屬性“RTSEnable”的邏輯和默認值相同。您在打開端口之前選擇“RTSEnable”,具體取決於電纜另一端的通信方和所涉及的電線數量(硬件握手與軟件握手與無握手)。

  • 數據載體檢測 - 輸入,無效
  • 接收數據 - 輸入,無效
  • 傳輸數據 - 輸出,將保持“SPACE”而不是“MARK”
  • 數據終端就緒 - 如果在“端口打開”之前設置了屬性,則將更改為“TRUE”
  • 信號接地 - 沒有變化
  • 數據集就緒 - 輸入,無效
  • 如果在“Port Open”之前設置了RTSEnable屬性,請求發送 - 將更改為“TRUE”
  • 清除發送 - 輸入,沒有效果
  • 響鈴指示燈 - 輸入,無效

反過來,當端口關閉時。引腳DTR和RTS將變為“FALSE”狀態,或者如果它們未在打開時通過屬性設置,則保持在“FALSE”狀態。


1
2018-06-29 15:37



其他引腳怎麼樣(除了DTR和RTS)? - reve_etrange
PC的輸出數據引腳將保持“SPACE”,而不是“MARK”狀態。其他引腳是輸入引腳,因此它們不會改變(振鈴指示,載波檢測,清除發送,數據輸入)。
太好了,謝謝!通過“停留”SPACE / MARK你的意思是當端口關閉時它將恢復到一些設備相關的未定義狀態? - reve_etrange
是。但是SPACE / MARK可以被視為“已定義”,我的意思是可預測的電壓。 TTL“SPACE”中的Sya為“FALSE”,為零伏,或MARK為“TRUE”為+5伏。但在RS-232中,SPACE為+ 12V,MARK為-12V。
“傳輸數據 - 輸出,將保持“SPACE”而不是“MARK”“ - 空閒的RS-232數據線將是 印記 在負電壓。 - sawdust


打開港口不會做電氣方面的事情。它只是告訴操作系統從端口上的那一刻起分配給應用程序。當您的應用程序打開時,操作系統將拒絕其他應用程序訪問該端口,並允許您的應用程序訪問該端口。


8
2018-06-23 06:54



那講得通。串行通信和Windows編程方面都超出了我的專業知識。 - reve_etrange
在一些操作系統上它仍然可以共享,但程序員的意圖,但可能有缺陷的決定。 - kenny
我沒有標記答案,因為很明顯當端口打開時可能會發生其他事情。對不起過山車。 - reve_etrange
這絕對是非Windows操作系統上的行為嗎? - reve_etrange


打開一個串口將強制所有引腳進入一個已定義的狀態(我不記得哪些握手線默認為標記或間距,但它是標準的)。在打開串行端口之前,可能未定義行的狀態。除非微軟改變了東西,否則關閉一個串口會使這些行處於關閉之前的狀態,所以如果最後一個程序使用它們處於一種奇怪的狀態,它們將保持該狀態,直到它們下次打開為止。此外,我不知道這是否仍然是Windows下的一個問題,但在DOS下有一些PC會在上電時將其串口設置為傻瓜狀態。至少有一個品牌的PC將其串口設置為傳輸連續長時間斷點,直到另有指示為止;這是令人難忘的,因為它會在某個嵌入式控制器上造成嚴重破壞,如果它在供應商的軟件啟動之前被插入。


6
2018-06-23 15:26



除了根據配置將RTS和DTR設置為低/高之外,它還能做什麼嗎?即所有引腳都設置為低開,連續發送等等? - reve_etrange