2009-11-20 70 views
0

我有一個程序,它使用串口通訊與某些硬件通訊。沒問題。 然後,我添加了兩個GSM調制解調器的圖片。在VB中,我使用一種協議(8數據,無,1)將調制解調器的COM端口打開到調制解調器,並且當調制解調器之間的通信處於打開狀態並且正在運行時,我關閉了端口並重新打開了一個新協議(7個數據,偶校驗,2停止)到我的硬件。幾年前硬件已經標準化到這個速度,所以我不能改變這一點,大多數調制解調器不支持7,e,2協議。串行通訊

我想擴大調制解調器的支持,當端口關閉時,它們中的許多人會斷開聯繫。我沒有使用硬件握手。

所以這裏是我的問題。 如何在不關閉串口的情況下最好地改變協議?

  • 有沒有人有另一個想法如何做到這一點,而無需更改任何硬件設置?
  • 製作虛擬串口? (怎麼樣?)
  • 想法?
+0

的問題是,我也不清楚。你想以某種方式將不同的硬件連接到相同的端口? – Henrik

+0

不!這是相同的硬件。硬件連接是PC - >調制解調器 - >調制解調器 - > PLC。大多數現代調制解調器不支持7個數據,甚至奇偶校驗和2個停止位。這就是我必須使用其他協議連接到調制解調器,然後我才能使用PLC來協調。 – TAT

回答

1

要真正設置串行連接的所有選項,應使用Win32 API communication functions。據我所知,你不需要關閉並重新打開一個端口來激活這些設置。在設置它們之後,它會正常工作(如在this example中)。

你只需要小心,如果你只想改變一個或兩個設置,你必須預先填充你的結構和相應的GetX函數,進行修改並調用SetX函數。

也許與之前的句子相反,但不要依賴您的默認設置第一次 SetX調用。我看到很多程序只是改變了常用的設置(例如波特率,停止位等),但並不是罕見的(如XoffChar等)。如果你這樣做了,另一個程序會改變這些設置,你開始想知道爲什麼你的程序突然不能和你的串口設備進行通信,因爲你使用了另一個程序設置到串口的設置。

,我忘了之前,如果你想在C#中使用Win32 API函數來看看PInvoke.net

+0

感謝您的支持。它可能會有幫助!我會盡快查看它。還有其他一些事情要首先在其他項目中脫穎而出。 但謝謝你的幫助! :-) – TAT