bonjour à tous!
Je vais commencer par décrire mon projet
dans le cadre de mon examen de passage je dois réaliser un petit système qui, grâce à une carte électronique, doit:
sur la carte électronique:
- envoyer à un programme en c# (via le port COM) la température et la luminosité sous cette forme: XX.XX,Y -> XX.XX étant la température et Y un indice de luminosité (allumé-éteint)
le programme ressemble à ceci:
je me suis d'abord focalisé sur température et luminosité.
Pour le test, depuis ma carte, j'envoie "bonjour";
Cette donnée est bien reçue, j'en suis certain, par l'ordinateur via un programme que j'utilise en électronique: Microship AN1310.
cependant sur mon programme, il est bien affiché "bonjour" dans la température réelle mais à certain moment lors du renvoi de la nouvelle donnée (encore "bonjour" en somme) des fois ça affiche "r","ur","our", etc.
Par apprès ça peut afficher "bonjour" et recommencer à bugguer.
j'espère que vous voyez mon problème :/ j'ignore totalement d'ou celà peut provenir malgré de nombreuses recherches...
voici mon code c# :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace ProjetAoutJacoby { public partial class Form1 : Form { public delegate void receiveData(string str); public Form1() { InitializeComponent(); } private void comboBoxCOM_SelectedIndexChanged(object sender, EventArgs e) { serialPort1.PortName = "" + comboBoxCOM.SelectedItem; } //tout simplement ouvrir/fermer le port COM grâce au bouton private void boutonPlayCom_Click(object sender, EventArgs e) { try { if (boutonPlayCom.Text.Equals("Play")) { serialPort1.Open(); serialPort1.BaudRate = 9600; boutonPlayCom.Text = "Stop"; } else { serialPort1.Close(); boutonPlayCom.Text = "Play"; } } catch (UnauthorizedAccessException ex) { MessageBox.Show("Port déjà utilisé dans un autre programme\n\n" + ex); } catch (System.IO.IOException ex) { MessageBox.Show("Port non ouvert\n\n" + ex); } } /* * even port serie à la réception */ private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { try { //tant qu'il y a des données entrée on continue while (serialPort1.BytesToRead > 0) { string stringRead = serialPort1.ReadExisting(); Invoke(new receiveData(convertReceiveData), stringRead); //Car il reçoit les données sur un autre thread } } catch (System.IO.IOException ex) { MessageBox.Show("" + ex); } catch (System.InvalidOperationException ex) { MessageBox.Show("" + ex); } } /* * Lié à la Méthode serialPort1_DataReceived */ private void convertReceiveData(string strRead) { //affiche "bonjour" dans le label tReelGetLabel.Text = strRead; } } }
Je vous remercie car mon année est en jeu! :/
Si vous voulez de plus ample informations -> je suis présent
Jonathan
Partager