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

Cevap