gpt4 book ai didi

python - pySerial write() 在 Python 解释器中运行良好,但在 Python 脚本中运行不正常

转载 作者:太空狗 更新时间:2023-10-30 01:28:47 26 4
gpt4 key购买 nike

最近,我正在尝试在 Arduino 上进行某种“光控”。我使用 Raspberry Pi 通过串行端口(USB 电缆)发送控制消息。这是 Arduino 代码:

int redled = 12;
int whiteled = 48;

void setup()
{
Serial.begin(9600);
pinMode(redled,OUTPUT);
pinMode(whiteled,OUTPUT);
}

void loop()
{
if(Serial.available())
{
char cmd = Serial.read();
switch(cmd)
{
case'r':
digitalWrite(redled,HIGH);
delay(2000);
digitalWrite(redled,LOW);
break;

case'w':
digitalWrite(whiteled,HIGH);
delay(2000);
digitalWrite(whiteled,LOW);
break;
}
}
else
{
Serial.println("hello pi");
delay(1000);
}

}

之后,我使用 Python 解释器中的 pySerial 来控制引脚,一切正常。这是一段解释器输出:

Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import serial
>>> ser = serial.Serial('/dev/ttyACM0',9600)
>>> x = ser.read(10)
>>> print 'x = ',x
x = hellhello
>>> ser.write('w') #white led turn on and off
1
>>> ser.close()
>>>

一切正常,led 确实打开和关闭,所以我决定编写一个简单的 Python 脚本来执行相同的操作:

import serial
import time
ser = serial.Serial('/dev/ttyACM0',9600)
x = ser.read(10)
print 'x = ',x

time.sleep(2)
ser.write('w')

ser.close()

以下为执行命令及结果:

pi@raspberrypi ~ $ python serialtest.py
x = helello pi

它只出现了来自Arduino 的字符串,但根本没有led 打开。看起来一切都应该没问题,所以我不知道问题出在哪里。我已经搜索了一些文章并在“ser.write()”之前添加了“time.sleep(2)”,但它仍然无法正常工作。我将不胜感激任何帮助,在此先感谢!

更新:我让 Controller 将它接收到的数据发回给我,当我运行脚本时它看起来没有收到任何东西,但是当我从解释器发送数据时它收到了所有东西。 arduino 代码的代码现在看起来像这样:

int redled = 12;
int whiteled = 48;

void setup()
{
Serial.begin(9600);
pinMode(redled,OUTPUT);
pinMode(whiteled,OUTPUT);
}

void loop()
{
if(Serial.available())
{
char cmd = Serial.read();
switch(cmd)
{
case'r':
digitalWrite(redled,HIGH);
delay(2000);
digitalWrite(redled,LOW);
Serial.println("Cmd received");
break;

case'w':
digitalWrite(whiteled,HIGH);
delay(2000);
digitalWrite(whiteled,LOW);
Serial.println("Cmd received");
break;
}
}
}

最佳答案

问题是启动端口需要一些时间。在 ser = serial.Serial()

之后立即添加 5 秒的 sleep
time.sleep(5)

关于python - pySerial write() 在 Python 解释器中运行良好,但在 Python 脚本中运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28192190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com