阅读量:0
在C++中,你可以使用POSIX的串行通信API(如open()
, read()
, write()
等)或者使用第三方库(如Boost.Asio、libserial等)来打开串口并进行通信
#include<iostream> #include <fcntl.h> #include <termios.h> #include <unistd.h> #include<string> int main() { // 打开串口 int fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); if (fd == -1) { std::cerr << "无法打开串口"<< std::endl; return 1; } // 配置串口参数 struct termios options; tcgetattr(fd, &options); cfsetispeed(&options, B9600); cfsetospeed(&options, B9600); options.c_cflag |= (CLOCAL | CREAD); options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); options.c_iflag &= ~(IXON | IXOFF | IXANY); options.c_oflag &= ~OPOST; options.c_cc[VMIN] = 0; options.c_cc[VTIME] = 10; tcsetattr(fd, TCSANOW, &options); // 发送数据 std::string send_data = "Hello, World!"; write(fd, send_data.c_str(), send_data.size()); // 接收数据 char buffer[256]; ssize_t received = read(fd, buffer, sizeof(buffer)); if (received > 0) { std::cout << "接收到的数据: "<< std::string(buffer, received)<< std::endl; } else { std::cerr << "未接收到数据"<< std::endl; } // 关闭串口 close(fd); return 0; }
这个示例代码展示了如何打开一个名为/dev/ttyS0
的串口,配置其参数(波特率、数据位、停止位等),发送一些数据,然后接收回复。请注意,你需要根据实际情况修改串口设备名称和参数。
编译并运行此程序时,确保你有足够的权限访问串口设备。在Linux系统上,你可能需要使用sudo
命令运行程序。