标签:进程 输入 获取 isp 波特 通过 main log print
在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 ); }
标签:进程 输入 获取 isp 波特 通过 main log print
原文地址:http://www.cnblogs.com/ynxf/p/6105072.html