Sock hängt sich auf Python

Gast #4532077
Lesenswert?

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
Gast #4532684
Lesenswert?

Das Script springt nach dem er den Befehl "send_A1" empfangen hat, in 
die except ausnahme...
1
     else
2
        print (data)
3
        if data == b'send_A1' or data == b'send_A1\r\n':       <-- von hier
4
            conn.send(bytes("A1=" + str(act_rad) + ",\r\n", 'utf-8'))
5

6
        conn.close()
7

8
    except:                          <-- nach hier
9
        print ("Verbindung vom Remote Beendet") #Wenn Sock beendet wird, neu Starten.
10
        tcpdata_threadID = _thread.start_new_thread(opentcp, ())

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren