自己做网站要固定ip,百度sem竞价,玛沁县网站建设公司,网上翻译网站做译员1. stty命令 stty命令的英文解释: 很明显stty有一个-F参数 所以准确的说: stty命令是设置当前终端驱动程序(也有可能直接配置了硬件#xff0c;这点目前不清楚)的属性#xff0c;使当前终端的驱动程序能够使能/去使能一些特殊字符的识别与处理等等
2. stty命令的结构 3. 终端…1. stty命令 stty命令的英文解释: 很明显stty有一个-F参数 所以准确的说: stty命令是设置当前终端驱动程序(也有可能直接配置了硬件这点目前不清楚)的属性使当前终端的驱动程序能够使能/去使能一些特殊字符的识别与处理等等
2. stty命令的结构 3. 终端特殊字符(选)
详见Linux_UNIX系统编程手册下62.4 终端特殊字符这里只选一些来说明:
1). 回车符ascii十进制13控制字符^M, 转义字符\r 2). 擦除字符ascii码127控制字符是^ 3). 中断(INTR)字符, ascii码是3控制字符是^C 4). NL换行符ascii码是10控制字符是^J 5). START/STOP字符ascii码分别是17与19控制字符分别是^Q与^S, 也被称为XON/XOFF 这里需要搞清楚的概念是: IXON/IXOFF,XON/XOFF是什么意思:
IXON/IXOFF终端标志 XON/XOFF: 特殊字符XON: ascii码17控制字符^Q, XOFFascii码19控制字符^S
ASCII 表 | 菜鸟教程 这里还需要搞清楚XON/XOFF流控的原理是什么: 4. 终端标志(选)
BRKINT ECHO ICANON OPOST 5. 实验
*SETUP介绍:
正点原子ALPHA开发板正点原子USB转换器由于我的转换器芯片是CH340所以需要安装两个ko(镜像已经编译出来了只需要insmod) 整个SETUP如下图:(RS232线序见前一篇公-母) USB转换器被抽象为/dev/ttyUSB0(sender)COM3被抽象为/dev/ttymxc2(receiver)
sender的终端驱动配置: 1). 实验1ICANONICRNL
receiver的终端驱动配置: 测试代码为:
#include strings.h
#include errno.h#include sys/types.h
#include sys/stat.h
#include fcntl.h
#include unistd.h#define BUFSIZE (1024)int main(void)
{int fd open(/dev/ttyUSB0, O_RDWR);if (fd 0) {printf(sender open failed!\n);return -1;}int ret, i;char input;char buf[BUFSIZE] {0, 13, \n};char recv_buf[BUFSIZE] {0};while(1) {memset(recv_buf, 0x00, sizeof(recv_buf));printf(input a char:);input getchar();getchar(); /* eat the NL */buf[0] input;write(fd, buf, strlen(buf));ret read(fd, recv_buf, sizeof(recv_buf));for (i 0; i ret; i) {printf(recv:%#x\n, recv_buf[i]);}sleep(2);}return 0;
} 结果:
rootATK-IMX6U:/# cat /dev/ttymxc2
[1] 880
rootATK-IMX6U:/#
rootATK-IMX6U:/#
rootATK-IMX6U:/#
rootATK-IMX6U:/#
rootATK-IMX6U:/#
rootATK-IMX6U:/#
rootATK-IMX6U:/# ./a.out
input a char:a
arecv:0x61
recv:0xa
recv:0xa
input a char:b
brecv:0x62
recv:0xa
recv:0xa
input a char:
2). 实验2ICANONOPOSTONLCR
sender的配置不变receiver的配置如下: 测试代码不变结果如下:
rootATK-IMX6U:/# ./a.out
input a char:a
a
recv:0x61
recv:0xd
recv:0xd
recv:0xa
input a char:b
b
recv:0x62
recv:0xd
recv:0xd
recv:0xa
input a char:c
c
recv:0x63
recv:0xd
recv:0xd
recv:0xa
input a char: 3). IXON
基本原理示意图: 我们看到IMX6ULL是设置了IXON与IXOFF软件流控标志的且XONctrlQXOFFctrlS
当我们在串口上敲ctrS时发现串口动不了了这是因为PC端通过TX发送了特殊字符XOFFIMX6ULL端的终端驱动识别到这个特殊字符并在开启了IXON输出控制的时候即使有echo标志IMX6ULL的TX也不会发东西回来所以看不到回显表象就是串口不动了当继续敲击几个字符后再敲ctrlQ时发现刚才敲击的字符又出现了这是因为IMX6ULL的终端驱动程序识别了特殊字符XON并开启了输出控制IXON而且设置了echo特殊标志所以又会回显出来表象就是串口又有反应了
终端回显参考: APUE学习62章终端(一): 整体概览_Andy Pines的博客-CSDN博客