linux下对2个连通的串口读写遇到的问题
想要分析下zmodem协议,搜索发现linux下的工具lrzsz是一个包含x,y,z modem传输的工具,下载其源码,下载。它可以借助各种串行的接口进行数据传输,比如串口,socket也可以,这点描述好像不准确,不过我发现在CRT中通过ssh连接上linux后,可以使用sz rz来在windows和linux间传输文件,速度可以到达M级别,我开始误以为只能通过串口传输,串口显然不能达到这样的传输速率,查看源码我发现确实是可以通过socket传输的。经过修改将源码里面默认采用标准输入标准输出来收发数据改为通过指定的串口,从而不需要借助CRT工具,网络上所有的文章都是说通过CRT在window和linux间传输文件,而我的想法是在2台linux机器上,通过串口进行Zmodem协议的通信,最好是流式,而不是一个个文件。
首先我通过vspd这个工具在windows上虚拟出2个相连的串口,也就是一个串口pair

然后在vmware上连接这2个串口,此时对于VMware来说,这2个在windows上的串口就是2个物理串口,添加串口设备时选择Use physical serial port。添加完后,启动虚拟系统,连接上这2个串口设备。然后查看着2个串口在linux中是怎么样映射的,它实际是哪个设备。通过:
[root@localhost srv]# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:1183731 rx:14614
1: uart:16550A port:000002F8 irq:3 tx:9721 rx:92472
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3
[root@localhost srv]#
可以看到只有0和1是启用了的,所以就是ttyS0,ttyS1对应2个串口,接下来验证2个串口是否是互连的,在一个终端输入:
cat < /dev/ttyS0
另一终端输入:
echo “test” > /dev/ttyS1
如果接收到了那么2个串口就是连通的。
接下来就开始写测试程序对它们一个读一个写了,结果我犯了一个相当低级的错误,特记录。我还是按照以前读文件的方式,open ---> select ---> FD_ISSET ? ----> (read/write)。结果就是写能成功,收那端死都收不到,可以我明明cat echo测试都成功了啊!!最后猛然想起串口能通信一个最最基本的要求就是双方的设置参数要一样,比如收发波特率,数据位停止位,等等。于是我open之后设置一通,果然奏效。
linux下对2个连通的串口读写遇到的问题的更多相关文章
- linux下保存下位机输出的串口信息为文件
linux下保存下位机输出的串口信息为文件 1.stty -F /dev/ttyUSB0 raw (转换成raw模式) 2.stty -F /dev/ttyUSB0 speed 115200 (设置波 ...
- linux下mysql基于mycat做主从复制和读写分离之基础篇
Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , my ...
- LINUX下的tty,console与串口分析
1.LINUX下TTY.CONSOLE.串口之间是怎样的层次关系?具体的函数接口是怎样的?串口是如何被调用的? 2.printk函数是把信息发送到控制台上吧?如何让PRINTK把信息通过串口送出?或者 ...
- Linux下读取RFID卡号(C串口编程)
由于项目需要用到RFID.GPRS.摄像头等模块所以便看了一下,整理了一下学习思路,本篇先是整理一下串口读取RFID卡号的程序思路,后面还会更其他的 RFID模块: 本次采用的是125K的RFID读卡 ...
- linux下检测端口是否连通
检测tcp端口使用telnet命令 telnet 例:telnet 192.168.0.1 80 检测udp端口使用uc命令 uc -zu 例:uc -zu 192.169.0.1 80 以上命令 ...
- Linux下Mysql主从复制(Master-Slave)与读写分离(Amoeba)实践
一.为什么要做Mysql的主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻 ...
- Linux下常用设置文件和文件夹读写权限操作
1.查看权限 ls -l xxx.xxx (xxx.xxx是文件名) 2.常见权限 -rw------- (600) 只有所有者才有读和写的权限 -rw-r--r-- (644) 只有所有者才有读 ...
- Linux下串口编制【转】
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调 ...
- Linux下串口编程【转】
本文转载自:http://blog.csdn.net/w282529350/article/details/7378388 /************声明:本人只是见到这篇文章对我帮助很大才转载的,但 ...
随机推荐
- C# LLSQL快速查询框架
介绍一种新类型查询方法,类似linq,lambda语法,类似标准的sql使用习惯,支持匿名类型,泛型,目前支持mssql,mysql, 切换只需要DatabaseConfig.DatabaseType ...
- 使用mvc3实现ajax跨域
ajax跨域一般两种方式 1:cors,2:jsonp, 1:cors jsonp是get形式,承载的信息量有限,所以信息量较大时CORS是不二选择 在请求消息头添头 Access-Control ...
- If you insist running as root, then set the environment variable RUN_AS_USER=root...
版权声明:本文为博主原创文章,不经博主允许注明链接即可转载. If you insist running as root, then set theenvironment variable RUN_A ...
- Linux下建立Nexus私服
Linux下建立Nexus私服 要安装3个东西,然后配置私服: 1.JDK 2.Maven 3.Nexus 然后配置 1.JDK的安装 下载JDK安装包,格式为RPM格式,安装即可 安装程序 #rpm ...
- nginx服务器是怎么执行php脚本的?
简单的说: fastCGI是nginx和php之间的一个通信接口,该接口实际处理过程通过启动php-fpm进程来解 析php脚本,即php-fpm相 当于一个动态应用服务器,从而实现nginx动态解析 ...
- PHP程序z中xdebug工具简要使用方法
PHP程序的debug PHP程序的debug,无论是cli方式还是web方式,都需要使用第三方的debug工具.PHP5.6之前,本身自带的debug功能,仅限于日志输出. 推荐使用免费xdebug ...
- 【GOF23设计模式】原型模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_原型模式.prototype.浅复制.深复制.Cloneable接口 浅复制 package com.test.prot ...
- css清除浮动定位造成的异常
清除浮动是为了解决高度塌陷的问题:内层有好几个div有宽有高,并且选择了浮动定位,但是外层的div却并没有设置宽高.在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动( ...
- React入门--------JSX
React学习网站 React官方英文网站:http://reactjs.cn/react/docs/top-level-api.html React官方中文网站:http://www.css88.c ...
- Android Activity/Service/Broadcaster三大组件之间互相调用
我们研究两个问题,1.Service如何通过Broadcaster更改activity的一个TextView.(研究这个问题,考虑到Service从服务器端获得消息之后,将msg返回给activity ...