首页 > 代码库 > Linux下的串口编程
Linux下的串口编程
打开串口
在Linux系统下,打开串口是通过使用标准的文件打开函数操作的。
#include <fcntl.h>
/* 以读写的方式打开 */
int fd = open( "/dev/ttyUSB0",O_RDWR);
设置串口
所有对串口的操作都是通过结构体 struct termios 和 几个函数实现的。
tcgetattr //获取属性 tcsetattr //设置属性 cfgetispeed //得到输入速度 cfsetispeed //设置输入速度 cfgetospeed //得到输出速度 cfsetospedd //设置输出速度 tcdrain //等待所有输出都被传输 tcflow //挂起传输或接收 tcflush //刷清未决输入和输出 tcsendbreak //送break字符 tcgetpgrp //得到前台进程组ID tcsetpgrp //设置前台进程组ID
tcgetattr( 0,&oldstdio); //获取默认的配置选项 存储到oldstdio结构体中
tcgetattr( fd,&oldstdio); //获取当前配置选项 存储到oldstdio结构体中
tcsetattr( fd,TCSANOW,&oldstdio); //TCSANOW 修改立即生效
cfgetispeed( &oldstdio); //得到波特率
cfsetispeed(&oldstdio, B115200 ) //设置波特率为115200
即可使用read或open来操作串口的发送与接收。
测试代码:
#include <stdio.h> #include <fcntl.h> #include <termios.h> #include <unistd.h> #include <string.h> int serial_send( int fd, char *Data ); int main() { int fd; int num; struct termios oldstdio; fd = open("/dev/ttyUSB0", O_RDWR ); if( -1==fd ) { printf("cannot open /dev/ttyUSB0\r\n"); return -1; } tcgetattr( fd, &oldstdio); cfsetispeed(&oldstdio, B115200); tcsetattr( fd, TCSANOW, &oldstdio); tcflush( fd, TCIFLUSH ); num = serial_send( fd,"Serial BAUND is default \r\n" ); close(fd); return 0; } int serial_send( int fd, char *Data ) { int string_num; string_num = strlen(Data); return write( fd,Data, string_num ); }
Linux下的串口编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。