You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AT+CUSD指令调用*99#查询本机号码出现尾数缺失问题

问题排查及修复方案


核心原因有4点:

  1. 串口读取逻辑错误:Thread.Sleep(7000) + ReadExisting()的组合无法保证拿到完整的CUSD响应报文,1200波特率传输速率低,7秒时间不足以让全量报文完全写入串口缓冲区时,就会出现内容截断。
  2. 正则匹配规则不合理:当前正则(?<=\:).+会匹配第一个冒号后的所有内容,不仅会误抓响应报文里的后续参数(比如你结果里的, 15),如果中间有非预期的分隔符也会提前截断匹配结果。
  3. 串口参数配置不全:仅配置了波特率和端口号,未明确设置校验位、数据位、停止位,参数不匹配会导致传输过程丢字符。
  4. 未校验响应完整性:没有判断CUSD响应是否完全接收就直接解析,自然会出现内容缺失。

修复代码示例

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ' 完整配置串口参数,8N1为绝大多数GSM模块的默认参数,可根据你的模块调整
    Me.SerialPort1.PortName = "COM5"
    Me.SerialPort1.BaudRate = 1200
    Me.SerialPort1.Parity = IO.Ports.Parity.None
    Me.SerialPort1.DataBits = 8
    Me.SerialPort1.StopBits = IO.Ports.StopBits.One
    Me.SerialPort1.ReadTimeout = 10000 ' 设置10秒读超时
    
    If Not SerialPort1.IsOpen Then
        SerialPort1.Open()
    End If

    ' 清空缓冲区避免旧数据干扰
    SerialPort1.DiscardInBuffer()
    SerialPort1.DiscardOutBuffer()

    ' 发送AT指令
    SerialPort1.WriteLine("AT+CUSD=1,""*99#"",15")

    ' 循环读取直到拿到完整响应,或触发超时
    Dim response As String = ""
    Dim startTime As Date = Date.Now
    Do
        response &= SerialPort1.ReadExisting()
        ' 检测到CUSD响应结束标识+OK/ERROR就退出循环
        If response.Contains("+CUSD:") AndAlso (response.Contains(vbCr & vbLf & "OK") OrElse response.Contains(vbCr & vbLf & "ERROR")) Then
            Exit Do
        End If
        If Date.Now.Subtract(startTime).TotalMilliseconds > 10000 Then
            RichTextBox1.Text = "查询超时"
            Return
        End If
        Threading.Thread.Sleep(200) ' 小间隔等待,避免CPU空转
    Loop

    ' 修改正则,只匹配MSISDN标识后的纯数字串,避免误抓其他参数
    Dim msisdnMatch = System.Text.RegularExpressions.Regex.Match(response, "(?<=MSISDN:\s*)\d+")
    If msisdnMatch.Success Then
        RichTextBox1.Text = msisdnMatch.Value
    Else
        RichTextBox1.Text = "未匹配到手机号,原始响应:" & response
    End If
End Sub

额外验证点

如果修改后还是有问题,可直接打印完整的原始响应报文,确认是传输阶段丢包,还是解析阶段匹配错误,方便定位具体问题。

内容的提问来源于stack exchange,提问作者Labyrinthe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:45:04