2010-10-13 4 views
0

J'utilise la classe C# SerialPort pour écrire sur mon port COM. Ce qui est bizarre, c'est que je peux obtenir des données du port très bien - il envoie les données que j'attends. Cependant, je ne peux pas envoyer de données au port. Toutes les données que j'envoie me sont immédiatement renvoyées en tant que nouvelles données provenant du port. J'attends une commande "Terminé" mais elle me renvoie les données que je viens d'envoyer. Cela fonctionne très bien à partir de Windows HyperTerminal mais ce code ne fonctionnera tout simplement pas. J'utilise 9600, 8-N-1 sans contrôle de flux.Erreurs C# avec les commandes SerialPort WriteLine

Je suis la plupart du temps en utilisant le code de cet article:

J'instancier mon port avec cette

comPort.BaudRate = int.Parse(_baudRate); //BaudRate 
comPort.DataBits = int.Parse(_dataBits); //DataBits 
comPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), _stopBits); //StopBits 
comPort.Parity = (Parity)Enum.Parse(typeof(Parity), _parity); //Parity 
comPort.PortName = _portName; //PortName 
comPort.Handshake = Handshake.None; 
comPort.ReadTimeout = 2000; 
comPort.RtsEnable = true; 
//now open the port 
comPort.Open(); 

Et l'écriture est juste en utilisant comport.write (string) et je l'ai également utilisé comport .writeline (string) avec le même résultat. Quelle est la principale différence entre ce code et l'HyperTerminal plain vanilla qui les ferait agir différemment?

+0

Désolé, destiné à inclure un lien vers l'article dont la plupart proviennent: http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/ –

Répondre

2

J'ai trébuché sur cette réponse qui n'est pas dans beaucoup d'exemples de code. La ligne de fond est que vous devez inclure un retour chariot avec chaque écriture de port. J'utilisais:

comport.write(string) 

Mais il aurait dû être

comport.write(string+"\r\n") 

Vous ne croiriez pas combien d'exemples de code ont pas que dans le code. Je suis tombé sur un extrait aléatoire qui l'incluait et c'était la différence.

Questions connexes