[英]how to connect multiple gsm modem and get response of all modem
您好,我有以下代碼使用com端口連接gsm調制解調器,該代碼在單個調制解調器上可以正常工作,我有10個以上的modems。我想連接所有調制解調器,並獲取每個調制解調器的響應SerialDataReceiveEvent問題是我需要粘貼此代碼10次或同時連接所有調制解調器並單獨獲得每個調制解調器響應的任何其他簡便方法。
Public WithEvents DataPort As New IO.Ports.SerialPort
Public Function ConnectPort(ByVal PrtName As String)
Try
DataPort.PortName = PrtName
DataPort.BaudRate = 115200
DataPort.Parity = IO.Ports.Parity.None
DataPort.StopBits = IO.Ports.StopBits.One
DataPort.DataBits = 8
DataPort.Open()
AddHandler Me.DataPort.DataReceived, New SerialDataReceivedEventHandler(AddressOf comPort_DataReceived)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Public Sub comPort_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
Dim RecievedMessage As String = DataPort.ReadExisting()
ModemResponse(RecievedMessage)
End Sub
我相信您可以連接多個調制解調器,因此可以使您的應用程序成為多線程。 在這種情況下,每個線程將代表一個調制解調器對象,但也將共享相同的代碼。
您可以復制和粘貼代碼10次(每次更改端口號/名稱),但是更好的方法是使用for循環創建10個端口。 然后,您需要事件處理程序知道數據從哪個端口到達(因為所有端口都將調用您的單個處理程序)-您可以使用sender
或可能能夠從事件args獲取端口號。
請注意,無需故意將代碼設置為“多線程”,因為串行端口將為您執行此操作-事件處理程序將在數據到達時在不同線程上被回調。 只要事件處理程序不執行任何非線程安全的操作(例如,將來自不同端口的數據存儲在同一位置),您就不需要執行任何特定操作來使其成為多線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.