Hallo Leute.
ich habe folgendes Problem:
-Ich lese über einen RFID-Reader einen Tag (CHECK)
-Dieser gibt die Nummer in Hexadezimal über RS232 an einen telnet-server (CHECK)
-Via Telnet kann ich mich nun von einem beliebigen gerät einloggen und sobald ein Tag gelesen wird, wird mir dieser im Terminal ausgegeben (CHECK)
Dies soll ab jetzt aber nicht mehr via Terminal passieren sonder via Python damit ich mit den Daten im Programm Arbeiten kann.
Momentan sieht mein Code wie folgt aus:
import getpass
import sys
import telnetlib
tn = telnetlib.Telnet('IP ARDESSE','PORT')
while 1:
print (((tn.read_eager().decode().strip('b''7A00'))))
Meine erste Frage:
Wie sorge ich dafür dass der Print Befehl nur ausgeführt wird wenn auch Daten rein kommen?
Also welche Bedingung muss ich setzen?
Zweite Frage:
in einem früheren Programm (ohne Telnetserver - direkte serielle Verbindung) habe ich die HEX-Werte einfach umrechnen können ( int(),16 )
dies Funktioniert momentan in der Telnetvariante nicht.
Wo liegt mein Fehler?
Alter Code mid Seriell-Direkt:
import serial
ser = serial.Serial('/dev/tty.usbserial-FTG4SM2J',9600)
while 1:
print (int((ser.readline().decode().strip('7A00''\r\n')),16))
Umrechnung im Telnetcode:
import getpass
import sys
import telnetlib
tn = telnetlib.Telnet('IP ADRESSE','PORT')
while 1:
print (int((tn.read_eager().decode().strip('b''7A00')),16))
Fehler:
ValueError: invalid literal for int() with base 16:
Danke im Voraus.