[英]Python + Arduino with Mac OS X
我在Arduino和Python之间进行通信时遇到问题。 我有几个问题希望可以回答,但首先也是最重要的是,我需要简单地建立连接。
对于Windows,显然解决方案相当方便,但在Mac OS X上,我显然需要访问一些系统文件(我不熟悉)。 Python文档向我指出了具体的帖子Re:Python可以做串口吗? ,但我不认为这完全符合我的目的。
在这一点上,试图仅仅看到沟通的证据,我已经尝试过这个。
Arduino的:
void setup(){
Serial.begin(9600);
}
void loop()
{
int d = Serial.read();
Serial.println(d,BYTE);
}
Python :(几乎来自上面提到的链接...)
#!usr/bin/python
import os, fcntl, termios, sys
serialPath = '/dev/tty.usbmodemfa141'
ser= os.open(serialPath, 0)
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc] = range(7)
settings = termios.tcgetattr(ser)
settings[ospeed] = termios.B9600
settings[ispeed] = termios.B0
print 2
正如这里所证明的那样,我真的不明白我导入的模块到底在做什么。 在阅读文档时,我看不到通过串行发送数据的明显方法。 所以我正确地猜测无论该程序的输出是什么,它都将自动发送?
在我这边,我使用sudo命令解决了OSX上的串行错误; 我认为在OSX上你必须获得管理员权限,在pip安装后与serial一起传递throw /dev/cu.usbmodem14101。
我在Linux下使用Perl完成了这项工作,但没有使用Python或Mac的经验。 我可以给你一些指点。
首先,在Python程序中,您需要在serialPath
为USB端口设置正确的设备地址,否则您的数据将无法到达Arduino。 在Linux中,我在连接电路板后找到了lsusb,并从中找到了设备名称。
在你的Arduino代码中改变它
void loop()
{
if(Serial.available() > 0)
{
d = Serial.read();
Serial.println(d,BYTE);
}
}
否则,如果没有数据,你将倾倒一堆-1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.