Xcode,带有Arduino的C ++串行端口

xcode, c++ serial port with arduino

本文关键字:串行端口 Arduino 带有 Xcode      更新时间:2023-10-16

我正在制作一个非常简单的C ++程序,它通过串行端口向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<<"ngive me the anglenn";
        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应用程序中的tools>serial port>/div/tty.usbmodem3a21中检查了它是正确的端口。

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

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

确实,">Linux 中的所有内容都是文件",但不是字面意思 -->本质是哪种类型的文件 - 在您的情况下,您将端口视为普通文件(即类似 txt 文件(,而您需要将其视为设备文件,所以没有fopen,但是:

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

以下是关于串口文件接口的良好参考这个甚至是面向arduino的

我与这段代码建立了联系:

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