《串口编程实现通信.pdf》由会员分享,可在线阅读,更多相关《串口编程实现通信.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2005 年第 2 期 漳州师范学院学报(自然科学版)No.2.2005 年(总第 48 期)Journal of Zhangzhou Teachers College(Nat.Sci.)General No.48 文章编号文章编号:1008-7826(2005)02-0037-05 串口通讯在串口通讯在Linux操作系统中的应用操作系统中的应用 陈磊松1,许华荣2(1.漳州师范学院 物理系,福建 漳州 363000;2.福建师大福清分校 数学与计算机系,福建 福清 350300)摘要摘要:本文介绍了在 linux 操作系统下,如何通过串行通讯口和自定义通信协议来实现计算机之间或计算机与其它设
2、备之间的数据传输,以满足一些特定场合中安全的数据传输的需求.关键词关键词:linux;串口;数据传输 中图分类号中图分类号:TP393.09 文献标识码文献标识码:A 1 引言引言 随着计算机应用的日益普及和计算机网络技术的飞速发展,计算机之间的数据交换变得越来越频繁而重要,在进行数据交换的同时,网络安全又是面临的一个重大问题.由于微软的 Windows 操作系统非常容易受到攻击,目前,使用 linux 和 unix 操作系统的用户已经越来越多,基于 linux 操作系统下的数据交换问题也受到人们的关注.对于近距离的计算机之间的数据交换,通常可以通过组建局域网、软盘拷贝、硬盘拷贝等,本文介绍的
3、是使用串行通讯口的“对拷线”.如果使用局域网,必然要通过 ipx/spx、netbeui、Tcp/ip 等协议,由于这些协议都是公开的,所以不管防火墙设置多么严密,黑客总是能够找到漏洞进行攻击.所以现在大多数的政府机关和企业公司通常都会有两个网络,一个是对外公开的外网;而另一个则是内部使用的内网.通常外网是与公众互联网连接且信息是对外公开的,而内网的信息是对外保密的,所以为了防止内网的保密信息被窃取或恶意破坏,这两个内、外网之间是绝对物理隔离的.当两个网络之间需要交换信息的时候,通常是由网络管理员用硬盘或其它媒介手工在两者之间进行传递,这样的话,一方面实时性差,通常要一段时间才能更新;另一方面
4、比较烦琐,需要有专人每隔一段时间手工操作.这时我们就可以利用串口在两个网络之间传递消息或文件,因为在串口通讯中我们可以自己定义通信协议和规则,而不需要通过 Tcp/ip 协议,这样只要外界不知道我们定义的串口通信协议,就无法通过串口来窃取和破坏内网的信息.网络管理员则可以很方便地在使用串口信息和文件传送程序在两个网络之间传递信息和文件,这将非常方便,并且省去了许多的人力和物力.同样,对于远程计算机之间的数据通讯,也可以通过计算机的串口,借用普通的电话线和 modem实现计算机之间的远程高速数据通讯.而且这种方法比起单纯使用邮政电话网具有很高的保密性和速度,所以这种方法适合于一些要求较高速度传输
5、具有一定保密性质的数据的场合.2 Linux 操作系统中的串口通信设备操作系统中的串口通信设备 2.1 Linux 中的设备文件中的设备文件 在 Linux 环境下,文件是抽象的,它将几乎所有的东西都按文件来对待,所以我们可以象操作普通文件一样去打开、关闭、读取和写入不同的串口终端设备.文件抽象提供了一个一致的、统一的接口 收稿日期:20041211 作者简介:陈磊松(1973),男,福建福安人,讲师,本科.38 漳州师范学院学报(自然科学版)2005 年 用来和所有的设备和文件类型进行交互.这些设备文件(device file)也称为特殊文件(special file),该文件提供了到大多数
6、物理设备的接口.它们分为字符型特殊文件和块特殊文件.字符型特殊文件一次只能读出或写入一个字节或字符的数据;块特殊文件必须以一定大小的块来读出或写入数据.而串口终端设备就属于字符型特殊文件.所以我们可以象操作普通文件一样,利用文件描述符使用 open、create、close、read、write、fchmod、select 等调用来设置和操纵串口.这些调用的使用方法与普通文件大体一致.Linux 操作系统下串口等通信资源是作为串行通信终端设备 ttySxx 实现的.包括标准 pc 串口(COM1COM4)和可扩展的多口串行通信卡,均可方便地安装、使用.一般来说,Linux 的串行通信终端 tt
7、ySxx 的驱动程序能够支持所有使用 8250,I6450,I6550,I6550A 及其兼容的 UART 芯片的串口卡.通常 Linux 的内核编译配置时已经加入串口支持,因此当 Linux 启动时会自动检测到标准的串口设备.对于扩展的多口串行通信卡,则采用在系统启动的配置脚本中配置/etc/serial.conf 文件或调用setserial 命令动态加载.Linux 操作系统中的所有设备以设备文件名的方式存储在目录/dev 中,其中每一个设备由一个主设备号和一个次设备号唯一确定.对于串口设备,ttySxx 的主设备号为 4,它既能用于输入也能用于输出.Linux 串行通信设备和 Wind
8、ows 操作系统中的串口对应如表 1 所示.表 1 串口设备特征表 Linux 串行设备名称 主设备号 次设备号 对应的串口/dev/ttyS0 4 64 COM1/dev/ttyS1 4 65 COM2/dev/ttyS2 4 66 COM3/dev/ttyS3 4 67 COM4 一般情况下,Linux 操作系统都应该已经正确地建立了这些设备.如果系统中缺少某些设备,可以用系统提供的 mknod 指令建立设备特殊文件,只有 root 账号才能建立这些文件.如:#mknod -m 666/dev/ttyS0 c 4 64 上面的命令用主设备号 4 的辅设备号 64 建立字符设备特殊文件/de
9、v/ttyS0,也可以在/dev 的目录下运行设备制作脚本程序 MAKEDEV:#./MAKEDEV ttyS0 2.2 串行通讯口的设置串行通讯口的设置 终端接口,即 tty(Teletype Terminal Unit)接口是基于图 1 的硬件模型的,该模型非常通用,以至于几乎在任何一个需要将程序与某种输入、输出设备(比如打印机、控制台、键盘、鼠标等,当然这其中包含串口设备)打交道的情况下都可以被描述为这种通用模型的子类型.结果,因为这一模型提供了一个一致的,可以被应用与许多种不同情况的编程接口.Linux 中定义了一个查询和操纵各种终端的标准接口,该接口被称为termios,在系统的头文
10、件中定义.所有的 tty 操作都通过该接口和几个函数调用来实现,以下列出了 termios 的数据结构,它包含了个终端特性的完整描述,相关联的函数可以查询和修改这些特性.#include struct termios tcflag_t c_iflag;/*input mode flags*/图 1 终端硬件模型第 2 期 陈磊松,许华荣:串口通讯在 Linux 操作系统中的应用 39 tcflag_t c_oflag;/*output mode flags*/tcflag_t c_cflag;/*control mode flags*/tcflag_t c_lflag;/*local mode
11、 flags*/cc_t c_line;/*line discipline*/cc_t c_cc NCCS;/*control characters*/speed_t c_ispeed;/*input speed*/speed_t c_ospeed;/*output speed*/;该数据结构的各成员的属性值以及参数含义可以参考本文最后的参考文献.termios 接口包含了许多控制串口终端特性的函数.其中基本的函数包括tcgetattr和tcsetattr.通常通过 tcgetattr 来获取终端的特性和属性值,接着按要求修改这些属性(即改变 tcgetattr 函数返回的一个termios
12、型的数据结构的相应成员的值),最后再利用 tcsetattr 来设置终端新的特性和属性值.此外还可以利用 cfgetispeed、cfsetispeed、cfgetospeed 和 cfsetospeed 的函数调用来查询和改变输入与输出线路的速度值.以上是一些主要的终端控制函数,其函数原型如下所示:#include#include int tcgetattr(int fd,struct termios*tp);int tcsetattr(int fd,struct termios*tp);int cfgetispeed(struct termios*tp);int cfsetispeed(s
13、truct termios*tp,speed_t speed);int cfgetospeed(struct termios*tp);int cfsetospeed(struct termios*tp,speed_t speed);以上设置输入和输出线路速度值的两个函数中的参数 speed 必须是下列常数之一:B0(关闭连接)B50 B75 B110 B134 B150 B200 B300 B600 B1800 B2400 B4800 B9600 B19200 B38400 B57600 B115200 B230400 3 数据传输实现方法数据传输实现方法 3.1 串口文件发送过程 串口文件发
14、送过程 利用串口进行文件传输的一些步骤和过程如下:首先,要打开和配置串口,并按要求设置好速度和传送方式之类的参数;然后,选择一定的传送协议和方式,如停-等协议和滑动窗口协议等,设置好传送双方的同步方式;接着就可以按照选择的传送协议和同步方式来传送数据或文件了;最后,当然双方都要关闭串口,结束程序.使用停-等协议来进行串口文件传输的发送过程如图2 所示:以下是发送过程程序流程:main()用户输入文件名和路径;if(文件名和路径不存在)重新输入;打开串口;图 2 串口文件发送过程40 漳州师范学院学报(自然科学版)2005 年 if(不成功)出错退出;获取并保存串口的旧参数;按照要求设置串口的新
15、参数;do发送要传送的文件名、类型和大小;while(未收到确认)while(文件未读完)从文件中读入一帧的数据;将数据帧写入串口;while(未收到确认)设置旧参数,将串口状态还原;关闭文件;关闭串口;3.2 串口文件接收过程串口文件接收过程 使用停-等协议来进行串口文件传输的接收过程如图 3 所示:以下是接收过程程序流程:main()打开串口;if(不成功)出错退出;获取并保存旧参数;按照要求设置新的参数;do读串口;while(读到待传文件名、类型和大小)发确认帧;要求用户根据待传文件名、类型和大小输入接收文 件名和路径;根据输入的文件名和路径创建一个新文件;while(新文件小于待传文
16、件)do 接收数据帧;if(未收到)再继续接收;发确认帧;将数据写入新文件;设置旧参数,将串口状态还原;关闭文件;关闭串口;4 结论结论 传送文件双方应该根据传送和接收的设备及传送线路的状况来合理设置串口的速度参数和每个数据帧的大小.若速度太快容易丢帧或者帧损坏,导致重传该帧;而若速度太慢,则会影响效率、浪费资源.对于数据帧的大小,若数据帧太大,每一个数据帧出错导致该数据帧重新传输的几率就会大大增加;而若数据帧太小,则确认帧就会大大增加,并且系统花在校验上的时间也会因此而增多,从而串口传输的效率就会降低.由于不同的系统的性能差异很大,所以不同系统的速度参数和数据帧的大小设置也相差很大.有时,不
17、同场合对串口传输的各方面要求也不尽相同,有些,场合对实时性要求较高而准确率不高,这时可以适 图 3 串口文件接收过程 第 2 期 陈磊松,许华荣:串口通讯在 Linux 操作系统中的应用 41 当地加快速度和加大数据帧而牺牲一定的准确率;有些场合对准确率要求很高而对速度基本无要求的,则可以适当地降低速度和减小数据帧以提高准确率.总之,对于 Linux 下串口文件传输,串口速度和数据帧大小这两个参数的设置是很重要的,它们直接影响到串口文件传输的效率和质量.应该根据不同的系统设备状况和应用场合适当地设置这两个参数,以求达到最佳的串口传输状态.参考文献:参考文献:1 Michael K.Johnso
18、n 等著.Linux 编程权威指南M.北京:中国电力出版社,2001.2 Kurt Wall 等著.GNU/Linux 编程指南M.北京:清华大学出版社,2002.3 W.Richard Stevens 著.UNIX 环境高级编程M.北京:机械工业出版社,2000.4 Andrew S.Tanenbaum 著.计算机网络M.北京:清华大学出版社,1998.The Application of Serial Communication on Linux Operation System CHEN Lei-song1,XU Hua-rong2(1.Dept.of Phys.ZhangZhou Te
19、achers College,ZhangZhou363000,China;2.Fuqing Branch of Fujian Normal University,Fuqing 350300,China)Abstract:In this paper,We discuss the files transfers between computers or other devices realized by serial port and self-define communication protocol on Linux operation system.So it can transfer fi
20、les safely on special situation.Key words:linux;serial port;files transfers (上接第 93 页)Shallow talk the meaning of the geochemistry characteristic of the district in the agriculture and the medical treatmenthealth care LIN Chang-jin(Zhangzhou Institute of Technology,Zhangzhou 363000,China)Abstraction
21、:The writer is in the province hinterland quality census work the different from the relevant data is in the comprehensive research,detection under the condition of homology of weather etc.because of the geology background of differentiation,ground turns the characteristic;The growth,the quality dif
22、ference of the farm crop compare greatly,the residents healthy condition of the region is different.And it expresses to have the obvious relativity with the geochemistry characteristic of the district.This text now inquiry into the geochemistry characteristic of the district in the agriculture and t
23、he application on the life sciences,combine to order is the geochemistry chemical element,mainly elaborated the soil in the chemical element content and plant grows the effect and bases to turn the characteristic to find out some disease reason and look for the counter plan,investigating the chemist
24、ry,living creature and the interaction of the physics and study the technique method etc.,The put forward the base to turn the environment characteristic,the science divides the line the soil type,the valid diagram the of the establishment agriculture the ecosystem diagram the and the medical treatm
25、ent the health cares,the develop the ground to the turn the characteristic application the in agriculture the and medical the treatment health care,exist the quantity with mankind with the economic performance of agriculture of exaltation.Key words:The geochemistry chemical element characteristic;agriculture of the district plants;the medical treatment health care application and technique methods