我正在使用以下代码直接在Raspberry Pi 3终端上编译和运行C ++ / OpenCV程序:
g ++ pkg-config --cflags --libs opencv
name.cpp -o name
我一直这样工作没有问题,但现在我想通过串口向Arduino发送一些像坐标和数字的结果,我试着使用这段代码:
#include <sstream>
#include <string>
#include <iostream>
#include <fstream>
#include <sys/time.h>
#include <termios.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
//######################################################################
int fd = open("/dev/ttyAMS0", O_RDWR);
if (fd == -1) {
perror("/dev/ttyAMS0");
return 1;
}
struct termios tios;
tcgetattr(fd, &tios);
// disable flow control and all that, and ignore break and parity errors
tios.c_iflag = IGNBRK | IGNPAR;
tios.c_oflag = 0;
tios.c_lflag = 0;
cfsetspeed(&tios, B9600);
tcsetattr(fd, TCSAFLUSH, &tios);
// the serial port has a brief glitch once we turn it on which generates a
// start bit; sleep for 1ms to let it settle
usleep(1000);
// output to serial port
char msg[] = "hi there";
write(fd, msg, strlen(msg));
但是现在每次我尝试编译时都会得到图像Here中显示的错误:
所以我想我错过了一些东西,我已经添加了串口的所有库,但是我不知道是否应该在线上添加一些东西用于编译,就像我使用opencv库一样。提前感谢您的回答:)
答案 0 :(得分:0)
我无法添加评论,所以我会回答我对您的问题的看法。 看起来你的代码写在全局范围外的任何函数体。
你不能在任何函数体中使用if语句。 尝试将if语句括在函数体中。
这样的事情:
void chec(int fd) {
if (fd == -1) {
perror("/dev/ttyAMS0");
exit(1);
}
}
int fd = open("/dev/ttyAMS0", O_RDWR);
check(fd);