USBモデムが接続されており、ポート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 ERROR Z ATZ AT
(改行で分割)
どれだけ何送信を通じてWriteLineに(これは実際にはエコー)
モデムは私のコマンドをエコーすることができますが、モデムは「OK」を送信しませんが、いつかは「エラー」します。
This is the modemPort variable at runtime just before ReadLine()
A local test done by PassMark shows the modem is functional
たぶんTHEモデムではない読んTHE STREAM?̶
行われるために必要なすべての設定はありますか?
私はオンラインで掘り下げましたが、誰も似たような問題がないようです。
ありがとうございます。
実際にはうまく動作し、本当の問題はありません。 OK応答を受け取るまで、ReadLine()を呼び出し続けることを忘れているだけです。エコーを無効にするには "ATE0"を送信します。 –
ありがとう:)さらにテストした後、実際にはモデムのエコーです。今、私はなぜそれが "OK"に応答しないのかを理解する必要があります。 – Wong
私はそれを解決すると思う、あなたの助けは私のための正しい方向のための巨大なステップですありがとう; )今答えを書く。 – Wong