Merhabalar,
Kodu buldum. Biz o ara hazır kütüphane kullanmışız. USB den okumamışız.
Koddaki USB okuma rutinleri kantardan gelen veriyi okumak için
kullanılıyor. İki farklı tip indikatör için iki farklı okuma algoritması
var.
Hayvan kantara girdiği an RFID ile boyun numarası alınıyor ve kantar
değeri bekleniyordu. Ağırlığın okunduğu hayvan, zaman, tartım bilgileri
de örnek veritabanına yazılıyordu. Ayrıca basit bir PHP sayfası da
koşuyordu BananaPi kart üzerinde. İstenilen hayvan listelenebiliyordu.
Hikayesi kolaylıkla görülebiliyordu.
Elbette kod tamamıyle deneysel. Ticari bir ürün olamadı. Henüz... :-P
/////////
from pirc522 import RFID
import signal
import time
import RPi.GPIO as GPIO
import sqlite3 as lite
import sys
#import msvcrt
import serial
import re
indikatorTip = 2
#1 ==> Erte
#2 ==> YH-T7+E
def seriDegerOku():
try:
ser = serial.Serial(port='/dev/ttyUSB0', baudrate=9600,
parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS, timeout=0)
deger = ""
donen = 0
devam = True
durum = ""
while devam:
for line in ser.read():
if ord(line) == 13:
deger = deger + "#"
else:
deger = deger + str(line)
if deger.count("#") == 2:
#deger=deger[deger.find("#")+1:deger.find("#")]
deger = re.findall('#(.*?)#',deger)
durum = deger[0][0:1]
donen = int(str(int(deger[0][1:7])))
deger = ""
#print(str(deger) + ":" + deger[0])
#print(deger[0])
#donen = int(deger[0])
if durum == "A":
ser.close()
#devam = False
return donen
except:
return -1
def seriDegerOkuYH():
try:seçiliyor.
ser = serial.Serial(port='/dev/ttyUSB0', baudrate=9600,
parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS, timeout=0)
deger = ""
donen = 0
devam = True
durum = ""
while devam:
for line in ser.read():
if ord(line) == 13:
deger = deger + "#"
else:
deger = deger + str(line)
if deger.count("#") == 2:
deger = re.findall('ww(.*?)kgwt',deger)
donen = float(deger[0])
deger = ""
ser.close()
return donen
except:
return -1
con = lite.connect('/home/bananapi/kurdak/kurdak.db')
cur = con.cursor()
rdr = RFID()
util = rdr.util()
util.debug = True
print ("Kart Bekleniyor...")
devam = True
while devam:
rdr.wait_for_tag()
(error, uid) = rdr.request()
if not error:
print ("Kart Okundu:")
(error, uid) = rdr.anticoll()
if not error:
kart_uid = str(uid[0])+ " " + str(uid[1]) + " " + str(uid[2]) +
" " + str(uid[3])+ " " + str(uid[4])
print (kart_uid)
if indikatorTip == 1:
sqlKod = "INSERT INTO tartim(tarih, saat, kod, kilo)
values(date('now'), time('now'), '" + kart_uid + "', " +
str(seriDegerOku()) + ");"
else:
sqlKod = "INSERT INTO tartim(tarih, saat, kod, kilo)
values(date('now'), time('now'), '" + kart_uid + "', " +
str(seriDegerOkuYH()) + ");"
#print (sqlKod)
cur.execute(sqlKod)
con.commit()
print ("Kayit Tamam")
////////
Kolay gelsin,
Mucip:)
On 8.10.2019 08:58, Metin Topallar wrote:
Umarım yardımcı olabilir. Şuan çok geniş bir boş zamana sahip değilim
yoksa hızlıca bir örnek yapıp yollardım. Ama kod üzerinde sorun
yaşadığınız yer var ise destek verebilirim.
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php