Ich bastele grade an einem "Gateway" für Sensordaten auf einem Raspberry Pi, mein Code läuft auch bis auf dem Socket.
Allerding finde ich den fehler nicht. Vieleicht kann mir jemand helfen, ich bin noch neu in Python vieleicht kann mir ja
auch jemand noch Tips geben zu Optimirung.
Hardware:
Raspberry Pi 1
Geigerzähler an ttyAMA0 der jede Sekunde den Aktuellen Wert schickt.( Optional USB tauglich, war mir aber zu kompliziert )
SPS über Ethernet angekoppelt.
Software:
Das Script soll die Daten von der Seriellen Schnittstelle auf dem Ethernet an Port 10001 bereitstellen.
Es sollen noch weitere Sensoren folgen ( Temperatur, Luftfeuchte, usw ).
Hier der Code:
Code: Alles auswählen
#! /usr/bin/python3
import sys, tkinter, serial, time, _thread, socket, platform
#Sytem Variables
global hostname
global tcp_port
global tcp_ip
global ser
global act_rad
global buffer_size
tcp_ip = "192.168.2.50"
tcp_port = 10001
buffer_size = 1024
#Serielle Schnittstelle Öffnen und das empfangene in eine Varriable Schreiben
def openser():
ser = serial.Serial()
ser.port = "COM1"
ser.baudrate = 9600
ser.open()
if ser.isOpen():
print ("Serial Port Open!!")
while ser.isOpen:
act_rad = float(ser.readline())/100
else:
print ("Error!!")
#Socket Öffnen und auf Port 10001 Lauschen bis das Sendecommand von SPS kommt ("send_A1")
def opentcp():
try:
while 1:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((tcp_ip, tcp_port))
s.listen(1)
conn, addr = s.accept()
print ('Connection address:', addr)
while 1:
data = conn.recv(buffer_size)
if not data: break
else:
print (data)
if data == b'send_A1' or data == b'send_A1\r\n':
conn.send(bytes("A1=" + str(act_rad) + ",\r\n", 'utf-8'))
conn.close()
except:
print ("Verbindung vom Remote Beendet") #Wenn Sock beendet wird, neu Starten.
tcpdata_threadID = _thread.start_new_thread(opentcp, ())
tcpdata_threadID = _thread.start_new_thread(opentcp, ())
openser()
Es wäre schön wenn mir jemand Helfen könnte,
mit Freundlichen Grüßen
Crazy