So senden Sie einen 5-stelligen Anzahl an arduino mit Python 3.3 und pyserial (komischer Fehler)
'Hallo,
Ich bin irgendwie verloren, nachdem mehrere Stunden zu versuchen, verschiedene Dinge. Ich habe meinen code. Ich bin tring zu bekommen eine 5-stellige Nummer auf dem arduino, aber ich erhalte eine Fehlermeldung beim Versuch zu senden einen Nummernkreis. Ich bin kein erfahrener Programmierer, aber ich muss aufhören, die viel Erfahrung mit dem arduino. Ich kann empfangen, aus dem Arduino kein problem.
Ein Stück testcode:
import serial
import time
import struct
ser = serial.Serial(
port='COM15',\
baudrate=9600,\
parity=serial.PARITY_NONE,\
stopbits=serial.STOPBITS_ONE,\
bytesize=serial.EIGHTBITS,\
timeout=0)
time.sleep(3)
print("connected to: " + ser.portstr)
#this will store the line
bline = []
while True:
ser.write(10128)
time.sleep(1)
ser.write(10000)
time.sleep(1)
ser.close()
Den Fehler:
connected to: COM15
Traceback (most recent call last):
File "C:/Users/Danny/Documents/arachnoid-0.5/testreceive.py", line 19, in <module>
ser.write(10128)
File "C:\Python33\lib\site-packages\serial\serialwin32.py", line 283, in write
data = to_bytes(data)
File "C:\Python33\lib\site-packages\serial\serialutil.py", line 75, in to_bytes
for item in seq:
TypeError: 'int' object is not iterable
>>>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da die serielle Kommunikation ist für die bytes, würden Sie brauchen, um zu konvertieren der int-Datentyp in einen byte-string. In python 3 dies würde müssen codiert werden.
Ich glaube, dass dies sollte es tun:
Müssen Sie eine Zeichenfolge übergeben
write
, nicht einint
.Bekommen 5 Ziffern immer mit führenden Nullen, wenn nötig:
Den Zusatz macht es eine 6-stellige Zahl, und die
[-5:]
Scheiben aus den letzten 5 Ziffern des Ergebnisses. Natürlich ist der hacky Weg, es zu tun, ich vergessen, wie zu verwendenformat
um es richtig zu machen.