Hallo liebes Forum,
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. :idea:
Hardware:
Raspberry Pi 1
Geigerzähler an ttyAMA0 der jede Sekunde den Aktuellen Wert schickt.(
Optional USB tauglich, war mir aber zu kompliziert :oops: )
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:
1 | #! /usr/bin/python3
|
2 | import sys, tkinter, serial, time, _thread, socket, platform
|
3 |
|
4 | #Sytem Variables
|
5 | global hostname
|
6 | global tcp_port
|
7 | global tcp_ip
|
8 | global ser
|
9 | global act_rad
|
10 | global buffer_size
|
11 |
|
12 | tcp_ip = "192.168.2.50"
|
13 | tcp_port = 10001
|
14 | buffer_size = 1024
|
15 |
|
16 | #Serielle Schnittstelle Öffnen und das empfangene in eine Varriable Schreiben
|
17 | def openser():
|
18 | ser = serial.Serial()
|
19 | ser.port = "COM1"
|
20 | ser.baudrate = 9600
|
21 |
|
22 | ser.open()
|
23 | if ser.isOpen():
|
24 | print ("Serial Port Open!!")
|
25 | while ser.isOpen:
|
26 | act_rad = float(ser.readline())/100
|
27 | else:
|
28 | print ("Error!!")
|
29 |
|
30 |
|
31 | #Socket Öffnen und auf Port 10001 Lauschen bis das Sendecommand von SPS kommt ("send_A1")
|
32 | def opentcp():
|
33 | try:
|
34 | while 1:
|
35 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
36 | s.bind((tcp_ip, tcp_port))
|
37 | s.listen(1)
|
38 | conn, addr = s.accept()
|
39 | print ('Connection address:', addr)
|
40 | while 1:
|
41 | data = conn.recv(buffer_size)
|
42 | if not data: break
|
43 |
|
44 | else:
|
45 | print (data)
|
46 | if data == b'send_A1' or data == b'send_A1\r\n':
|
47 | conn.send(bytes("A1=" + str(act_rad) + ",\r\n", 'utf-8'))
|
48 |
|
49 | conn.close()
|
50 | except:
|
51 | print ("Verbindung vom Remote Beendet") #Wenn Sock beendet wird, neu Starten.
|
52 | tcpdata_threadID = _thread.start_new_thread(opentcp, ())
|
53 |
|
54 |
|
55 | tcpdata_threadID = _thread.start_new_thread(opentcp, ())
|
56 | openser()
|
Es wäre schön wenn mir jemand Helfen könnte,
mit Freundlichen Grüßen
Crazy