嗨我有以下代码连接gsm调制解调器使用COM端口此代码在单个调制解调器上工作正常我有10个以上的调制解调器。我想连接所有调制解调器并获得每个调制解调器的响应SerialDataReceiveEvent Serprately问题是我需要粘贴这个代码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
答案 0 :(得分:0)
我相信你可以连接多个调制解调器,因为你可以使你的应用程序多线程。在这种情况下,每个线程将代表一个调制解调器对象,但也将共享相同的代码。
答案 1 :(得分:0)
您可以复制并粘贴代码10次(每次更改端口号/名称),但更好的方法是使用for循环创建10个端口。然后,您需要事件处理程序来知道数据来自哪个端口(因为所有端口都将调用您的单个处理程序) - 您可以使用sender
或者可能从事件args获取端口号
请注意,没有必要故意使代码“多线程”,因为串行端口将为您执行此操作 - 事件处理程序将在数据到达时在不同的线程上回调。只要您的事件处理程序不执行任何非线程安全的操作(例如在同一位置存储来自不同端口的数据),您就不需要执行任何特定的操作来使其成为多线程。