xcode,带有arduino的c ++串口

时间:2014-12-16 22:33:02

标签: c++ c xcode serial-port arduino

我正在制作一个非常简单的c ++程序,它通过一个串口向arduino发送一个角度,然后arduino将这个角度应用到伺服电机上。我知道Unix看到串口设备就像一个文件,实际上这是c ++代码:

#include <iostream>
#include <unistd.h>

using namespace std;

int main()
{
    int angole;
    FILE * arduino;

    do
    {
        arduino = fopen("/dev/tty.usbmodem3a21","w");

        cout<<"\n\give me the angle\n\n";
        cin>>angole;

        fprintf(arduino,"%d",angole);
        sleep(1);

    }while(angole>=0 && angole<=179);

}

这是arduino的:

#include <Servo.h>

Servo servo;
const int pinServo = 2;
int angle;

void setup()
{
    Serial.begin(9600);
    servo.attach(pinServo);
    servo.write(0);

}

void loop()
{
    if(Serial.available()>0)
    {  
       angle = Serial.read();
      servo.write(angle);
    }
}

我还在arduino应用程序中检查了工具&gt;串口&gt; /div/tty.usbmodem3a21,它是正确的端口。

问题是程序停在arduino = fopen(&#34; /dev/tty.usbmodem3a21" ;,&#34; w&#34;);因为它甚至没有写出消息&#34;给我一个角度&#34;。

例如,当我在open函数中写入错误的端口时,它会写入消息。

2 个答案:

答案 0 :(得分:2)

确实,“ Linux中的所有内容都是文件”,但不是字面上的 - &gt;本质上是哪种类型的文件 - 在您的情况下,您将端口视为普通的文件(例如txt文件),而您需要将其视为设备文件,因此没有fopen但是:

fd = open("/dev/tty.usbmodem3a21", O_RDWR | O_NOCTTY | O_NDELAY);

following是关于串口文件接口的一个很好的参考 这one甚至是面向arduino的

答案 1 :(得分:0)

我与此代码建立了联系:

arduino = open("/dev/tty.usbmodemfa131", O_RDWR | O_NOCTTY | O_NDELAY);