如何连接多个gsm调制解调器并获得所有调制解调器的响应

时间:2014-01-01 04:45:47

标签: c# vb.net serial-port

嗨我有以下代码连接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

2 个答案:

答案 0 :(得分:0)

我相信你可以连接多个调制解调器,因为你可以使你的应用程序多线程。在这种情况下,每个线程将代表一个调制解调器对象,但也将共享相同的代码。

答案 1 :(得分:0)

您可以复制并粘贴代码10次(每次更改端口号/名称),但更好的方法是使用for循环创建10个端口。然后,您需要事件处理程序来知道数据来自哪个端口(因为所有端口都将调用您的单个处理程序) - 您可以使用sender或者可能从事件args获取端口号

请注意,没有必要故意使代码“多线程”,因为串行端口将为您执行此操作 - 事件处理程序将在数据到达时在不同的线程上回调。只要您的事件处理程序不执行任何非线程安全的操作(例如在同一位置存储来自不同端口的数据),您就不需要执行任何特定的操作来使其成为多线程。