Linux串口编程特别简单问题的解释
2018-02-05 23:11
323 查看
int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300, B38400,
B19200,
B9600, B4800, B2400, B1200, B300};
其中的B是什么意思:
答:
不是B是什么意思,B38400, B19200, B9600, B4800这些都是在串口操作库的头文件中定义好的宏常量,这不是一个数值。你可以理解为:
嵌入式代码open("/dev/ttyso",o_RDWR/O_NOCTTY/O_NDELAY);这个代码说的含义
答:一般的写法是if((fd=open("/dev/ttys0",O_RDWR | O_NOCTTY | O_NDELAY)<0){
perror("open");}这个事常用的一种用法fd是设备描述符,linux在操作硬件设备时,屏蔽了硬件的基本细节,只把硬件当做文件来进行操作,而所有的操作都是以open函数来开始,它用来获取fd,然后后期的其他操作全部控制fd来完成对硬件设备的实际操作。你要打开的/dev/ttyS0,代表的是串口1,也就是常说的com1,后面跟的是一些控制字。int open(const char *pathname, int oflag, …/*, mode_t mode * / ) ;这个就是open函数的公式。控制字可以有多种,我现在给你列出来:
O_RDONLY 只读打开。
O_WRONLY 只写打开。
O_RDWR 读、写打开。
O_APPEND 每次写时都加到文件的尾端。
O_CREAT 若此文件不存在则创建它。使用此选择项时,需同时说明第三个参数mode,用其说明该新文件的存取许可权位。
O_EXCL 如果同时指定了O_CREAT,而文件已经存在,则出错。这可测试一个文件是否存在,如果不存在则创建此文件成为一个原子操作。
O_TRUNC 如果此文件存在,而且为只读或只写成功打开,则将其长度截短为0。
O_NOCTTY 如果p a t h n a m e指的是终端设备,则不将此设备分配作为此进程的控制终端。
O_NONBLOCK 如果p a t h n a m e指的是一个F I F O、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I / O操作设置非阻塞方式。
O_SYNC 使每次w r i t e都等到物理I / O操作完成。
这些控制字都是通过“或”符号分开(|)
通过这些介绍,你的那段代码就不难解释了:是以读写方式、不把该文件作为终端设备、无延时模式打开串口1.
Unix终端I/O函数。作用:清空终端未完成的输入/输出请求及数据。
包含头文件:
函数原型:
参数说明:[1]
返回值说明:
B19200,
B9600, B4800, B2400, B1200, B300};
其中的B是什么意思:
答:
不是B是什么意思,B38400, B19200, B9600, B4800这些都是在串口操作库的头文件中定义好的宏常量,这不是一个数值。你可以理解为:
答:一般的写法是if((fd=open("/dev/ttys0",O_RDWR | O_NOCTTY | O_NDELAY)<0){
perror("open");}这个事常用的一种用法fd是设备描述符,linux在操作硬件设备时,屏蔽了硬件的基本细节,只把硬件当做文件来进行操作,而所有的操作都是以open函数来开始,它用来获取fd,然后后期的其他操作全部控制fd来完成对硬件设备的实际操作。你要打开的/dev/ttyS0,代表的是串口1,也就是常说的com1,后面跟的是一些控制字。int open(const char *pathname, int oflag, …/*, mode_t mode * / ) ;这个就是open函数的公式。控制字可以有多种,我现在给你列出来:
O_RDONLY 只读打开。
O_WRONLY 只写打开。
O_RDWR 读、写打开。
O_APPEND 每次写时都加到文件的尾端。
O_CREAT 若此文件不存在则创建它。使用此选择项时,需同时说明第三个参数mode,用其说明该新文件的存取许可权位。
O_EXCL 如果同时指定了O_CREAT,而文件已经存在,则出错。这可测试一个文件是否存在,如果不存在则创建此文件成为一个原子操作。
O_TRUNC 如果此文件存在,而且为只读或只写成功打开,则将其长度截短为0。
O_NOCTTY 如果p a t h n a m e指的是终端设备,则不将此设备分配作为此进程的控制终端。
O_NONBLOCK 如果p a t h n a m e指的是一个F I F O、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I / O操作设置非阻塞方式。
O_SYNC 使每次w r i t e都等到物理I / O操作完成。
这些控制字都是通过“或”符号分开(|)
通过这些介绍,你的那段代码就不难解释了:是以读写方式、不把该文件作为终端设备、无延时模式打开串口1.
tcflush
Unix终端I/O函数。作用:清空终端未完成的输入/输出请求及数据。包含头文件:
7 |
相关文章推荐
- arm-linux_学习简单串口编程问题
- linux串口编程(termios)相关的使用问题
- Linux 串口编程的一些问题解决
- Linux 下串口简单编程
- linux串口编程 非规范模式 read()问题
- linux串口编程 非规范模式 read()问题
- Linux 串口编程--转载一篇解决了困扰我一个星期问题的文章
- Linux 串口编程中遇到的问题
- Linux 下简单的串口编程
- linux串口编程 非规范模式 read()问题
- Linux串口编程的一些问题解决
- linux下串口编程简单实例
- linux下串口编程简单实例
- linux串口编程 非规范模式 read()问题
- Linux 串口编程中遇到的问题
- Linux下串口编程遇 接收数据错误问题及原因
- linux串口编程 非规范模式 read()问题
- linux串口编程 非规范模式 read()问题
- linux串口编程传送二进制数据时遇到0x0d,0x11和0x13会被丢掉问题
- linux串口编程 非规范模式 read()问题