一个Linux下基于电话线路的数据通信程序的设计与实现
摘 要
本设计基于Linux操作系统,控制本地MODEM通过电话线网向异地终端机所带MODEM拨号,并实现两台MODEM之间数据传输,达到两台计算机之间数据通信的目的。 MODEM与计算机RS-232串行端口相连,Linux通过POSIX termios接口控制计算机串行端口,方便实现了对计算机串行端口的设置和数据读写。计算机(DTE)与MODEM(DCE)之间数据交换,以及计算机对MODEM的控制,就是计算机对串行端口的读写。
本文作者完成了对RS-232串行端的设置和读写操作,利用AT命令控制MODEM拨号,和一个文件传输协议,实现了两台PC机利用MODEM通过公用电话网,传送和接收文件。本设计旨在使没有安装网络的用户,利用56K MODEM,通过电话线网方便和对方传输数据。相比较Internet网络,电话线网更安全,分布更广泛。本设计就是利用了电话线网的广泛性和安全性。
关键词:Linux;串行端口;MODEM目 录
1 引 言 2
1.1 设计背景 2
1.2 本设计的意义 2
1.3 设计方法 2
1.4 理论依据 2
2 设计理论依据 2
2.1 Linux 2
2.2 串行端口简介 2
2.2.1 串行通迅 2
2.2.2 RS-232-C 2
2.2.3 异步通迅 3
2.3 MODEM简介 4
2.3.1 MODEM 4
2.3.2 AT命令 4
3 系统开发环境 5
3.1 系统开发环境 5
3.2 gcc简介 5
4 程序的设计 6
4.1 设计概要 6
4.2 RS-232-C建立与打开 7
4.3 串口设置与读写 8
4.3.1 c_cflag控制项设置 8
4.3.2 c_iflag、c_lflag和c_oflag设置 9
4.3.3 c_cc控制字符设置 10
4.3.4 读写串口 11
4.4 MODEM的控制 12
4.4.1 MODEM的两种工作状态 12
4.4.2 DTE与DCE的握手 12
4.4.3 MODEM拨号连接 13
4.5 文件传输协议的设计 14
5 编码实现 16
5.1 串口初始化实现 16
5.2 串口读写的实现 17
5.3 MODEM初始化的实现 18
5.4 MODEM状态读取的实现 20
6 程序测试 20
6.1 串口传输文件测试 20
6.2 MODEM拨号连接并传输数据测试 21
结 论 21
参考文献 22
致 谢 23
声 明 24
1.1 设计背景
现在,随着计算机网络技术的发展,国民收入的提高,互联网走进了千家万户,但仍有很多计算机用户并没有安装宽带或其它网络设备。电话已经发展了一百多年,但互联网只出现了不到五十年,英特网所分布的范围远远比不上公用电话网。
1.2 本设计的意义
如果想传送份文件给对方,却苦恼于无法上互联网,那么用MODEM通过电话线发送文件就变得非常有用处了。还有些特殊情况,当单位或工厂需要几台计算机之间数据共享时,进入互联网有安全隐患,配置局域网费用又很高,而且需要共享的数据很小,仅按字节计算,这时候利用MODEM通过公用电话网或电话专线传输数据,既经济,又安全,维护也非常简单。
1.3 设计方法
本设计基于Linux操作系统,用POSIX termios函数控制计算机串口,使用AT指令操作MODEM进行初始化及拨号连接,最后用一个自编的文件传输协议传输文件。
整个程序使用C语言实现。此次设计之所以选择Linux,是因为Linux有着丰富的应用程序和开发工具,可以支持各种硬件平台和外部设备;Linux又是完全开放的操作系统,很大程度上,Linux的开放性,赋予了其无穷的生命力。GCC的发展与Linux发展息息相关,相辅相承。所以在Linux平台的基础上,选用GCC编绎代码。AT指令做为MODEM的标准化语言,提供了丰富的MODEM初始化、拨号、挂机等等命令,AT命令简单的操作方式,使MODEM控制变得很方便。