此问题已解决!!打开串口后,我必须等待几秒钟。
我想执行通过Arduino串行监视器上的发送按钮完成的python程序。
if (Serial.available() > 0){
Serial.print(hoge);
}
用arduino编写,我想通过python程序使Serial.available()> 0。
1。如果我在IDE串行监视器上发送类似A或3的内容,则hoge的内容将在串行监视器上输出。
2。使用pyserial
ser = serial.Serial('/dev/ttyACM0', 115200,timeout=None)
ser.write(str.encode('A'))
data = ser.readline()
print(data)
执行此命令时,它将在ser.read()之前等待接收。在Arduino上删除程序的if (Serial.available ()> 0)
并执行后,hoge的内容已在终端上正确打印。
hoge的内容是
b'0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\r\n'
我需要写什么来做与'发送'相同的事情?我如何获得Serial.available()> 0 ...?
如果您可以告诉别人,那将非常有帮助。
'hoge []'的首个数据为NULL字符。因此,'Serial.print()'函数没有机会打印出全部内容。
只需更改内容即可解决此问题或使用write()函数(但是,如果您保留相同的内容,则还需要在不使用readline()的情况下修改python代码)。
[在您的python代码中,您需要在“ ser.write()”之前添加“ time.sleep()”,以便Arduino准备接收串行数据。需要超过1秒。