- 积分
- 13
贡献80
飞刀20 FD
注册时间2024-6-5
在线时间2 小时
|
楼主 |
发表于 2024-6-18 20:23:13
|
显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <errno.h>
#include <string.h>
int main() {
int fd;
struct termios options;
char buffer[255];
int bytes_read;
// 打开串口设备
fd = open("/dev/ttyCH341USB0", O_RDWR | O_NOCTTY | O_NDELAY );
if (fd == -1) {
perror("open_port: Unable to open serial port - ");
return(-1);
}
// 获取并配置串口选项
tcgetattr(fd, &options);
cfsetispeed(&options, B115200); // 输入波特率
cfsetospeed(&options, B115200); // 输出波特率
options.c_cflag |= (CLOCAL | CREAD); // 开启接收
options.c_cflag &= ~CSIZE; // 清除当前数据位设置
options.c_cflag |= CS8; // 8位数据位
options.c_cflag &= ~PARENB; // 关闭校验位
options.c_cflag &= ~CSTOPB; // 1位停止位
options.c_cc[VTIME] = 0; // 非阻塞读取
options.c_cc[VMIN] = 0; // 读取10个字符后返回
tcflush(fd,TCIFLUSH);
tcsetattr(fd, TCSANOW, &options);
// 发送数据
const char data_to_send[] = "Hello, serial port!\n";
write(fd, data_to_send, strlen(data_to_send));
// 接收数据
while(1)
{
// sleep(1);
bytes_read = read(fd, buffer, sizeof(buffer));
//printf("hello\n");
//while(1)
//{}
if (bytes_read > 0)
{
buffer[bytes_read] = '\0'; // 确保字符串以null结尾
printf("bytes_read:%d,Received: '%s'\n",bytes_read, buffer);
bytes_read = 0;
//break;
}
}
// 关闭串口
close(fd);
return 0;
}
|
|