预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

2005年第2期漳州师范学院学报(自然科学版)No.2.2005年 (总第48期)JournalofZhangzhouTeachersCollege(Nat.Sci.)GeneralNo.48 文章编号:1008-7826(2005)02-0037-05 串口通讯在Linux操作系统中的应用 陈磊松1,许华荣2 (1.漳州师范学院物理系,福建漳州363000;2.福建师大福清分校数学与计算机系,福建福清350300) 摘要:本文介绍了在linux操作系统下,如何通过串行通讯口和自定义通信协议来实现计算机之间或计算 机与其它设备之间的数据传输,以满足一些特定场合中安全的数据传输的需求. 关键词:linux;串口;数据传输 中图分类号:TP393.09文献标识码:A 1引言 随着计算机应用的日益普及和计算机网络技术的飞速发展,计算机之间的数据交换变得越来越频 繁而重要,在进行数据交换的同时,网络安全又是面临的一个重大问题.由于微软的Windows操作系统 非常容易受到攻击,目前,使用linux和unix操作系统的用户已经越来越多,基于linux操作系统下的 数据交换问题也受到人们的关注. 对于近距离的计算机之间的数据交换,通常可以通过组建局域网、软盘拷贝、硬盘拷贝等,本文 介绍的是使用串行通讯口的“对拷线”. 如果使用局域网,必然要通过ipx/spx、netbeui、Tcp/ip等协议,由于这些协议都是公开的,所以 不管防火墙设置多么严密,黑客总是能够找到漏洞进行攻击.所以现在大多数的政府机关和企业公司通 常都会有两个网络,一个是对外公开的外网;而另一个则是内部使用的内网.通常外网是与公众互联网 连接且信息是对外公开的,而内网的信息是对外保密的,所以为了防止内网的保密信息被窃取或恶意破 坏,这两个内、外网之间是绝对物理隔离的.当两个网络之间需要交换信息的时候,通常是由网络管理 员用硬盘或其它媒介手工在两者之间进行传递,这样的话,一方面实时性差,通常要一段时间才能更新; 另一方面比较烦琐,需要有专人每隔一段时间手工操作. 这时我们就可以利用串口在两个网络之间传递消息或文件,因为在串口通讯中我们可以自己定义 通信协议和规则,而不需要通过Tcp/ip协议,这样只要外界不知道我们定义的串口通信协议,就无法通 过串口来窃取和破坏内网的信息.网络管理员则可以很方便地在使用串口信息和文件传送程序在两个网 络之间传递信息和文件,这将非常方便,并且省去了许多的人力和物力. 同样,对于远程计算机之间的数据通讯,也可以通过计算机的串口,借用普通的电话线和modem 实现计算机之间的远程高速数据通讯.而且这种方法比起单纯使用邮政电话网具有很高的保密性和速 度,所以这种方法适合于一些要求较高速度传输具有一定保密性质的数据的场合. 2Linux操作系统中的串口通信设备 2.1Linux中的设备文件 在Linux环境下,文件是抽象的,它将几乎所有的东西都按文件来对待,所以我们可以象操作普 通文件一样去打开、关闭、读取和写入不同的串口终端设备.文件抽象提供了一个一致的、统一的接口 收稿日期:2004-12-11 作者简介:陈磊松(1973-),男,福建福安人,讲师,本科. 38漳州师范学院学报(自然科学版)2005年 用来和所有的设备和文件类型进行交互. 这些设备文件(devicefile)也称为特殊文件(specialfile),该文件提供了到大多数物理设备的接 口.它们分为字符型特殊文件和块特殊文件.字符型特殊文件一次只能读出或写入一个字节或字符的数 据;块特殊文件必须以一定大小的块来读出或写入数据.而串口终端设备就属于字符型特殊文件. 所以我们可以象操作普通文件一样,利用文件描述符使用open、create、close、read、write、fchmod、 select等调用来设置和操纵串口.这些调用的使用方法与普通文件大体一致. Linux操作系统下串口等通信资源是作为串行通信终端设备ttySxx实现的.包括标准pc串口 (COM1~COM4)和可扩展的多口串行通信卡,均可方便地安装、使用.一般来说,Linux的串行通信 终端ttySxx的驱动程序能够支持所有使用8250,I6450,I6550,I6550A及其兼容的UART芯片的串口 卡. 通常Linux的内核编译配置时已经加入串口支持,因此当Linux启动时会自动检测到标准的串口 设备.对于扩展的多口串行通信卡,则采用在系统启动的配置脚本中配置/etc/serial.conf文件或调用 setserial命令动态加载.Linux操作系统中的所有设备以设备文件名的方式存储在目录/dev中,其中每一 个设备由一个主设备号和一个次设备号唯一确定.对于串口设备,ttySxx的主设备号为4,