This repository has been archived on 2025-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
tty2newsml/tty2newsml.py
2014-09-15 17:37:18 +02:00

54 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import serial
import iptcmessage
class _main(object):
def __init__(self, port='/dev/tty700'):
ser = self.openPort(port)
while True:
msg = self.waitForStart(ser)
msg += self.readUntilEOM(ser)
iptc = iptcmessage.IPTCMessage(msg)
def openPort(self, port):
ser = serial.Serial(port=port, baudrate=4800, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=None)
print("%s opened with %i baud. Timeout is %s seconds." % (ser.name, ser.baudrate, ser.timeout))
return ser
def waitForStart(self, ser):
print("Waiting for start indicator (%i): " % ser.inWaiting(), end='', flush=True)
while True:
byte = ser.read(size=1)
print(".", end='', flush=True)
if byte == b'\x01':
print("Found.")
return byte
def readUntilEOM(self, ser):
print("Reading data until EOM.", end='', flush=True)
msg = b''
ctr = 0
while True:
print("%i>" % ser.inWaiting(), end='', flush=True)
byte = ser.read(size=1)
ctr+=1
# if ctr % 10 is 0:
print(".", end='', flush=True)
if byte == b'\x01':
print("PROBLEM: Got start indicator, but message not yet finished.")
break
msg += byte
if byte == b'\x04':
break
print("Got %i bytes." % len(msg))
return msg
def readLine(self, ser):
rcv = ser.readline()
print("Got: %s" % repr(rcv))
if __name__=='__main__':
_main()