kenchidag Ответов: 1

Проблема с GSM модулем ZTE NMEA


Привет всем, в настоящее время я разрабатываю приложение в vb для отправки sms, однако когда я пытаюсь открыть порт, в котором подключен gsm-модуль, он всегда говорит: "запрошенный ресурс используется", поэтому я не могу открыть порт для использования. Я обнаружил, что это происходит, когда программное обеспечение GSM-модуля работает, я попытался закрыть его, но GSM-модем теряет свой сигнал и становится красным. Также в Диспетчере устройств он показывает два порта для GSM-модема, один для ZTE NMEA, а другой для ZTE Diagnostics Services.
Я не могу использовать порт для ZTE NMEA, так как он, кажется, в настоящее время используется, и попробовал другой порт, но безуспешно отправил сообщение через vb. Однако я могу отправить сообщение непосредственно через GSM-модуль. Есть ли какой-нибудь обходной путь по этому вопросу? заранее спасибо.

вот мой код:

Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click
        If SerialPort2.IsOpen = True Then
            SerialPort2.Close()
            btnConnect.Text = "Connect"
        Else
            Try
                With SerialPort2
                    '.PortName = Trim(Mid(ComboBox1.Text, 1, 5))
                    .BaudRate = 9600
                    .Parity = IO.Ports.Parity.None
                    .DataBits = 8
                    .StopBits = StopBits.One
                    .Handshake = Handshake.None
                    .RtsEnable = True
                    .DtrEnable = True
                    .Open()
                    .WriteLine("AT+CNMI=1,2,0,0,0" & vbCrLf) 'send whatever data that it receives to serial port  
                End With
                MsgBox("Connected")
                btnConnect.Text = "Disconnect"
            Catch ex As Exception
                btnConnect.Text = "Connect"
                MsgBox(ex.Message)
            End Try
        End If
    End Sub

    Private Sub btnSend_Click(sender As Object, e As EventArgs) Handles btnSend.Click
        Try
            With SerialPort2
                .WriteLine("AT" & vbCrLf)
                Threading.Thread.Sleep(1000)
                .WriteLine("AT+CMGF=1" & vbCrLf) 'Instruct the GSM / GPRS modem to operate in SMS text mode
                Threading.Thread.Sleep(1000)
                .WriteLine("AT+CMGS=" & Chr(34) & txtnum.Text & Chr(34) & vbCr) '
                Threading.Thread.Sleep(1000) '
                .WriteLine(txtmssge.Text & Chr(26)) '

            End With

            MsgBox("Message Sent")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub


Что я уже пробовал:

Я пробовал гуглить решение, но они показывают только коды для отправки SMS через vb. Я попробовал использовать оба порта, но безуспешно. Это просто странно, что я не могу закрыть порт и снова открыть его для использования, или же GSM-модуль не может быть использован для этого приложения..

1 Ответов

Рейтинг:
12

Jochen Arndt

Последовательные порты являются эксклюзивными. В то время как последовательный порт открывается приложением, он больше не может быть открыт другим (или даже тем же) приложением.

Решение вашей проблемы заключается в выполнении тех же задач, что и программное обеспечение GSM-модуля для инициализации модема. Тогда вам больше не нужно это программное обеспечение,и вы можете отправлять свои SMS.

Что касается диагностического порта, то вам следует обратиться к руководству по модему. Но весьма маловероятно, что его можно использовать для отправки SMS. Такие порты обычно предоставляют только информацию о состоянии.


kenchidag

Спасибо Йохену Арндту, очень ценю. :)