ich bin neuling in der python Programmierung und interesiere mich sehr dafür besser zu werden
und hoffe ihr könnt mir etwas auf die sprünge helfen
ich besitze 2 elektronische Stromzähler mit optischer schnittstelle
das gesendete Protokoll entspricht der SML (smart meter language).
Gesendet wird der datensatz vom Zähler ca. alle 3 sec.
auslesen möchte ich es mit einem Raspberry PI Modell B
mit einem W&T rs232 auf USB wandler
ich hab folgende Probleme:
mit einem Terminal Programm (Hterm) auf meinem Laptop hab ich den datensatz schon gelesen es sind 396 zeichen
in hex kodiert (0-255)
mit einem kleinen python code hab ich versuch den zähler auszulesen dabei wandelt es direct jedes zeichen was unter 128 ist automatisch in einen Ascii zeichensatz um und "inWaiting" liefert nur 321 zeichen unabhängig ob über Raspi oder PC :K
und falls einer einen tip hat wie ich aus einem teilbereich aus einem byte array wieder einen zähler wert machen kann wäre ich sehr dankbar.
Ich hab in büchern und internet kaum hilfreiches gefunden zu diesem problem.
ich hoffe ich hab es einigermassen darstellen können.
anbei mein testcode der auch nur bedingt funtioniert
Code: Alles auswählen
import serial
import time
import sys ,os
try :
ser = serial.Serial ("/dev/ttyUSB0",9600,timeout=10000) # open first serial port
print (ser.portstr) # check which port was really used
ser.setDTR = 1
# ser.setRTS = 1
except :
print ("gibt es nicht")
byte_wartend = 0
while True:
S = bytes
while ser.inWaiting():
if ser.inWaiting() == byte_wartend & ser.inWaiting()!= 0:
print (ser.inWaiting())
#S = ser.readline()
print(ser.readline())
byte_wartend = 0
else:
byte_wartend = ser.inWaiting()
time.sleep(0.5)
time.sleep(0.05)
