Xcode,带有Arduino的C ++串行端口
xcode, c++ serial port with arduino
我正在制作一个非常简单的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);
相关文章:
- Qt Q串行端口未编程设备未关闭
- 在 linux c++ 中没有通过串行端口发送的数据
- 检查串行端口Linux中是否有传入数据(cbInQue for linux)
- 在不传输的情况下更改 Win32 中的串行端口波特率
- 增强 ASIO 和串行端口异步读取
- 串行端口写入究竟如何从缓冲区实际写入数据?
- 如何将参数这些串行端口传递到函数中
- 从 C/C++ 访问 Android 中的串行端口
- Qt两个串行端口发送和接收
- 通过串行端口从GPS传感器读取
- 提升 asio 串行端口"end of file"
- 通过串行端口发送多个值
- 与QSerialPort配合使用的串行端口仿真
- 如何通过boost::asio和shared_ptr创建串行端口
- 串行端口编码
- 如何通过串行端口可靠地向Arduino发送大弦
- 在 mac 上使用 c++ 和 Xcode 打开带有 arduino 的串行端口
- Xcode,带有Arduino的C ++串行端口
- Arduino和PC之间通过Usb串行端口(C++控制台应用程序)进行通信
- Arduino串行端口,数据未到达