mimi35garry
Messages postés21Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention 8 février 2013
-
6 févr. 2013 à 14:38
mimi35garry
Messages postés21Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention 8 février 2013
-
7 févr. 2013 à 09:35
Bonjour,
je souhaite envoyé une donnée sur le port Com.
Voici mon code en C# qui fonctionne
serialPort1.portName = "COM5";
serialPort1.BaudRate = 9600;
serialPort1.Parity = Parity.Even;
serialPort1.StopBits = StopBits.One;
serialPort1.DataBits = 8;
serialPort1.Handshake = Handshake.None;
private void button1_Click(object sender, EventArgs e)
{
try
{
serialPort1.Write("FF" + "\n\r");
'069 en decimal=105 en octal=45 en hexa=01000101en binaire=E majuscule en ascii
Thread.Sleep(10);
}
catch (Exception ex)
{
MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
}
}
Voici celui en VB.net qui fonctionne aussi
SerialPort1.PortName = "COM5"
SerialPort1.BaudRate = 9600
SerialPort1.Parity = IO.Ports.Parity.Even
SerialPort1.DataBits = 8
SerialPort1.StopBits = IO.Ports.StopBits.One
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
envoyeCaractere(69)
'069 en decimal=105 en octal=45 en hexa=01000101en binaire=E majuscule en ascii
End Sub
Private Sub envoyeCaractere(ByVal Code As Integer)
SerialPort1.Write(Chr(Code))
Sleep(10)
SerialPort1.Write(Chr(13))
Sleep(10)
SerialPort1.Write(Chr(10))
End Sub
Mon périphérique (une carte à base de PIC 16F876) attend 45 en héxa(ou 01000101) et le CR (0x0D)et le LF(0x0A) en ascii.
Mon code VB marche (en convertissant le decimal en en code ASCII) mais pas celui en C# enfin si mais je suis obligé de mettre un caractère après celui que je veus envoyer.
Par exemple E1,Ei,E?, Toujours deux caractères en commencant par la "vrai" lettre, si j'en met trois ca ne fonctionne plus le PIC vois bien que ce n'est pas une commande valide.
Les propriétées de sérialport1 sont les mêmes sauf en VB "modifiers Friend" et en C# "modifiers internal".
Voyez vous pourquoi en C# je suis obligé de doublé la lettre ?
mimi35garry
Messages postés21Date d'inscriptionmercredi 21 janvier 2009StatutMembreDernière intervention 8 février 2013 6 févr. 2013 à 17:27
Merci de ta réponse casy
le serialPort1.ReceivedBytesThreshold= nombre octet
est pour le datareceived, apparemment c'est pour indiquer le nombre d'octets qui sont reçu avant que l'évenenment datareceived ne se déclenche (dixit visual studio)
J'ai testé sans le sleep et c'est pareil.
Pour infos je l'avais mis pour cette configuration pour testé