2017-06-27 8 views
0

Ich habe ein Python-Skript, das Daten von einer Webschnittstelle senden sollte. PHP ruft das Skript auf und ruft das Python-Skript auf.Python-Variable in chr

Like: Python sender.py 1

1 ist der Wert, der in der Variablen adres gespeichert würden. Aber ich erhalte Compilerfehler in der Zeile: chr(adres). Es muss eine Ganzzahl sein. Aber ich habe keine Ahnung, wie ich es beheben kann.

Wenn ich verwende: chr(0x01) es funktioniert gut.

import sys       #import sys 
import serial       #import Serial 

ser = serial.Serial ("/dev/ttyS0")  #Open onze poort 
ser.baudrate = 9600     #Baudrate instellen 

adres = sys.argv[1]     #Adres verkrijgen van PHP 

print adres       #Debug Info 

byte = chr(adres)      #Create byte from value 
ser.write(byte)      #Send byte with uart 

ser.close() 

Der Fehler, die ich bekomme:

file sender.py, line 13 in byte = char(adres)
TypeError: an integer is required.

Linie 13 ist:

byte = chr(adres)      #Create byte from value 
+2

Bitte posten Sie den * genauen * Fehler einschließlich Stacktrace. – deceze

+0

Könnten Sie den StackTrace bitte posten? – rowana

+0

Ich habe die Fehlermeldung hinzugefügt, ich kann keinen StackTrace abrufen. Ich habe keine Ahnung warum ... –

Antwort

1

sys.argv[1] ein String ist, nicht eine ganze Zahl ist; Sie müssen es integer konvertieren:

byte = chr(int(adres)) 

Auch wäre es schön, es in einem try … except Block setzen falsche Argument an das Skript übergeben (nicht auf eine ganze Zahl Auswertung) zu handhaben.

+0

Du bist der Beste! Klappt wunderbar ;) –

0

Sie müssen Ihr Argument in ganze Zahlen schreiben. Weil das Argument in der Zeichenfolge steht.

import sys       #import sys 
    import serial       #import Serial 

    ser = serial.Serial ("/dev/ttyS0")  #Open onze poort 
    ser.baudrate = 9600     #Baudrate instellen 

    adres = int(sys.argv[1])     #Adres verkrijgen van PHP 

    print adres       #Debug Info 

    byte = chr(adres)      #Create byte from value 
    ser.write(byte)      #Send byte with uart 

    ser.close() 
Verwandte Themen