【发布时间】:2019-12-31 10:42:24
【问题描述】:
我正在尝试通过串行向 Arduino 写入一个字符,该字符运行代码来控制 IR-led 以进行远程控制。
在 Arduino 终端中运行代码有效,LED 完成其工作。 Arduino 代码有效。
在shell中逐行运行,没问题。
但是当我运行“python remote.py”时它不起作用。
我尝试了一段额外的代码,以确保 shell 和解释器在命令提示符下运行相同版本的 python。
import sys
sys.stdout.write("Hello from Python %s\n" % (sys.version,))
当我启动它时,它会生成“Python 3.7.3”,这是 shell 的版本。
这是整个 Python 代码:
import serial
ser = serial.Serial('COM7', 9600)
ser.write('a'.encode())
ser.close()
我意识到这不是很“Pythonic”,甚至不是完全正确,而是简化并尝试 并且尽可能少的代码我删掉了所有不需要的东西。 由于代码在shell中运行,它的正确性如何?
Arduino 代码在这里:https://pastebin.com/7T2yFzrL
我在 Windows 10 下使用 Python 3.7.3 和 Notepad++
我找到了这个帖子:Arduino Python3 script, 但我不明白我的代码如何在 shell 而不是脚本中工作?它可能是代码点(这意味着我不明白)但在这种情况下我该如何纠正它?也没有显示错误。我希望有人能引导我朝着正确的方向前进。
/最好的问候马格努斯
根据 T. Feix 的建议尝试添加我的代码,如下所示:
#! python3
import serial
try:
ser = serial.Serial('COM7', 9600)
ser.write('a'.encode())
ser.close()
except input() as ex:
print(ex)
不幸的是它什么都没有返回,没有错误,什么都没有?
我在 Arduino 上的代码需要一个字符,而 Python 似乎发送一个字节,这可能是错误吗?如果是,我该如何更改这两种类型?
现在已将 Arduino 上的预期数据类型更改为字节,代码仍然可以在终端中运行,但在我运行 Python 脚本时没有运气。
【问题讨论】:
-
“它不起作用”是什么意思?
-
代码似乎在运行,即 Arduino 接收到一些东西并且板载 LED 闪烁,但 IR-LED 上没有任何反应。虽然当我运行两段不同的代码时,它在 Arduino 上的闪烁并不相同。不知道为什么?
-
命令提示符在执行停止时自动关闭窗口。可能会发生错误,但 cmd 提示会在发生后立即关闭窗口。怎么做:将您的整个代码包装在
try .. except中。对于除类型input()。然后您可以阅读错误消息并告诉我们。 -
或者尝试使用IDLE Python。您可以在下载 Python 的同一个网站上找到它。
-
我在运行之前打开了一个命令提示符窗口,所以它在执行后保持打开状态,但我尝试了这样的新代码 #! python3 import serial try: ser = serial.Serial('COM7', 9600) ser.write('a'.encode()) ser.close() except input() as ex: print(ex) 但它没有显示任何错误。我也弄错了吗?
标签: python python-3.x arduino pyserial