Odošlím celú hodnotu od arduino a čítam ju v Pythone pomocou pyserial Kód arduino je:
Serial.write(integer)
A pyserial je:
ser=serial.Serial ("com3",9600,timeout =1)
X=ser.read(1)
print(X)
Nevytvára nič okrem prázdnych priestorov Vie niekto, ako čítať toto celé číslo prechádzajúce z arduino v Pythone?
odpovede:
0 pre odpoveď č. 1Pravdepodobne musíte použiť štartovací bit.
Problém môže byť, že arduino už napísal celé číslo vtedy, keď je pyserial spustený?
Takže napíšte znak z pyserial na arduino, aby začal signál
ser=serial.Serial ("com3",9600,timeout =1)
ser.write(b"S")
X=ser.read(1)
print(X)
A napíšte celé číslo z arduino, keď dostanete tento štartovací bit.
0 pre odpoveď č. 2
To nie je ten správny spôsob čítania Integer
od Arduino. Integer
je 32-bitový typ, kým bude váš sériový port nastavený na EIGHTBITS (Obaja v pyserial a Arduino, opravte ma, ak sa mám zle) vo veľkosti bajtov, preto musíte napísať Character
verzia Integer
z Arduino, zatiaľ čo vysielanie cez Serial Port, pretože a Character
trvá len EIGHTBITS vo veľkosti, ktorá je tiež pohodlný spôsob, ako robiť to, čo potrebujete, veľmi ľahko.
Dlhý príbeh krátky, previesť svoj Integer
do a String
alebo a Character
Pole pred prenosom. (Je pravdepodobné, že pre konverziu sú k dispozícii vstavané funkcie).
Na strane poznámky je tu správny python kód, ktorý by ste radšej použili:
ser = serial.Serial(
port="COM3",
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
#RxTx
ser.isOpen()
while 1:
out = ""
while ser.inWaiting() > 0:
out += ser.read(1)
if out != "":
print ">>Received String: %s" % out
0 pre odpoveď č. 3
Jednoduchý program, ktorý som testoval:
Arduino:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
void loop() {
int f1=123;
// print out the value you read:
Serial.println(f1);
delay(1000);
}
Python:
import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.port = "COM5"
ser.open()
while True:
h1=ser.readline()
if h1:
g3=int(h1); #if you want to convert to float you can use "float" instead of "int"
g3=g3+5;
print(g3)