Bonjour
Je souhaite faire un petit programme qui écoute le port COM
J'ai cherché partout mais je n'ai trouvé aucun moyen qui n'a fonctionné à ma guise pour le faire c'est pourquoi je viens vers vous m'adresser pour de l'aide
J'ai un lecteur USB de badges, nommé "USB Serial Port (Com3)" dans mes gestionnaires de périphériques. Le n° du COM est variable donc il faudrait que je me base sur le nom USB Port Serial pour l'écouter et pas sur le nom complet.
Quand je me connecte sur le Com3 avec Putty j'obtiens ceci :
Le lecteur envoie en boucle la chaîne "0880" en continu, et au moment où je passe un badge il envoi la chaîne de mon badge : 75AC2C26CC00220552FF , ensuite il recommence avec des envois de 0880088008800880088075AC2C26CC00220552FF0880088008800
À l'intérieur de cette chaîne se trouve mon numéro de badge --> ici : 220552 c'est toujours sur 6 digit et toujours avant le FF,
Comment écouter ce port et détecter quand un badge est lu, et envoyé les 6 digits avant le FF dans une variable String ?
L'idée est de faire un thread séparé qui est connecté sur "USB Serial Port*, qui soit connecté en permanence dessus, et au moment où il détecte autre chose que "0880" il prend la valeur devant le FF ?
Merci.
J'ai déjà ça : je vois bien du texte défilé dans ma RichTextbox, il ne s'ajoute pas mais il défile, 0880, quand je passe le badge il me l'affiche puis repasse en 0880
Avec mon IF, je détecte le "FF", quand je passe le badge la messagebox s'affiche correctement, le SP se close
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 public SerialPort sp; string dataReceveid = string.Empty; private delegate void SetTextDeleg(string text); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { sp = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One); this.sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); sp.Open(); } void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { try { // Read data from string data = sp.ReadExisting(); Invoke(new Action(() => richTextBox1.Text = data.Trim())); i if (data.IndexOf("FF") != -1) { sp.Close(); strNoBadge = ""; MessageBox.Show("String contain FF"); strNoBadge += data.Substring(6, data.IndexOf("FF")); textbox1.Text = strNoBadge; } } catch { } }
Par contre il ne me rempli pas ma variable ni mon textbox, comme s'il passait pas dedans ! en pas à pas il se sauve du IF et passe dans le catch après le strNoBadge += ...
Maintenant je n'arrive pas à sortir les 6 digits avant le FF dans une variable
Merci
Partager