gcc编译器无法识别我在Raspberry Pi 3中使用串行端口的代码

时间:2017-04-11 13:26:43

标签: c++ gcc raspberry-pi

我正在使用以下代码直接在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中显示的错误:

error

所以我想我错过了一些东西,我已经添加了串口的所有库,但是我不知道是否应该在线上添加一些东西用于编译,就像我使用opencv库一样。提前感谢您的回答:)

1 个答案:

答案 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);