我有一個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