我有一个 Arduino 微控制器在 COM3 上监听。使用 arduino IDE 和串行监视器可以很好地发送和接收数据。
我想从 Python 发送和接收数据,但如何做到这一点并不是很明显。(如果它更容易的话,我也可以在 C# 中这样做。)
我找到了 arduino_serial.py,但它只适用于 Unix。幸运的是,我安装了 Ubuntu 10.10 VBox。但是,我不知道该 VM 是否可以访问串行端口,或者是否需要特殊步骤才能这样做。
我还发现了 pySerial,它看起来很合法。但是,我也不确定如何使用它。它需要串行端口名称。我如何找出这些的有效值是什么?
例如,pySerial
提到您可以使用以下命令“在“19200,8,N,1”处打开命名端口,1s 超时”:
>>> ser = serial.Serial('/dev/ttyS1', 19200, timeout=1)
但我不知道你怎么知道这/dev/ttyS1
是一个有效的端口名称。
是否有很好的文档可以开始这方面的工作?
更新:我正在使用带有 arduino_serial 的 Ubuntu,但仍然遇到问题。
该程序在 Arduino 上运行:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
Serial.print((char)Serial.read());
}
}
我看到一个名为的端口tty0
可用:
foo@bar:~/baz$ dmesg | grep tty
[ 0.000000] console [tty0] enabled
然后我尝试连接arduino_serial
:
foo@bar:~/baz$ sudo python
[sudo] password for foo:
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import arduino_serial
>>> sp = arduino_serial.SerialPort("/dev/tty0", 9600)
>>> sp.write("foo")
>>> sp.read_until("\n")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "arduino_serial.py", line 107, in read_until
n = os.read(self.fd, 1)
OSError: [Errno 11] Resource temporarily unavailable
为什么我会收到此错误?我究竟做错了什么?