・智能控制技术・常春国史金飞罗翔等Window。与Linux串口通信和网络通……49Windows与Linux串口通信和网络通信的比较研究 罗翔,常春国,史金飞,张磊(东南大学机械工程系?社苏南京210096)摘要:基于Windows与Linux双平台的视觉机器人系统,探讨了两个操作系统之间的串口通信和基于TCP/11'协议的网络通信,在实验基础上对两种通信方式的性能进行了比较和分析。实验结果表明,在环境复杂的控制系统中,对实时性要求很高时,串口通信并不能满足实际需求;网络通信克服了串口通信的缺点,很好地满足了实时通信要求。关键词:Windows; Linux; MS(bmm; termios;5xket;串口通信;网络通信中图分类号:TP393.04文献标识码:A文章编号:1672一1616(2006)07一0049一04 机器人等领域往往要求能快速方便工业控制、地开发实时、稳定的控制系统。基于Windows平台的软件开发具有资源丰富、开发周期短、难度低等优点,并且市场上大多数的应用软件是以Win-dows为平台设计的。Linux是一种类UNIX的操作系统,具有稳定性高、源代码公开等优点,更重要的是能较容易地构造出满足实时性要求的操作系统,如Linux + RTLinux方案。把Linux运用到工业控制、机器人等领域,将大大提高控制系统的口或网络进行通信。整个系统采用客户机用反务器( C/S)模型,C/S模型是构造分布式应用程序最常用的模式。Win-dows作为服务器端,其图像采集与处理程序将数据在内存中储存起来,然后等待客户机发送服务请求。服务器端在接收到客户机端(Linux操作系统)发送的服务请求之后,与之建立连接并将数据发送过去。CIS系统有3个基本层次,如图1所示,第1 性能,并可以降低成本。因此,在一个应用系统中,同时使用Windows和Linux操作系统,合理地分配资源,各取所长,是实现系统高性能的有效途径。为了使两个不同操作系统能协同工作,实现资源和数据共享,需要在两者间进行通信。通信可以通过串口,也可以通过网络进行,下面将对两种通信方式进行比较。层是硬件;第2层是系统服务,包含操作系统、窗口等;第3层是由客户机或服务器进程以及任何其他的应用进程组成[U1客户机 客户机进程系统服务硬件 翌晌hY服务器 服务器进程系统服务硬件 图1 C/S系统模型/1背景与系统模型介绍本文的背景是研究视觉机器人对运动目标的 捕捉与控制。采用机器视觉技术对运动目标进行本文仅简单讨论Wi ndows和Linux间以串Cl和网络方式进行数据传输的过程,对于图像处理过程、中断方式实现数据的收发以及数据保存等细节问题不予考虑。定位,并将处理结果传送到工控机,由工控机通过机器人对目标进行控制与操作。该项目的图像处理部分,使用的是基于Windows系统的应用程序Z串口通信2.1串口通信框图图2是系统通过串口进行通信的流程图。 接口(API),实现对运动目标的识别与检测;机器人的控制为了达到硬实时目的,控制系统是基于Linux平台。控制器根据检测到的信息产生控制信号,对运动目标进行控制。两个操作系统通过串收稿日期:2005一12一23Windows使用MSComm控件通过串口发送和接收数据,Linux通过变量temuas对串口进行读写蕊金项目:江苏省自然科学基金项目(BK2002405 )作者简介:常春国(1981一),男,江苏泰兴人东南大学硕士研究生,主要研究方M为机电控制及自动化。2006年4月中国制造业信息化第35卷第7期操作win山】协,图2 串口通信流程图2.2 Windows下终端开发2.2.1 MSComm控件的介绍MSCo ntm控件是Microsoft公司提供的Win-dows下串行通信编程的ActiveX控件,它间接调用了Windows API函数,为应用程序提供了通过串口收发数据的简单方法[21M以` .omm控件提供了2种处理通信问题的方法:事件驱动法和查询法。事件驱动方式是通过MSContm控件的OnComm事件捕获并处理通信事件;查询方式是在程序的每个关键功能之后,通过检查CommEvent属性的值来查询事件和错误。MSCot nrn控件只有一个事件,即OnComm事件。利用MSComm控件编写的应用程序在通信时如果发生事件或者错误,将会引发OnCo, ̄事件并且改变其属性值,通过GetComrnEvent()函数可获得()n。rim产生事件或错误的代码,根据CotnrnEvent属性值来执行不同的操作。2.2.2 Windows下串口通信程序设计 程序的编写可分为以下几个步骤:第1步: 在工程中插人MSCotnm控件。 MSConun控件不是VC工具箱标准控件,向工程中添加该控件前,首先应该将其插人到控件工具箱。第2步: 打开并初始化串口。建立工程后,用SetComniPor t()函数选择通信端口,并用SetPortOpen(TRUE)函数将其打开,然后用SetSettings()等函数初始化通信端口,包括设定通信端口号、通信协议、传输速率、校验方式以及其他参数。第3步: 捕捉串口事件。这里采用事件驱动法。利用MFC AppWizard(exe)创建工程,在工程中加人MSComrr控件后,系统会在程序中添加事件的映射语句。 第4步:读写串口。读写串口函数分别为Ge tlnput()和Setout-put(),其参数可以是文本或二进制类型,这取决于MSComm控件的InputMode属性值。第5步: 关闭串口。 使用完MSComm通信对象后,应用Setpor-tOpen(FALSE)函数将通信端口关闭。2.3 Linux下终端开发2.3.1 Linux下串口概述 Linux把所有的硬件资源都虚拟成文件,通过虚拟设备文件统一管理硬件设备。内核提供访问设备文件的系统函数,应用程序通过调用这些函数完成对硬件的操作。Linux中所有的设备文件都放在“/dev”目录下,串口资像采用“ttys+编号”来命名,因此串口对应的设备文件的路径是“/dev/ttys - "。要访问一个串口,只需打开相应的设备文件,然后向这个文件读写数据就可以完成数据的接收和发送[[3J需要注意的是,在默认情况下,普通用户不具备访问串口设备的权限。2.3.2 Linux下的串口设置 Linux中定义了一个查询和操纵各种终端的标准接口,该接口被称为termios,在系统的头文件"tennios. h',中定义。termios. h定义了串口配置需要使用到的一些数据结构和参数,所有的配置选项均应存放到termy”的结构中。对设备文件的操作都通过该接口和函数调用来实现,以下列出了tertmos的数据结构[[a]struct termios{t cflag _ t c _ iflag;/t cflag _ t c _ oflag; tclfag _ t c _ clfag;tc flag_ t c _ llfag;二_t c _ cc [ NCL.'S];}; to。包含了终端特性的完整描述,包括输人输出标志、控制标志和特殊控制字符等,通过相关联的函数可以查询和修改这些特性。termi,中有许多不常用的参数,比较好的处理方法是:读取当前串口的termios;根据新的要求改写termios,然后用改写过的tern。重新配置串口;在程序结束时,恢复系统原来的termicso需要注意的是,ternios结构不能直接初始化,要通过位运算符在程序中设置或清除所有的标志位。・智能控制技术・常春国史金飞罗翔等Windows与Linux串口通信和网络通2.3.3 Linux卜吊口通信程序设计服务器接收程序的编写可分为以下儿步来编写[ ,56〕:第1步;打开串口。 调用o pen()打开串U设备,返回一个整形文件句柄,以后所有的端口操作都针对这个句柄进行。如果open()出错,则返回一I. open()函数如下:i nt fd = open ("/dev/ttyS‘”,O_RDWR10 _NOCTTY旧_NDELA Y);函数的第1个参数是打开串口的路径, 第2个参数设置打开的方式,主要是一些标志信息的设置。第2步:串口属性配置。 打开串口后需要对串口进行属性配置,即对图3网络通信框图 termi、结构体中的成员进行设置。串口属性应与3.3 Windows下网络通信程序设计Windows下串口属性保持一致,即采用相同的数据33.1程序设计步骤流格式、波特率和校验方式。根据是否对数据进行程序的编写可分为以下几个步骤: 预处理,传输方式可分为正则方式和原始方式。为 第1步:创建Socket.实现实时通信,将串口所对应的终端设置为原始上Wi ndows系统下的网络通信程序必须首先建作方式,即不对输人和输出字符进行任何处理,不立通信套接字Socket,以后服务器端和客户端就是等待字符汇聚成一行,而是立即读写串口。通过这个套接字进行通信的。Window,系统下的第3步: 数据的读写。网络编程接口称为Windows Socket,简称串口配置完成后, 调用read()和write( )函数Winsocko Winsock由DLL形式提供,为了完成一读写端口,返回实际读写的字节数,如果有错误发系列初始化操作,每一个使用Winsock的应用程序生则返回一1.都必须首先调用WSAStartup()函数,只有在成功第4步: 还原串口属性并关闭端口。地完成调用之后才能使用Socket. 读取串口结束后,首先恢复串口原始属性(原使用。k et()函数创建套接字,该函数如下:因上文已经提到),然后才可以关闭串口并退出程以) CKET socket(AF_INET,以)CK_序。STREAM, 0) ;AF_ INE I'表示在Internet上的Socket犷3网络通信SOCK_ STREAM是Socket的类型,表示面向连3.1网络通信框图接的数据流方式,以保证通信的及时与可靠。参数图3是系统在TCPAP协议下通过网络进行 0表示对Socket采用缺省的TCP传输协议。通信的框图。服务器端和客户端都通过Socket接第2步:配置Socket 口相互间进行通信[71面向连接的服务器使用b ind)函数指定本3.2 Socket介绍地信息,包括IP地址和协议端口,使用listen()和So cket是为方便开发人员进行TCPAP程序accept()函数获取远端信息。开发,而为丁CPAP协议开发的一组应用程序接口 bind()函数指定本地IP地址和协议端口,并(API),它是网络通信中应用进程和网络协议之间把创建的Socket绑定到本地计算机的某一端口的接口。Socket在所有网络操作系统和网络应用上。listen()函数监听该端口,如果有远地客户请程序中都是必不可少的[[s]。今天,Socket接口是求连接,则调用accept()函数接受请求,并创建一TCPAP网络最为通用的API,也是在Internet上个新的Socket来描述和保存该连接信息。此时,进行应用开发最为通用的API.对同一个连接来说,有了两个文件描述符,原来的描述符还是监听指定的端口,而新描述符用来进行2006年4月中国制造业信息化第35卷第7期数据传递。就使得用户对网络的控制像对文件的控制一样方网络通信中经常发生阻塞现象, Winsock对有便[(91可能阻塞的函数提供了2种处理方式:阻塞方式和Winsocls是在UNIX下的Socket的基础上发非阻塞方式。为了提高计算机的效率,一般采用非展起来的,因此,Linux下的通信程序设计和W in-阻塞方式,Winsock通过异步选择函数WSAAsync- dows下的程序设计基本相同。Select()来实现非阻塞通信,该函数指定某种网络Linux下网络通信程序同样是使用、ket()事件(如有数据到达、可以发送数据、有程序请求连函数创建通信Socket,用send()和recv()函数发接、关闭套接字等),当被指定的网络事件发生时,送和接收数据,客户端使用二sect)函数配置远由Winsock发送由程序事先约定的消息,程序就可以根据这些消息做相应的处理。地IP地址和远地协议端口,同时向服务器端发送连接请求。通信完毕使用close()函数关闭Sock-第3步: 数据通信。Socket配置完成后,就可以通过s end)和etorecv()函数发送和接收数据了。 第4步:关闭Socket。上文简单介绍了编写Windows和Linux间串通信完毕, 使用closesocket()函数关闭Sock一口通信和网络通信程序的步骤,下面就两种通信方et,包括监听Socket和通信Socket。法在软硬件要求和通信过程的特性与结果3个方3.4 Linux下网络通信程序设计面进行比较。表1中的结论与数据都是本实验中在Li nux操作系统中,socket属于文件系统的一部分,网络通信可以被看作是对文件的读取,这表1串口通信与网络通信的实验比较 硬件要求 软件要求—PC;机和工控机各一台、RS232串口、申口线4串口通信与网络通信的比较以无校验方式传输字符串得到的。通信特性与结果 通信速度 传输跪离使用时All实时性可靠性串口通信(RS232)网络通信(局域网)Windows和日nux操作系统、、℃十十编程环境110bit/ -19.2Khh八一般小于15m 很差可靠PC机和工控机各一台、网卡、网线Windows和Limns操作系统、、℃+十编程环境、TCP/IP协议站10Mbit/s-10Ghi t/s理论上不限15ms很好可靠实验中, 我们采用了串u通信和基于TCP/IP协议的网络通信两种方式,实现了Windows和用了基于TCP/IP协议的局域网通信。Linux之间的数据传输。比较这两种通信方式发现,申口通信的速度比网络通信速度小很多,串口S结束语(线长度也受到严格的限制。同时,在我们的串口通信过程中,由于Linux下串口读写速度慢以及我们编写的程序通信效率低,整个传输过程要is,这远远达不到我们对通信实时性的要求。网络通信则很好地解决了上述串f7通信的缺点。此外,工业现场环境复杂,各种数据线相互交错,产生的电信号通过比较两种通信方式的优缺点, 我们发现,工业现场中对传输速度和实时性要求很高时,串口通信并不能满足要求,网络通信则提高了传输速度,更好地解决了实时性问题。而且随着网络技术的发展,尤其是光以太网技术的出现,不仅大大提容易影响到数据传输的速度和准确性,因此,实时性要求高或远距离传输时不适合采用串口通信方式。当然,网络通信对软硬件的要求相对串口通信要高。我们的项目中,两个系统间每秒钟要传输至少十幅图片的相关信息,传输的数据量大;机器人对运动目标进行控制与操作,数据传输的实时性要求很高。综合比较两者的优缺点,我们的项目中采高了通信可靠性和速度,而且降低了成本,使网络通信技术得到了飞速的发展,网络通信也将进一步扩大其应用范围。因此探讨Windows和Linux两个系统间的网络通信具有一定应用价值。本文对这方面进行了初步的探索。可以预见, 在工业现场、机器人控制等领域,基于TCP/IP协议的全双上网络通信将是今后通信发展的方向之一。但目前Windows和Linux两个(下转第65页) ・应用研究・高汉华冷挤压模受内压作用应力分布规律的研究65[2]张朝辉.ANSYS「程应111范例人门’I提('"i[MI.北京清华大参考文献:f11爷维中.钢的冷挤压1_艺及模几设计〔M]北京:'I'14铁道出版4.198604.学出版利.20 {3]易日.使用ANSY56.0进行静力学分析[M].北京:清华大2阁2_学出版引 St udy on the Stress Distribution of Cold Extrusion Die under Inner Pressure( Wuxi Occupational Institute of Commercial Technology, Jiangsu Wuxi, 214153, China)Abstract: It analyzes the stress distribution of cold extrusion die with inner pressure, draws the maximum ofcomprehensive stress of every inboard wall of the containers. This provides a basis for the design and applica-tion of the combined die. It builds the parameterized modle of the combined otror die场FE software AnsysOn the basis of this, it simulates the press state of combined die under global and local inner pressure. The re-GAO I -Ian一huasuit is analyzed and compared. This obtains the inner pressure function length asynchronous ocmbined with diestress distribution rule.Key words: Finite Element; Cold Extrusion Die; Inner Press; Stress Distribution乙舀‘盈改、盆止‘‘盈盆、月、止‘‘盆止舀孟爪J巴‘二、月、三、三、石、舀、J、月三、石、j、‘月、Jj气‘、爪邑月、‘j、舀(上接第52页)系统间的全双工实时通信研究还不多见,我们今后将在这一方面展开进一步的研究。参考文献:Ill谢晓芹基于socket的网络编程lil南昌大学学报(理科版),1997,21(4):335一347 [51马文辉,李友兰.Linux环境下的串u通信IJI_仪器仪表用户,2005,1(12):39一41 [61张建军,陈志雄,韩江洪,等.Linux平台下串行口全双工通讯的实现1 i〕合肥工业大学学报(自然科学版);2003,26(2): 165一170[71强建国,马晓,杨东业,等用windows套接字实现双向I ntenert实时通讯[J].兰州理工大学学报,2005,31(5):99一101 [2]李现勇P-1 C++申口通信技术与工程实践(第2版)[M]北京: 人民邮电出版社,2004[3」昊俊安,江泽涛,涂斌.Lint下1C机串口与智能仪器间 Jl计算机与现代化,的数据通信〔2005(7):39一42[41陈磊松,许华荣串口通信在Linux操作系统中的应用「J1漳州帅范学院学报(自然科学版), 2005(2):37一41仁创郎锐,罗发根.Ywuel C+十网络通信程序开发指南王MI北京:机械工业出版社,2004 [9〕刘峥嵘,张智超许振山,等.嵌人式Lina应用开发详解[M]北京:机械工业出版社,2004 The Comparison of Communications in Serial Port and InternetBet ween Windows and LinuxCHANG Chun一goo, SHI Jin一fei, LUO Xiang, ZI-IANG Lei( Southeast University, Jiangsu Nanjing, 210096, China)Abstract: In the visual obot rsystem on the platform of Windows and Linux, it studies and compares the serialcommunication and network communication in TCP/IP between the two different operating systems and viaexperiments, analyzes the results of the experiment in the table. The results show that serial communicationcan not meet the demands of on line communication in complicated fieldwork, while network communicationcan do.Keywords: Windows; Linux; MSCom; Termios; Socket; Serial Communication; Network Comunication