2009-12-30 10 views
2

Je crée un formulaire Windows pour envoyer/recevoir des données vers/depuis le port série.Communication de port série

En premier: j'envoie les données sous forme de chaîne au port série.

Deuxièmement: j'ai essayé de lire la chaîne à nouveau pour le test, la transmission de Successfull, mais je REÇU chaîne vide

voici mon code:

Try 


Dim SerialPort1 

As New SerialPort("Com1",9600, Parity.None, 8, StopBits.One) 

SerialPort1.Open() 

SerialPort1.DtrEnabled=True 

SerialPort1.WriteLine("This is my test message .") 


' ================= Read from serial port 

Label1.Text=SerialPort1.ReadExisting() ' this returns empty string 


Catch ex As Exception 


MessageBox.Show(


"Error writing to serial port:" & ex.Message) 


Finally 

SerialPort1.Close() 


End Try 

je dois poser une autre question:

est-il nécessaire de connecter le périphérique au port série pour envoyer/recevoir des données avec succès ????

s'il vous plaît je besoin d'une aide urgente

grâce

+0

Oui, vous avez besoin d'un périphérique connecté au port série pour que les données soient correctement envoyées et reçues. Quel appareil avez-vous connecté? Avez-vous lu le manuel de cet appareil? Envoyer des octets dans l'abîme peut être épouvantable. –

Répondre

1

ReadExisting renvoie les données envoyées par l'appareil que vous communiquez avec, et non pas les données envoyées par vous.

3

Comme Heinzi l'a déjà mentionné, si vous voulez voir des données, vous devez en recevoir. Il n'y a pas d'écho automatique des données que vous envoyez.

Pour répondre à votre autre question: Oui, vous devez avoir un autre périphérique connecté à votre port série pour envoyer/recevoir des données avec succès. Sans autre appareil, quel serait le but?

Heureusement pour vous, le «périphérique» que vous connectez peut être aussi simple qu'une prise avec quelques fils. Voici un ensemble d'instructions et de diagrammes pour la construction d'une prise dite de bouclage: http://www.airborn.com.au/serial/rs232.html

Cela vous permettra de répercuter votre sortie à votre entrée en utilisant un matériel très simple. Si vous n'êtes pas en train de souder votre propre prise, vous pouvez utiliser une boîte de dérivation ou un tableau. Voici un exemple: http://www.breakoutboxes.com/D-Series-9-Position-Breakout-Board_p_31.html.

0

Vous aurez besoin d'un périphérique via lequel votre application enverra et recevra des données. Pour tester, vous pouvez envisager de créer un port série virtuel avec software like this Virtual Serial Port Driver. Il vous permet de créer des ports série qui ne sont pas réellement connectés à un périphérique physique. Vous pouvez ensuite déboguer votre programme avec un autre programme ou avec quelque chose comme HyperTerminal ou PuTTY.

1

Vous pouvez essayer d'utiliser com0com pour générer une paire de ports série virtuels, puis vous pouvez renommer l'un de ces ports virtuels en un nom commun comme "COM4". Vous devriez ouvrir d'autres SW comme hyperterminal pour la communication série, puis régler pour ouvrir le port restant de la paire.

Vous pouvez essayer d'utiliser le poing com0com avec deux hyperterminaux.

+0

+1. Pour la plupart des codages de port série, com0com ou un câble nullmodem sont assez essentiels. –

0

En supposant que vous avez une prise de bouclage (il suffit de connecter les broches 2 et 3 ensemble) de sorte que tout ce que vous envoyez est immédiatement reçu.

Cependant - vous devez considérer que le RS232 est lent. ("S L O W L Y") et le transfert se fait de manière asynchrone de sorte que votre programme frappe le readexisting longtemps avant que les données aient été envoyées. Donc vous lisez un tampon vide.

Juste pour le plaisir de votre test, vous devez mettre un peu de retard là-dedans. de sorte que vous pouvez attendre un moment après l'envoi avant d'essayer de recevoir.

Dans une application réelle bien que vous utilisiez l'événement receive pour lire le port série.