Arduino串行监视器上的“发送”按钮在做什么?

问题描述 投票:0回答:1

此问题已解决!!打开串口后,我必须等待几秒钟。


我想执行通过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 ...?

如果您可以告诉别人,那将非常有帮助。

python arduino ide pyserial
1个回答
0
投票

'hoge []'的首个数据为NULL字符。因此,'Serial.print()'函数没有机会打印出全部内容。

  1. Serial.print(hoge)立即返回,因为第一个字符为NULL字符。
  2. ser.readline()永远等待着,因为Arduino没有换行。

只需更改内容即可解决此问题或使用write()函数(但是,如果您保留相同的内容,则还需要在不使用readline()的情况下修改python代码)。

[在您的python代码中,您需要在“ ser.write()”之前添加“ time.sleep()”,以便Arduino准备接收串行数据。需要超过1秒。

© www.soinside.com 2019 - 2024. All rights reserved.