毕业设计论文网公告: 本站服务范围:计算机毕业设计|计[admin  2009年7月26日]   设为首页 加入收藏
网站首页 加入收藏 辅导流程 付款方式 BUY流程 常见问题

* 专业辅导毕业设计,毕业论文,硕士论文。
* 以人为本,人尽其才,有分工更有协作。
* 不以低价争客户,但求精品出效益。

当前位置:毕业设计论文网 >> VB.NET设计 >> 浏览文章
vb7057一个Linux下基于电话线路的数据通信程序的设计与实现
来源:本站原创  作者:adminp  添加日期:2012年12月21日  点击数:

本设计基于Linux操作系统,控制本地MODEM通过电话线网向异地终端机所带MODEM拨号,并实现两台MODEM之间数据传输,达到两台计算机之间数据通信的目的。 MODEM与计算机RS-232串行端口相连,Linux通过POSIX termios接口控制计算机串行端口,方便实现了对计算机串行端口的设置和数据读写。计算机(DTE)与MODEM(DCE)之间数据交换,以及计算机对MODEM的控制,就是计算机对串行端口的读写。
本文作者完成了对RS-232串行端的设置和读写操作,利用AT命令控制MODEM拨号,和一个文件传输协议,实现了两台PC机利用MODEM通过公用电话网,传送和接收文件。本设计旨在使没有安装网络的用户,利用56K MODEM,通过电话线网方便和对方传输数据。相比较InterNET网络,电话线网更安全,分布更广泛。本设计就是利用了电话线网的广泛性和安全性。
2.3.1 MODEM
目前最广泛使用的数据传输通道就是模拟电话线路。计算机所能处理的数字信号不能直接进入这样的模拟通道,MODEM就是用来实现数字信号和模拟信号相互转换的设备。MODEM从发送方串行接收数据,然后经过调制,将数字信号转换为模拟信号,最后通过电话网络传送到接收方,然后接收方的MODEM将电话线上信号解调,将模拟信号转换为数字信号,然后进入计算机通道。即MODEM实现了计算机数据与模拟电话线路适合传输的模拟信号之间的相互转换。MODEM的分类和型号众多,为了方便Linux操作系统设置,本次设计选用外置56K MODEM。MODEM的工作过程如图2如示:
                                 
                               模拟信号

           数字信号                            数字信号
 
图2  MODEM数模转换
2.3.2 AT命令
和其它通信标准一样,MODEM通信也有其自己的一套规则和标准。Hayes公司的SmartMODEM系列产品已成为MODEM的事实上的标准,而几乎所有应用于计算机通信的MODEM均号称与Hayes SmartMODEM兼容。
所谓Hayes兼容MODEM,主要是指它能识别并执行称为AT命令的某些命令和命令串。目前各厂家生产的MODEM除了可以执行最基本的Hayes命令集外,还有自己特有的命令。AT命令的建立使得DTE(Data Terminal Equipment,用于发送和接收数据的数据终端设备)从以上杂条中解脱出来,振铃检测、载波检测、速率选择等等都可以由MODEM来完成。此时TXD和RXD不仅仅是传输数据,还传送AT命令。DTE发送AT命令到MODEM,MODEM执行后通过RXD返回结果给DTE。这些命令和返回结果符合RS-232C数据格式。MODEM由AT命令和几个特定的S寄存器的状态确定DTE发出的是命令还是数据。
3 系统开发环境
3.1 系统开发环境
本系统采用的软件工具有:
Windows平台虚拟机:VMware-workstation-5.5.1-19175
操作系统: Radhat 9.0
编辑器:VI
编译器:gcc 3.2.2 20030222
函数库:glibc 2.3.2.so
系统头文件:glibc_header
3.2 gcc简介
Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。
Gcc编译器能将C、C++语言源程序、汇编程序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别。
虽然称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。
命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。
gcc编译器的调用参数大约有100多个,其中多数参数可能根本就用不到,开发过程中使用最多的命令就是:gcc -O test test.c, test.c是C语言源程序,test是可执行文件,-O是gcc的参数,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
4 程序的设计
4.1 设计概要
此次设计之所以选择Linux,是因为Linux支持各种硬件平台和外部设备,Linux对串口的操作非常简单,功能齐全,且Linux有功能强大的C语言编译器(gcc),使程序的可移植性非常好。Linux又是完全开放的操作系统,很大程度上,Linux的开放性,赋予了其无穷的生命力。
本设计基于Linux操作系统,利用POSIX termios函数控制计算机串口,通过AT命令初始化本地MODEM并让本地MMODEM与异地MODEM进行拨号连接。本设计使用的是56K MODEM,不同于现在市面上常见的ADSL MODEM。 连接成功后,通过读写计算机串口来实现文件传输--这个过程是用一个自编的文件传输协议来完成的。整个程序使用C语言实现。总体设想如图3所示:
 
图3  预期设计效果
总体来说,设计可以分成两部分来进行:RS-232-C与MODEM。但这两部分并不独立,MODEM的初始化及拨号连接等等一切对MODEM的控制和访问,都要通过串口,因为串口是计算机与MODEM的唯一通道。两部分的关系如图4如示:
 
图4  RS-232-C
所以设计的关键是现实对RS-232-C控制,然后再完成MODEM的部分。
4.2 RS-232-C建立与打开
一个输入/输出(I/O)端口是用来将资料送入计算机及从计算机取出的通道,有许多种类的输出/输入端口,现在要处理的是串行端口,每一个串行端口必须有一个输入/输出地址,以及一个中断号码(IRQ),有四个串口设备对应到COM1- COM4:
ttyS0 (COM1) address 0x3f8 IRQ 4
ttyS1 (COM2) address 0x2f8 IRQ 3
ttyS2 (COM3) address 0x3e8 IRQ 4
ttyS3 (COM4) address 0x2e8 IRQ 3
ttyS*是串口在Linux中的命名方式,COM*是串口在Windows中的命名方式,Linux是以ttyS0开始命名的,与Windows从COM1开始命名不同。ttyS0和ttyS2使用同一个中断IRQ4,ttyS1和ttyS3使用同一个中断IRQ3,所以如果同时使用了ttyS0和ttyS2或者ttyS1和ttyS3,就必须重设它们的中断才可以,幸运的是,现在常见的设备都不使用串口,所以连接56K MODEM时,多数情况都不必再重设串口中断,如果是外置MODEM,则它占用的是ttyS0,如果是内置MODEM,则它占用的很可能是ttyS2。Linux下可以使用ls –l /dev/ttyS*来检查系统是否正确的建立了串口设备。
此次设计是在Windows VMware Workstation虚拟机环境下安装的Radhat9.0操作系统,所以在进行设计之前,必须为虚拟机添加串口设备,具体是在设置中点击添加,选择串口设备,然后一直选择下一步即可。如果不设置虚拟机串口设备,在虚拟机下将无法识别到串口。设置成功后,可以像使用真正的操作系统一样使用虚拟机,虚拟机下面的串口是真实的物理串口,而并非是虚拟出来的。VMware Workstation中设备的使用很多都是真实的,不是模拟出来的。
确定串口正确建立以后,使用open()函数来打开它。像所有的设备一样,Linux提供设备文件来挂载端口。要访问一个串行端口,只要像访问文件一样来访问设备文件即可。串行端口的设备文件名在Linux中是:/dev/ttyS*(*代表0,1,2…)。 以ttyS0以例,
int fd;
fd = open(“/dev/ttyS0”, O_RDWR | O_NOCTTY | O_NDELAY);
O_RDWR代表可读可写,O_NOCTTY告诉Linux该程序不想成为那个端口的“控制终端”。如果不指明这个,任何输入都会影响此进程。O_NDELAY标志该程序不关心DCD信号的输入状态,即无论另一端端口是否启用和运行。如果不指明这个标志,此进程将休眠,直到另一端发送DCD信号过来。
如果不是以root身份登陆,在打开串口时,可能会发生权限不允许的情况,这时候使用chmod a+rw /dev/ttyS0命令改变文件权限即可,或者直接用root身份登陆。

【购买方式】【联系方式】【关闭窗口】
上一篇:VB7056学生注册管理软件的开发

下一篇:7001测试管理系统的设计与实现
论文咨询
   
  本站所有毕业设计和毕业论文作品均出自原创,集多年从事毕业设计工作的经验及资料,结合强劲的毕业设计开发管理团队,全面面向高校学生提供毕业设计和毕业论文指导,快速的毕业设计,毕业论文辅导服务。
  在线咨询:计算机毕业论文咨询
            计算机毕业论文咨询QQ
  服务邮箱:paper51cn@163.com
    咨询热线:毕业设计论文网咨询电话
最新文章   更多
我汇款后你们不将毕业设计发给我怎么
答辩时通常会问到什么问题?
能帮我修改程序及论文排版吗?
我购买的程序为什么不能运行?
我在贵站购买的论文会和其他同学重复
汇款后多久可收到论文?
毕业设计论文网--毕业设计题目列表
智能型充电器的电源和显示的设计
智能家居的发展
制冷专业毕业设计(家用空调)
推荐文章   更多
旅蒙晋商明清时代开发蒙古市场研究
我国物流成本预算管理体系构建研究
农户“贮+销”经营行为影响因素分析
江苏商业区域发展影响因素分析
基于新产业区理论的小商品市场空间集聚特
基于AHP分析的大型购物中心聚客力研究
基于消费者时间资源的市场营销策略分析
农村劳动力转移:改革开放以来的实证分析
黑龙江省装备制造业技术引创能力评价
黑龙江省发展绿色食品产业对策研究
热门文章   更多
毕业设计论文网--毕业设计题目列表
ASP.NET011 图书馆管理信息系统
网络003 计算机网络故障的诊断与解决
ASP.NET016 网络考试系统的设计与实
VB017 医院门诊信息管理系统
网络002 校园网络工程综合布线方案(
JSP020 学生网上选课系统设计与实现
Delphi011 银行学生助学贷款信息管理
VB015 合同信息管理系统的设计与实现
JSP014 企业人事信息管理系统的设计

版权所有:毕业设计论文网 www.paper51.cn CopyRight @ 2006-2013 All Rights Reserved
客服QQ: Email:paper51cn@163.com 服务电话:计算机毕业论文咨询电话
本站所列毕业设计(论文)资料均属于原创者所有,初衷是为大家在毕业设计(论文)过程中参考和学习交流之用,请勿做其他非法用途,转载必究,本站不接受任何形式的代理.如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正或删除相关内容!