xcode,带有arduino的c ++串口


一生浮华
2025-03-11 02:58:04 (10天前)


我做了一个非常简单的c ++程序,它发送一个角度

Arduino的
</跨度>
通过串口然后

Arduino的
</跨度>
将该角度应用于伺服电机。我知道Unix看到串口设备就像一个文件,事实上这是c ++代码:

include&lt; iostream&gt;

include&lt; unistd.h&gt;

using namespace std;

int main()
{
int angole;
文件*

Arduino的
</跨度>
;


{


Arduino的
</跨度>
= fopen(“/ dev / tty.usbmodem3a21”

4 条回复
  1. 0# 陆离 | 2019-08-31 10-32



    我得到了这段代码的连接:




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

    2. </code>

  2. 1# Minions | 2019-08-31 10-32



    我上传了代码,现在这是Xcode(c ++)代码:



    1.   #include <iostream>
    2. include

      include

      include

      include

      include

      using namespace std;

    3. int main()
      {
      string angle;
      int arduino;

    4. cout<<" i'm going to connect \n\n";
    5. do
    6. {
    7.     cout<<"\n\n i'm in the loop \n\n";
    8.     arduino = open("/dev/tty.usbmodem3a21", O_WRONLY);
    9.     cout<<"\n\n i'm going to check the connection\n\n";
    10.     if(arduino == -1)
    11.     {
    12.         cout<<"\n\n error \n\n";
    13.     }
    14.     else
    15.     {
    16.         do
    17.         {
    18.             cout<<"\n\n write a letter between a and c \n\n";
    19.             cin>>angle;
    20.             write(arduino,&angle,1);
    21.         }while(angle=="a" || angle=="b" || angle=="c");
    22.     }
    23. }while(arduino == -1);
    24. close(arduino);
    25. }

    26. </code>


    这是arduino的:



    1.   #include <Servo.h>
    2. Servo servo;
      const int pinServo = 2;
      char angle;

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

    4. }

    5. void loop()
      {
      if(Serial.available()>0)
      {
      angle = Serial.read();

    6.    if(&angle=="a")
    7.    {
    8.        servo.write(20);
    9.    }
    10.    else if(&angle == "b")
    11.    {
    12.        servo.write(90);
    13.    }
    14.    else if(&angle == "c")
    15.    {
    16.        servo.write(180);
    17.    }
    18.    else
    19.    {
    20.        servo.write(0);
    21.    }
    22. }
    23. }

    24. </code>


    我仍然有同样的问题,它写道“我要连接”和“我在循环中”然后什么也没有,所以它停在

    open

    功能,我认为代码也可能有一些问题。



    是否有c ++代码可以从arduino中获取某些反馈以及它应该是什么?



    我也确定连接不是时间问题,我让它运行了很长时间。


  3. 2# Minions | 2019-08-31 10-32



    确实, ”

    Linux中的所有内容都是一个文件

    “,但不是字面意思 - &gt;本质是哪种类型的文件 - 在您的情况下,您将端口视为普通的vanilla文件(即类似txt文件),而您需要将其视为

    设备
    </强>
    文件,所以没有

    fopen

    但是:




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

    2. </code>




    以下

    是关于串口文件接口的一个很好的参考
    还有这个



    甚至是arduino导向的


登录 后才能参与评论