论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

一个linux下基于电话线路的数据通信程序(论文+程序)

paper51.com

图2  MODEM数模转换

paper51.com

2.3.2    AT命令

内容来自www.paper51.com

和其它通信标准一样,MODEM通信也有其自己的一套规则和标准。Hayes公司的SmartMODEM系列产品已成为MODEM的事实上的标准,而几乎所有应用于计算机通信的MODEM均号称与Hayes SmartMODEM兼容。

内容来自www.paper51.com

所谓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发出的是命令还是数据。 http://www.paper51.com

3        系统开发环境3.1      系统开发环境

内容来自www.paper51.com

本系统采用的软件工具有: 内容来自论文无忧网 www.paper51.com

Windows平台虚拟机:VMware-workstation-5.5.1-19175 http://www.paper51.com

操作系统: Radhat 9.0

内容来自www.paper51.com

编辑器:VI paper51.com

编译器:gcc 3.2.220030222

paper51.com

函数库:glibc 2.3.2.so copyright paper51.com

系统头文件:glibc_header

内容来自www.paper51.com

3.2 gcc简介

http://www.paper51.com

Linux系统下的gcc(GNU CCompiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。 copyright paper51.com

Gcc编译器能将C、C++语言源程序、汇编程序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别。

copyright paper51.com

虽然称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。

paper51.com

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。

copyright paper51.com

gcc编译器的调用参数大约有100多个,其中多数参数可能根本就用不到,开发过程中使用最多的命令就是:gcc -O test test.c, test.c是C语言源程序,test是可执行文件,-O是gcc的参数,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。 copyright paper51.com

4        程序的设计4.1      设计概要

内容来自论文无忧网 www.paper51.com

此次设计之所以选择Linux,是因为Linux支持各种硬件平台和外部设备,Linux对串口的操作非常简单,功能齐全,且Linux有功能强大的C语言编译器(gcc),使程序的可移植性非常好。Linux又是完全开放的操作系统,很大程度上,Linux的开放性,赋予了其无穷的生命力。

内容来自www.paper51.com

本设计基于Linux操作系统,利用POSIXtermios函数控制计算机串口,通过AT命令初始化本地MODEM并让本地MMODEM与异地MODEM进行拨号连接。本设计使用的是56K MODEM,不同于现在市面上常见的ADSL MODEM。 连接成功后,通过读写计算机串口来实现文件传输--这个过程是用一个自编的文件传输协议来完成的。整个程序使用C语言实现。总体设想如图3所示:

http://www.paper51.com

内容来自论文无忧网 www.paper51.com

图3  预期设计效果 内容来自www.paper51.com

总体来说,设计可以分成两部分来进行:RS-232-C与MODEM。但这两部分并不独立,MODEM的初始化及拨号连接等等一切对MODEM的控制和访问,都要通过串口,因为串口是计算机与MODEM的唯一通道。两部分的关系如图4如示: 内容来自www.paper51.com

copyright paper51.com

图4  RS-232-C 内容来自www.paper51.com

所以设计的关键是现实对RS-232-C控制,然后再完成MODEM的部分。

http://www.paper51.com

4.2 RS-232-C建立与打开 paper51.com

一个输入/输出(I/O)端口是用来将资料送入计算机及从计算机取出的通道,有许多种类的输出/输入端口,现在要处理的是串行端口,每一个串行端口必须有一个输入/输出地址,以及一个中断号码(IRQ),有四个串口设备对应到COM1- COM4:

paper51.com

ttyS0 (COM1) address 0x3f8 IRQ 4 内容来自www.paper51.com

ttyS1 (COM2) address 0x2f8 IRQ 3

copyright paper51.com

ttyS2 (COM3) address 0x3e8 IRQ 4 内容来自www.paper51.com

ttyS3 (COM4) address 0x2e8 IRQ 3

内容来自论文无忧网 www.paper51.com

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*来检查系统是否正确的建立了串口设备。 内容来自论文无忧网 www.paper51.com

------分隔线----------------------------
联系方式