J'ai un programme qui lit les données d'un scanner via le port série. Ce programme fonctionne correctement sur Windows XP. Nous avons un serveur terminal configuré sous Windows Server 2008. Je lance HyperTerminal sur notre terminal de test, il connecte et lit les données du scanner via COM1. Je cours mon application sur ce même terminal de test et n'obtiens rien quand je scanne.Les événements SerialPort ne se déclenchent pas sous Windows Server 2008 à l'aide de l'application .NET 2.0
Mon application se connecte à COM1 sans erreurs et se déconnecte sans erreur. MAIS, l'événement DataRecieved ne se déclenche JAMAIS. L'événement ErrorReceived n'est pas non plus. J'ai joué avec le Handshaking, avec le RecievedBytesThreshhold et à peu près tous les paramètres d'installation que j'ai trouvés. Réglez-le exactement comme les paramètres sur Hyperterminal. J'ai même essayé de démarrer une minuterie sur un thread différent pour appeler ReadByte chaque seconde pour essayer de KICK cette chose en faisant quelque chose. Rien n'a fonctionné.
J'ai essayé de résoudre ce problème pendant une journée entière maintenant. Ajout d'événements à ma classe essayant de voir TOUT ce qui se passe. Tout ce que je sais est, il se connecte au port et il se déconnecte du port correctement, mais rien ne se passe entre les deux. Aucune donnée lorsque je numérise. Aucun événement n'a été déclenché entre la connexion et la déconnexion du port. Je suis fatigué de google. :-)
AIDE !! S'il vous plaît??? PS J'ai également téléchargé des applications de communications série simples d'autres utilisateurs. Rien dans .NET fonctionne. Période. :-(
Port Code SetUp (mvarSerialPort est COM1):
If ComPort Is Nothing Then
ComPort = New SerialPort(mvarSerialPort)
ComPort.BaudRate = 9600
ComPort.Parity = Parity.None
ComPort.StopBits = StopBits.One
ComPort.DataBits = 8
ComPort.ReadTimeout = 2000
ComPort.Encoding = System.Text.Encoding.ASCII
ComPort.Handshake = Handshake.None
ComPort.ReceivedBytesThreshold = 1
End If
If Not ComPort.IsOpen Then ComPort.Open()
ComPort.DtrEnable = True
événement DataReceived (qui n'a jamais tiré sur ce terminal darn):
Private Sub Scan(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles ComPort.DataReceived
Dim sDataStatus As String = ""
Select Case e.EventType
Case SerialData.Chars
sDataStatus = "Data Received Event - Chars "
Case SerialData.Eof
sDataStatus = "Data Received Event - Eof"
End Select
RaiseEvent ClassStatus(sDataStatus)
Dim delInvoke As ScanResults
delInvoke = New ScanResults(AddressOf RaiseScanEvent)
delInvoke.Invoke()
End Sub
RaiseScanEvent (Cela fonctionne très bien sur mon ordinateur et mon ordinateur de coworker en cours d'exécution XP)
Private Sub RaiseScanEvent()
Dim sScanned As String = ComPort.ReadLine.TrimEnd
RaiseEvent ClassStatus("RaiseScanEvent data: " & sScanned)
RaiseEvent ComDataReceived(sScanned)
End Sub
Si le code que vous avez téléchargé ne fonctionne pas, ainsi que le vôtre, que ce n'est pas un problème de configuration de port série.Le problème semble provenir du serveur lui-même - une certaine configuration, politique, autorisations ou autre - empêche les applications de recevoir jamais les données. Je vous suggérerais d'adopter une attitude de support technique à l'égard de ce problème, en diagnostiquant le problème et en cherchant des informations sur ce qui pourrait causer cela du côté du serveur. Essayez de télécharger des applications supplémentaires utilisant le port série. peut-être «moniteur de port série gratuit» aiderait. Laissez le code de côté pour l'instant, à mon humble avis. –