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中是怎么样映射的,它实际是哪个设备。通过:

[[email protected] 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
[[email protected] srv]#

可以看到只有0和1是启用了的,所以就是ttyS0,ttyS1对应2个串口,接下来验证2个串口是否是互连的,在一个终端输入:

cat < /dev/ttyS0

另一终端输入:

echo “test” > /dev/ttyS1

如果接收到了那么2个串口就是连通的。

  接下来就开始写测试程序对它们一个读一个写了,结果我犯了一个相当低级的错误,特记录。我还是按照以前读文件的方式,open ---> select ---> FD_ISSET ? ----> (read/write)。结果就是写能成功,收那端死都收不到,可以我明明cat echo测试都成功了啊!!最后猛然想起串口能通信一个最最基本的要求就是双方的设置参数要一样,比如收发波特率,数据位停止位,等等。于是我open之后设置一通,果然奏效。

时间: 2024-10-14 15:30:00

linux下对2个连通的串口读写遇到的问题的相关文章

linux下检测端口是否连通

检测tcp端口使用telnet命令 telnet 例:telnet 192.168.0.1 80 检测udp端口使用uc命令 uc -zu 例:uc -zu 192.169.0.1 80 以上命令在CentOS 6.2 64位下测试通过 bash: fork: Resource temporarily unavailable http://blog.csdn.net/jlds123/article/details/9146865 http://smilejay.com/2012/04/fork_

linux下mysql基于mycat做主从复制和读写分离之基础篇

Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , mycat1.6-RELEASE jdk1.7及其以上版本2.实现步骤一(mycat实现读写分离) 1.首先在两台服务器安装mysql 1.下载mysql的repo源 $ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rp

Linux下读取RFID卡号(C串口编程)

由于项目需要用到RFID.GPRS.摄像头等模块所以便看了一下,整理了一下学习思路,本篇先是整理一下串口读取RFID卡号的程序思路,后面还会更其他的 RFID模块: 本次采用的是125K的RFID读卡器和标签,很容易理解的,其实就是一张卡片里面存了一串数字(这个问题有点像你问一个艺术家洛必达法则是啥咦洛必达是啥),然后有个读卡器,当你把卡片放到读卡器上时,读卡器会将卡里面存的卡号读取出来,然后放到串口发送缓冲区,等待我们去读取,那么问题就是怎么读取. 串口读写: 大家都知道.linux下面一切皆

Linux下mysql基于MyCat实现主从复制和读写分离

1.1 MyCat介绍及应用场景MyCat介绍MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里.MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL.S

Linux下串口编制【转】

串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准.串口通讯指的是计算机依次以位(bit)为单位来传送数据,串行通讯使用的范围很广,在嵌入式系统开发过程中串口通讯也经常用到通讯方式之一. Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串口,只需打开其设备文件即可操作串口

linux下修改串口权限

Linux下的设备使用都需要使用sudo或root用户才能打开,为了能让普通用户也能使用串口,可以增加udev规则来实现,具体方法如下: sudo vim /etc/udev/rules.d/70-ttyusb.rules 增加如下内容: KERNEL=="ttyUSB[0-9]*",MODE="0666" 保存,重新插入USB转串口,普通用户就能搞定了

Linux下串口编程【转】

本文转载自:http://blog.csdn.net/w282529350/article/details/7378388 /************声明:本人只是见到这篇文章对我帮助很大才转载的,但是这个完整的程序里面本来有语法错误的,现在让我改过来了************/ --------------------------------------------------------- Author             :tiger-johnWebSite            :b

linux下串口通信与管理

linux下的串口与windows有一些区别,下面将介绍一下linux下串口通信管理 查看是否支持USB串口: #lsmod | grep usbserial 如果没有信息:sudo apt-get install setserial 插上USB转串口,在终端输入命令 #dmesg | grep ttyUSB0 如果出现连接成功信息,则说明系统已经识别该设备 一.找到自己的串口设备 查找自己的开发板与电脑的连接的COM口方法 Windows:设备管理器 linux: (1)dmesg #查看带有

Linux下TTL串口登录pcDuino V2

我是一名程序猿,硬件是自己的业余爱好!希望大家不吝赐教. 在没有显示器和网线的情况下,串口是连接pcDuino V2的不二选择.本文主要记录了我在LINUX下通过USB-TTL转接连接pcDuino V2 的过程步骤,仅供参考! 系统:ubuntu 14.04 软件:minicom 硬件: PL2303 USB-TTL转接头 杜邦线3根 pcDuino V2一块,带USB电源 硬件连接: USB-TTL转接头与pcDuino V2的连线请参照下图: 我用到的 USB转TTL串口设备 如下图: 将