C# Rfid Veri Alma
-
Sa hocalar Arduino uno kullanıyorum Rfid den C# a veri almam lazım fakat beceremedim
Veriler bazen tam geliyor bazen eksik geliyor bazen fazla
123,456,789,987,654 olsun kart id bazen 123 tek geliyor sonraki butona tıkladığımda kalan 456,789,987,654 kısmı geliyor bazen 123,456,789,987,654,123 olarak geliyor bazende 123,456,789,987,654,123,456,789,987,654 geliyor bu sorunu nasıl çözerim
Bazende farklı bir kart okutmama rağmen porttaki eski veri geliyor
Çözüldü
TheAvenqer tarafından 29/Nis/19 00:04 tarihinde düzenlenmiştir -
Eldeki verilerle bir şey demek mümkün değil. RFID okuyucu bağlantı şekli, kodlar vs. hepsini görmek gerek.
-
Seri porttan veriyi okurken eğer veri belli bir bayttan büyükse o veriyi alın ve işleyin. Buffer'daki her gelen veriyi direk işlememelisiniz. Porttaki eski verinin gelmesinin sebebi de buffer'ı 0'a çekmemenizden kaynaklı. Genel izlemeniz gereken, seri port'u oku, bufferdaki data istenilen datadan büyükse datayı al işle, işleme bittikten sonra buffer ı temizle, tekrar başa dön.
-
https://lezzetlirobottarifleri.com/wp-content/uploads/2018/08/RFID-LRT-min.png
şu şemayı kullanıyorum
if (lrt720.isCard()) { if (lrt720.readCardSerial()) { String kartid= String(lrt720.serNum[0])+String(lrt720.serNum[1])+String(lrt720.serNum[2])+String(lrt720.serNum[3])+String(lrt720.serNum[4]); Serial.println(kartid); } }
şu kod bloğunu kullanıyorum arduino da
private void Button1_Click(object sender, EventArgs e) { textBox1.Clear(); serialPort.Open(); string veri = serialPort.ReadLine(); serialPort.Close(); textBox1.Text = veri; }
C# kod bloğumda bu şekilde
Edit:
private void Button1_Click(object sender, EventArgs e) { textBox1.Clear(); serialPort.Open(); for (; ; ) { string veri = serialPort.ReadLine(); if (veri.Length > 10) { textBox1.Text = veri; serialPort.DiscardOutBuffer(); serialPort.Close(); break; } } }
kod bloğunu buna dönüştürdüm fakat halen önüne geçemedim bu sefer az veriler gelmiyor fakat fazla veriler gelmeye devam ediyor kartların içinde 10 ile 15 arası rakam bulunmakta diye biliyorum yani 12 haneliden 15 lik gelmesinin önüne geçemem bu şekilde
TheAvenqer tarafından 28/Nis/19 16:35 tarihinde düzenlenmiştir