我连接了一个USB调制解调器,它在端口COM1与putty工作正常 .
调制解调器能够响应命令
AT
OK
ATZ
OK
我尝试使用SerialPort类在.NET 2.0框架下执行相同的操作但是没有收到“OK” .
Code is updated for further testing
Initialize port
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")
Method 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
然而,我复活的只是回声
Dim Incoming As String = modemPort.ReadExisting()
是
ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ
(按换行分组)
这正是我送通过的WriteLine(这实际上是一个回波)
调制解调器能够回显我的命令,但调制解调器不会发送“OK”但有时会发出“ERROR” .
This is the modemPort variable at runtime just before ReadLine()
A local test done by PassMark shows the modem is functional
也许调制解调器不读流?̶
是否需要进行任何配置?
我做了一些在线挖掘,但似乎没有人有类似的问题 .
提前致谢 .
1 回答
事实证明我只需要更加努力;)
I come across this page and find the solution
我做错了什么:
初始化的端口未使用正确的编码 .
NewLine字符\ r \ n未正确转义 .
正确的方法
调制解调器能够响应
如果您不想要“ATZ”回音,请使用带有“AT”命令的“ATE0” . “ATZ”将重置ATE0 .