我有一个USB调制解调器已连接,它在使用putty的COM1端口上工作正常。在Windows 10上使用USB调制解调器的.NET SerialPort类
调制解调器能够响应命令,如
AT
OK
ATZ
OK
我试着做下使用SerialPort类 .NET 2.0框架,但没有“OK”时收到过同样的事情。
代码还可测试
初始化端口更新
Dim ModemPort As SerialPort
ModemPort.DtrEnable = True
ModemPort.Handshake = Handshake.XOnXOff
ModemPort.NewLine = "\r\n" '(Added but the problem still exist)
'ModemPort.ReadTimeout = 3000 (Removed for testing)
SendSerialData(ModemPort, "ATZ")
方法SendSerialData
Function SendSerialData(ByRef modemPort As SerialPort, ByVal data As String)
Dim returnStr As String = ""
If modemPort.IsOpen = False Then
modemPort.Open()
End If
'Updated
modemPort.WriteLine(data) 'ATZ
System.Threading.Thread.Sleep(1000)
Try
Do
Dim Incoming As String = modemPort.ReadExisting()
If Incoming = "OK" Then
Exit Do
End If
If Incoming = "" Then
modemPort.WriteLine(data)
System.Threading.Thread.Sleep(1000) 'Modem will send "Error" sometime
Else
returnStr &= Incoming
End If
Loop
Catch ex As Exception
End Try
Return returnStr
End Function
然而,所有我复活了回音
昏暗传入作为字符串= modemPort.ReadExisting()
是
ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ AT ERROR Ž ATZ
(由换行拆分)
这正是我送通过的WriteLine(这实际上是一个是回声)
调制解调器是能够回应我的命令,但调制解调器不会发送“确定”,但有时会发送“错误”。
This is the modemPort variable at runtime just before ReadLine()
A local test done by PassMark shows the modem is functional
也许调制解调器不读流?̶
是否有需要做任何配置?
我做了一些在线挖掘,但似乎没有人有类似的问题。
在此先感谢。
所以它实际上工作得很好,你没有真正的问题。你只是忘了继续调用ReadLine(),直到获得OK响应。您可以发送“ATE0”来禁用回声。 –
谢谢:)进一步测试后,确实是调制解调器的回声。现在我只需要弄清楚为什么它没有回应“OK”。 – Wong
我想我解决了它,你的帮助对我来说是一个正确的方向迈出的巨大的一步谢谢; )现在写答案。 – Wong