正确的Linux串口初始化序列
发布时间:2020-12-14 01:56:46 所属栏目:Linux 来源:网络整理
导读:我写了一个必须在 Linux上使用串口的应用程序,尤其是ttyUSB.使用标准的select()/ read()循环和write()执行读写操作,并且它们可能没有任何问题,但初始化代码(或缺少某些部分)会损坏tty子系统中的某些内容.这里是: vuxboot(string filename,unsigned baud = B
我写了一个必须在
Linux上使用串口的应用程序,尤其是ttyUSB.使用标准的select()/ read()循环和write()执行读写操作,并且它们可能没有任何问题,但初始化代码(或缺少某些部分)会损坏tty子系统中的某些内容.这里是:
vuxboot(string filename,unsigned baud = B115200) : _debug(false) { _fd = open(filename.c_str(),O_RDWR | O_NOCTTY); if(_fd < 0) throw new io_error("cannot open port"); // Serial initialization was written with FTDI USB-to-serial converters // in mind. Anyway,who wants to use non-8n1 protocol? tcgetattr(_fd,&_termios); termios tio = {0}; tio.c_iflag = IGNPAR; tio.c_oflag = 0; tio.c_cflag = baud | CLOCAL | CREAD | CS8; tio.c_lflag = 0; tcflush(_fd,TCIFLUSH); tcsetattr(_fd,TCSANOW,&tio); } 另一个tcsetattr(_fd,TCSANOW和& _termios)位于析构函数中,但它无关紧要. 无论有没有这个termios初始化,在应用程序退出后系统中都会发生奇怪的事情.有时普通猫(或高清)每次都会立即打印任何东西或相同的东西,有时候它正在等待并且不显示任何肯定会发送到端口的数据;和close()(read(),但不是每次都发出一个奇怪的警告到dmesg referring to usb-serial.c. 我检查了硬件和固件几十次(即使在不同的机器上),我确信它按预期工作;此外,我剥离固件只是一遍又一遍地打印相同的消息. 如何在不破坏任何东西的情况下使用串口?谢谢. 解决方法
点击WARN_ON行可能意味着您遇到了内核错误.我知道最近在改进USB串行驱动器方面做了很多工作;我建议尝试更新的内核,和/或询问linux-usb@vger.kernel.org邮件列表.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – 使用16k块大小安装ext3分区?
- liunx 错误提示E45: 'readonly' option is set (ad
- nginx django 出现413 Request Entity Too Large(请求实体过
- linux中的ssh端口转发(隧道)
- linux – git:gitk有“按日期排序”的命令行选项吗?
- cvsnt 和wincvs 的安装配置既简单操作 2007-07-28 11:33
- 如何在Linux上检测Twisted的非优雅断开连接?
- linux – OSX上的应用程序无法生成超过2048个线程
- Linux下的线程获取方法
- 没有密码的crontab中的简单rsync