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:/