2013-08-23 4 views
0

J'essaye de créer un terminal un peu comme Hyperterminal pour parler à un modem GSM (ouvrir AT Sierra Wireless sl8080). Le modem peut être réinitialisé de manière aléatoire ou par une commande envoyée au port de communication. Lorsque le modem réinitialise toutes les communications sont perdues. J'utiliseNuméro de port série C# Numéro

private void serialPort1_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    Console.WriteLine(serialPort1.ReadExisting()); 
} 

Pour lire à partir de l'appareil. mais après une réinitialisation, je peux tout faire et ne rien récupérer.

Si je tente de lire après une réinitialisation que je reçois:

A first chance exception of type 'System.InvalidOperationException' occurred in System.dll 
An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll 
Additional information: The port is closed. 

Si je remis à zéro, le port proche i obtenir:

A first chance exception of type 'System.IO.IOException' occurred in System.dll 
An unhandled exception of type 'System.IO.IOException' occurred in System.dll 
Additional information: The requested resource is in use. 

Je ne peux pas récupérer de cet état avec à la fermeture de l'application totalement. J'ai essayé de résoudre ce problème pendant plus d'un an. J'ai trouvé beaucoup d'autres solutions. Principalement en utilisant Python et Java/RXTX qui traitent les réinitialisations de l'appareil sans faille. Je suis vraiment perplexe ici c'est plus un défi personnel de comprendre cela maintenant.

J'ai essayé d'utiliser WMI pour détecter les débranchements de périphériques USB et fermer le rapport de communication mais toujours le même résultat.

Répondre

0

Avez-vous essayé de jeter l'objet SerialPort au lieu de le fermer?

http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.errorreceived.aspx

Si un objet SerialPort est bloqué pendant une opération de lecture, ne pas le fil abort. Au lieu de cela, fermez le flux de base ou disposez de l'objet SerialPort.

+0

J'ai aussi, avec le même résultat. Il faut toujours fermer l'application et parfois débrancher l'USB de l'appareil pour ne pas dire que l'appareil ne fonctionne pas correctement. – stihl

+0

L'objet est-il déjà éliminé? J'ai aussi trouvé cet article que vous avez peut-être déjà vu. Il semble y avoir quelques erreurs avec .net. (http://social.msdn.microsoft.com/Forums/vstudio/en-US/89944715-8549-4fc9-86ec-7dd92b707786/serialport-unplug-and-plug) – bjaminn