ser2net过滤特殊字符
来源:互联网 发布:越南 共产 知乎 编辑:程序博客网 时间:2024/05/16 06:14
许多流行的linux串口编程的版本中都没对c_iflag(termios成员变量)这个变量进行有效的设置,这样传送ASCII码时没什么问题,但传送二进制数据时遇到0x0d,0x11和0x13却会被丢掉。不用说也知道,这几个肯定是特殊字符,被用作特殊控制了。关掉ICRNL和IXON选项即可解决。
c_iflag &= ~(ICRNL | IXON);
- 0x0d 回车符CR
- 0x11 ^Q VSTART字符
- 0x13 ^S VSTOP字符
- ICRNL 将输入的CR转换为NL
- IXON 使起动/停止输出控制流起作用
在《UNIX环境高级编程第二版》第18章第11小节看到把终端I/O设置为原始模式(串口通讯就是终端I/O的原始模式)时输入属性设置为
term.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
这三个数据是串口通信里面特殊字符,具有特别的意义,会被ser2net过滤掉,那么怎么保证数据完整无误地传输呢?
方法一:
修改ser2net源代码,选择在OpenWRT源码编译镜像的时候就将此软件包配置好,简单的方法就是修改编译所需软件包中的配置文件,文件路径:/dl/ser2net-2.9.1.tar.gz(请根据编译系统所需版本号选择修改)
tar -zxvf ser2net-2.9.1.tar.gz
进入我们解压的目录
cd ser2net-2.9.1/ls
可以找到ser2net.config,对其进行编辑
vi ser2net.conf
将XONXOFF删除,将ttyS0改为ttyATH0,另外此处还可以修改端口号及串口波特率。wq保存退出,然后退回到dl目录,删除之前的软件包,重新压缩。
修改后:
cd ..rm ser2net-2.9.1.tar.gztar –zcvf ser2net-2.9.1.tar.gz ser2net-2.9.1/
方法二
用winscp登陆WIFI板,转到/etc/目录,打开ser2net.conf文件,找到如下配置:
2001:raw:600:/dev/ttyATH0:9600 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
将其中蓝色字体部分删除,变为:
2001:raw:600:/dev/ttyATH0:9600 NONE 1STOPBIT 8DATABITS LOCAL -RTSCTS
保存,再重启WIFI板,ser2net就不再会过滤掉特殊字符了。
- ser2net过滤特殊字符
- ASP特殊字符过滤
- ASP特殊字符过滤
- ASP过滤特殊字符
- 过滤特殊字符
- 过滤特殊字符
- C++ 过滤特殊字符
- 过滤sql特殊字符
- php特殊字符过滤
- php特殊字符过滤
- java过滤特殊字符
- js过滤特殊字符
- 特殊字符过滤
- java 过滤特殊字符
- 过滤特殊字符
- 过滤特殊字符
- java 过滤特殊字符
- js过滤特殊字符
- java包的定义
- PhpStorm 配置php7.0环境
- 二叉树的所有路径
- OOAD实验二
- ecshop遇到的用户频繁退出和导致跨域问题
- ser2net过滤特殊字符
- 392. Is Subsequence
- wait,notify,非阻塞队列实现生产者,消费者模型
- Qt超强精美绘图控件
- vc中ADO执行存储过程方法记录
- Java中如何把一下字符串转换成map
- 多线程(1)- 线程的创建与启动
- yolo源码分析之demo.py
- [JZOJ5077]树的难题