Vb.net 无法使用带有AT命令的gsm调制解调器发送英文文本

Vb.net 无法使用带有AT命令的gsm调制解调器发送英文文本,vb.net,serial-port,sms,gsm,at-command,Vb.net,Serial Port,Sms,Gsm,At Command,我试图发送一条短信“警报”,但它变成了“5w”,发送了其他类型的信息,它们最终都是一些奇怪的字符,比如=ìteèNñqètΔ6MŠΦReÅZΔfèfåP3TÅbVè/&pèo3∧+XKw6 ∑PψΓ8FwΘBΩ。我不确定我做错了什么,有人能帮我解决这个问题吗 Public Sub New(ByRef COMMPORT As String) 'initialize all values SMSPort = New SerialPort With SM

我试图发送一条短信“警报”,但它变成了“5w”,发送了其他类型的信息,它们最终都是一些奇怪的字符,比如=ìteèNñqètΔ6MŠΦReÅZΔfèfåP3TÅbVè/&pèo3∧+XKw6 ∑PψΓ8FwΘBΩ。我不确定我做错了什么,有人能帮我解决这个问题吗

Public Sub New(ByRef COMMPORT As String)
        'initialize all values
        SMSPort = New SerialPort
        With SMSPort
            .PortName = COMMPORT
            .BaudRate = 115200
            .Parity = Parity.None
            .DataBits = 8
            .StopBits = StopBits.One
            .Handshake = Handshake.RequestToSend
            .DtrEnable = True
            .RtsEnable = True
            .NewLine = vbCrLf
        End With
    End Sub
    Public Function SendSMS() As Boolean
        If SMSPort.IsOpen = True Then
            'sending AT commands
            SMSPort.WriteLine("AT")
            SMSPort.WriteLine("AT+CMGF=1" & vbCrLf) 'set command message format to text mode(1)
            SMSPort.WriteLine("AT+CMGS= " & Chr(34) + phonenumber + Chr(34) & vbCrLf)  
            _ContSMS = False
            SMSPort.WriteLine("alert" & vbCrLf & Chr(26)) 'SMS sending

            SMSPort.Close()
        End If
    End Function

    Public Sub Open()
        If Not (SMSPort.IsOpen = True) Then
            SMSPort.Open()
        End If
    End Sub

    Public Sub Close()
        If SMSPort.IsOpen = True Then
            SMSPort.Close()
        End If
    End Sub

为什么COMPORT是通过ByRef传递的?您是否使用Tera Term或PuTTy等终端程序尝试过这些串行端口设置?串行连接上的垃圾通常是由于错误的设置造成的。@AndrewMorton是的,我试过putty,结果也是一样的characters@Mary这是用于声明组件/选择组件的函数我正在谈论的
Public Sub-New(ByRef COMMPORT As String)
为什么该字符串被ByRef传递?在那艘潜艇上没有改变。