收藏 分享(赏)

linux 串口编程.docx

上传人:HR专家 文档编号:6561240 上传时间:2019-04-17 格式:DOCX 页数:18 大小:18.73KB
下载 相关 举报
linux 串口编程.docx_第1页
第1页 / 共18页
linux 串口编程.docx_第2页
第2页 / 共18页
linux 串口编程.docx_第3页
第3页 / 共18页
linux 串口编程.docx_第4页
第4页 / 共18页
linux 串口编程.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、这几天,由于长春门检系统项目的需要,涉及到了读卡器信息的串口读取,所以在 Linux下串口信息的读取有了一点心得体会。1. 打开串口与其他的关于设备编程的方法一样,在 Linux 下,操作、控制串口也是通过操作起设备文件进行的。在 Linux 下,串口的设备文件是/dev/ttyS0 或/dev/ttyS1 等。因此要读写串口,我们首先要打开串口:char *dev = “/dev/ttyS0“; /串口 1int fd = open( dev, O_RDWR ); /| O_NOCTTY | O_NDELAY if (-1 = fd) perror(“Cant Open Serial Por

2、t“);return -1; else return fd;2. 设置串口速度打开串口成功后,我们就可以对其进行读写了。首先要设置串口的波特率:int speed_arr = B38400, B19200, B9600, B4800, B2400, B1200, B300,B38400, B19200, B9600, B4800, B2400, B1200, B300, ;int name_arr = 38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, 19200, 9600, 4800, 2400, 1200, 300, ;void set_s

3、peed(int fd, int speed)int i; int status; struct termios Opt;tcgetattr(fd, for ( i= 0; i 0)/printf(“nLen %dn“,nread); memcpy(count+=nread;if(count=13)buffcount+1 = 0; /printf( “n%s“, buff);break;/break;/return buff;close(fd); pthread_exit(NULL);/close(fd); / exit (0);这是我原来的程序,其实把 VMIN 设置以后,可以改成:void

4、 getcardinfo(char *buff)int fd;int nread,count=0;char tempbuff13;char *dev = “/dev/ttyS0“; /串口 1fd = OpenDev(dev);set_speed(fd,9600);if (set_Parity(fd,8,1,N) = FALSE) printf(“Set Parity Errorn“);/return -1;nread = read(fd, buff, 13)close(fd); 5. 程序完整代码:#include /*标准输入输出定义*/#include /*标准函数库定义*/#inclu

5、de /*Unix 标准函数定义*/#include #include #include /*文件控制定义*/#include /*PPSIX 终端控制定义*/#include /*错误号定义*/#define FALSE -1#define TRUE 0/*brief 设置串口通信速率*param fd 类型 int 打开串口的文件句柄*param speed 类型 int 串口速度*return void*/int speed_arr = B38400, B19200, B9600, B4800, B2400, B1200, B300,B38400, B19200, B9600, B480

6、0, B2400, B1200, B300, ;int name_arr = 38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, 19200, 9600, 4800, 2400, 1200, 300, ;void set_speed(int fd, int speed)int i; int status; struct termios Opt;tcgetattr(fd, for ( i= 0; i 0)/printf(“nLen %dn“,nread); memcpy(count+=nread;if(count=13)buffcount+1 = 0; /printf( “n%s“, buff);break;/break;/return buff;close(fd); pthread_exit(NULL);/close(fd); / exit (0);本文来自 CSDN 博客,转载请标明出处:http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报