Python+;使用Mac OS X的Arduino

Python+;使用Mac OS X的Arduino,python,macos,serial-port,arduino,Python,Macos,Serial Port,Arduino,我的Arduino和Python之间的通信有问题。我有几个问题希望能得到回答,但首先也是最重要的是,我需要建立一种联系 对于Windows,解决方案显然相当方便,但在Mac OS X上,我显然需要访问一些系统文件(我不熟悉)。Python文档向我指出了具体的帖子,但我认为它并不完全符合我的目的 在这一点上,试图仅仅看到沟通的证据,我已经尝试过了 阿杜伊诺: void setup(){ Serial.begin(9600); } void loop() { int d = Ser

我的Arduino和Python之间的通信有问题。我有几个问题希望能得到回答,但首先也是最重要的是,我需要建立一种联系

对于Windows,解决方案显然相当方便,但在Mac OS X上,我显然需要访问一些系统文件(我不熟悉)。Python文档向我指出了具体的帖子,但我认为它并不完全符合我的目的

在这一点上,试图仅仅看到沟通的证据,我已经尝试过了

阿杜伊诺:

void setup(){
    Serial.begin(9600);
}

void loop()
{
    int d = Serial.read();
    Serial.println(d,BYTE);
}
Python:(基本上来自于前面提到的链接…)


正如这里所证明的,我真的不明白我导入的模块到底在做什么。在阅读文档时,我看不到通过串口发送数据的明显方式。因此,无论这个程序的输出是什么,它都会自动发送,我猜对了吗?

用Python与Arduino(或任何串行微控制器)通信的最简单方法是使用

下面是一个例子:

import serial
s = serial.Serial(port='/dev/tty.usbmodemfa141', baudrate=9600)

s.write('text')
s.read()
s.readline()

PS:如果您使用的是Python 3,那么应该发送字节而不是字符串(即,
b'text'
)。

我在Linux下使用Perl完成了这项工作,但没有使用Python或Mac的经验。我可以给你一些建议

首先,在Python程序中,您需要将USB端口的正确设备地址放入
serialPath
中,否则数据将无法到达Arduino。在Linux中,我在连接主板并从中找到设备名称后,做了一个lsusb

在Arduino代码中,将其更改为

void loop()
{
   if(Serial.available() > 0)
   {
       d = Serial.read();
       Serial.println(d,BYTE);
   }
}

否则,如果没有数据,您将转储一堆-1。

在我这边,我已经使用sudo命令解决了OSX上的串行错误;我认为在OSX上,您必须获得管理员权限,才能在pip安装后使用Serial与throw/dev/cu.usbmodem14101通信。

这是迄今为止最简单的方法,+1我认为pyserial在OSX上不起作用。。。我弄错了吗?它在OSX上工作。我只是在Windows 64位下的pyserial有问题哦,好吧。呵呵。我刚安装好,似乎工作正常。。。这是怎么回事?只是出于好奇。。。我最初打算使用pyserial,但我认为这表明它对osx不起作用。。。。我不知道,但是OSX是一个基于BSD的系统,所以你不必担心第二个url。
void loop()
{
   if(Serial.available() > 0)
   {
       d = Serial.read();
       Serial.println(d,BYTE);
   }
}