J'ai un modem USB connecté et il fonctionne correctement sur le port COM1 avec du mastic.Classe .NET SerialPort avec modem USB sous Windows 10
Le modem est capable de répondre à des commandes telles que
AT
OK
ATZ
OK
J'ai essayé de faire la même chose dans le cadre .NET 2.0 en utilisant la classe SerialPort mais pas « OK » jamais reçu.
code est mis à jour pour d'autres essais
Initialiser 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")
Méthode 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
Cependant, tout ce que je revis est l'écho
Dim entrant As String = modemPort.ReadExisting()
est
ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ ATZ AT ERREUR Z ATZ
(Split par les nouvelles lignes)
whıch était exactement ce que Ï ENVOYEE PAR LA VOIE writeLine (Ceci est en fait un echo)
Le modem est capable d'echo mes commandes mais le modem n'enverra pas un "OK" mais parfois "ERREUR".
This is the modemPort variable at runtime just before ReadLine()
A local test done by PassMark shows the modem is functional
MayBe DU MODEM NON RESPECT DU CIRCUIT? ̶
Y at-il la configuration nécessaire pour faire?
J'ai fait quelques recherches en ligne, mais il semble que personne n'ait les mêmes problèmes.
Merci d'avance.
Donc, cela fonctionne vraiment bien et vous n'avez pas de réel problème. Vous oubliez juste d'appeler ReadLine() jusqu'à ce que vous obteniez la réponse OK. Vous pouvez envoyer "ATE0" pour désactiver l'écho. –
Merci :) Après d'autres tests, il est en effet l'écho du modem. Maintenant, j'ai juste besoin de comprendre pourquoi il ne répond pas "OK". – Wong
Je pense que je le résous, votre aide est un grand pas dans la bonne direction pour moi Merci; Ecrire la réponse maintenant. – Wong