优秀毕业设计-基于Linux下的智能手机设计.doc_第1页
优秀毕业设计-基于Linux下的智能手机设计.doc_第2页
优秀毕业设计-基于Linux下的智能手机设计.doc_第3页
优秀毕业设计-基于Linux下的智能手机设计.doc_第4页
优秀毕业设计-基于Linux下的智能手机设计.doc_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于linux下智能手机的设计基于linux下智能手机的设计摘 要linux操作系统的手机最根本的特点是具有一个开放性的操作系统,并且能够进行功能扩展和可以安装第三方应用软件。随着支持数据传输的2.5g/3g移动通信网络的不断发展,支持数据、语音和图像服务的智能手机将很快成为引发中国手机市场消费高潮的主力产品,市场潜力巨大,因此智能手机的开发是未来手机技术发展的趋势。本文首先对linux手机的发展现状和研究背景进行了分析,其次,介绍了智能手机的硬件平台、操作系统和软件设计。通过对硬件的配置和软件的设计实现手机信号强度检测、运营商检测、发短信、接短信、打电话、建立通讯录和删除通讯录接电话的功能。最后,建立硬件环境和交叉编译环境,在linux环境下,编译代码生成可执行文件,由交叉编译器在基于gprs模组的arm9开发板上运行可执行程序,通过触摸板上面的虚拟按键进行功能的检测,根据检测的结果优化程序,使系统更加完美和流畅。关键字 智能手机 linux gprs模组 arm9开发板 design of smartphone based on linuxabstractthe most fundamental feature of smartphone is its open operating system expandable functions and supporting the thirdparty application software. as 2.5g/3g mobile communication network come into operation, smart phone which support data and voice service will become a mainstream product in china cell phone market soon. in the next few years, smart phone market will develop fast enough. this market has great potential. smartphone is the trend of cell phone development in the future.firstly, this article analyses the situation of development of smartphone, second, introduced hard platform. through to design of software and hardware, the system can complete the function that detecting signal strength, detection of network operators, transceiver in sms, receiving a call, create contacts, delete contacts. lastly, set up the hardware environment and the cross-development environment, compile the code to generate the executable file, by cross compiler based on gprs module of the arm9 development board to run the executable program, through the touch panel on top of the virtual key functional testing, according to test results make the system more perfect and fluency.key words smart phone linux gprs module arm9 platformii 目 录中文摘要i英文摘要ii1 绪论11.1 引言11.2 研究背景11.3 本课题研究的主要内容21.4 设计研究的预期效果32 手机系统的整体设计42.1 硬件平台42.2 linux操作系统72.3 通信方式93 手机的软件系统设计113.1 通信系统设计113.1 手机的应用程序设计1133.3 系统主程序分析233.4 t9输入法274 实验效果图295 手机系统测试335.1 开发板环境的搭建335.2 pc机环境的搭建355.3 功能测试及结果35结束语38致 谢39参考文献40附 录41 基于linux下智能手机的设计1 绪论1.1 引言随着手机的发展,功能会越来越多。除了具有手机基本的通话、收发信息等功能,还能上网、拍照、看电影、欣赏mp3音乐等。这就需要手机不仅具有高性能的嵌入式处理器,更侧重于系统软件平台的稳定性、可移植性、可扩展性。本手机在硬件设计上采用三星公司的基于arm920t内核的s3c2440高性能嵌入式处理器、凌阳公司的sim300通讯模块、flash、lcd、触摸屏等实现一个完整的手机硬件开发平台。s3c2440最高主频520mhz,具有快速的处理能力,arm920t核采用arm9 架构,具有高性能、低功耗等特点。s3c2440处理器广泛应用于pda、智能手机、mp3 等产品中。通讯模块sim300,包含了基带芯片、rf 射频芯片组、combo flash 芯片以及gsm/gprs 终端所需的全部软件功能,支持标准at 命令控制,具有语音功能、sms信息、数据功能、gsm 增值服务等功能。本智能手机系统软件就在此硬件开发平台上实现1。1.2 研究背景近年来,linux 以自由、免费、开放源代码为武器,经过来自互联网、遍布全球的程序员的努力,加上ibm、sun等计算机巨头的支持,linux在操作系统市场异军突起,服务器版的linux、桌面版的linux、嵌入式linux已经广泛地投入应用,基于linux的应用和应用开发渗透到各个领域,一部分手机厂商接机推出了linux手机。目前很多手机开发商本身并不希望在操作系统方案上受制于人并增加产品开发成本,而源代码开放的linux是最好的切入点。由于很多公司在linux桌面应用开发的经验而促成其转向2。智能手机终端产品的开发中,国内基于linux的嵌入式操作系统应用开发商远多于桌面应用开发商,linux具有最大的自由开发群。此外,由于其开放性使工程师可以对系统有更深入的了解,并能针对特定硬件方案和产品需求进行优化,通过了解源代码开发很多应用。采用linux操作系统的理由是降低智能手机的生产成本。linux开发起来最大的特点是从根本上开放源代码,与其他系统相比,采用开放源代码的linux手机操作系统能够大大降低成本。而且开放源代码还有一个好处是允许手机制造商根据实际情况,有针对性地开发适合自己手机的linux操作系统,这样既能让自己的产品有特色,又能避免受制于人,还能够满足用户多方面的应用。到现在,手机的应用就由通话和简单的邮件传输,发展到web浏览和拍照摄影,照片编辑,动画播放等多个方面,这样一来,手机软件的开发规模是3年前5倍以上。基于这个原因,开发linux os,开发者教育等各方面的成本就削减了不少,从而上市的产品便会更具竞争力3。linux操作系统在使用中的优点是十分明显的。首先,对于消费来说,采用的应用于智能手机上的linux操作系统和我们常说的应用于电脑上的linux操作系统是一个系统,而且都是全免费操作系统。在操作系统上的免费,就等于节省了产品的生产成本,附加到消费者身上的也就少了,给大家带来了实惠。linux操作系统系统资源占用率较低,而且性能比较稳定,这都是大家公认的。使用起来能带来急速体验,在同硬件配置上,能获得其他智能手机操作系统得不到的快乐。如果以linux平台的系统资源占用程度同体积庞大的windows mobile相比,其结果可想而知。java在手机上应用越来越广的时候,linux操作系统与java的相互融合,是任何一个操作系统所不能比拟的,linux加java的应用方式,能够给用户极大的拓展空间。相对来说,linux操作系统缺点也不少。由于linux操作系统介入智能手机领域较晚,采用此操作系统的手机比较少,所以专为这些少量用户所制作的第三方软件还非常少,影响了linux操作系统在智能手机领域内的势力扩张。在linux的平台上进行开发,对厂商的要求比较高,业界需要更强大的软件。设计能力,安全性、实时性能、电源管理都是linux智能手机操作的天然缺陷。支持linux操作系统的机型:摩托罗拉a768i、摩托罗拉a780、飞利浦968、海尔n60、中兴e3。由于智能手机结合了强大的硬件运行能力以及开放的软件操作系统,因此无论是娱乐还是商务应用,智能手机的功能都能够在强大的第三方软件的支持下获得无限的扩展。因此,在未来的手机市场上,智能手机将引领整个手机发展的潮流,而不是局限于现在的高端手机。1.3 本课题研究的主要内容 通过对本系统的分析研究,明确了本次设计的主要任务有以下几点:(1)根据设计任务书的要求,完成手机控制系统的构建。(2)对手机的工作过程进行设计分析,对手机系统代码的编写,实现手机信号检测、运营商的检测、接打电话、收发短信的功能。(3)对手机硬件平台的设计和构建,并对其进行深入的探讨。(4)把程序在硬件平台上面运行,测试手机性能,完善手机功能。(5)完成设计说明书。1.4 设计研究的预期效果通过对本课程程序的设计和分析,完成此设计的最终效果如下:(1)采用gprs模块sim900,实现显示网络运营商、短信的收发、电话的接打、存储短信、信号强度的功能。(2)触摸屏输入功能,可输入数字,字母,汉子等信息。(3)短信息支持中英文接收和发送。(4)具有菜单控制功能,使用触摸屏控制菜单的选择。实现多级菜单控制,摸屏单机菜单图标直接完成各种要求的功能。(5)支持中国移动和中国联通两个运营商。2 手机系统的整体设计2.1 硬件平台本文设计的基于arm9平台的智能手机系统架构为基带处理器(s3c2440)+应用处理器(sim900)的双处理器架构。基带处理器实现目前手机所做的呼叫/接听、数据传输等基本的通信功能,应用处理器专用于处理高负荷的多媒体应用。采用这种架构的原因是因为应用处理器构成一个子系统,与基带处理器通信子系统隔离开来。模块化的架构可以利用现有手机上的成熟方案,对现有手机上的大部分代码和电路只需稍加修改就可重复使用,工程师可以集中精力开发新的多媒体应用功能,从而缩短整个开发时间,降低开发成本。图2-1 arm9试验仪结构2.1.1 s3c2440介绍s3c2440a是韩国三星公司推出的16/32位risc微控制器,其cpu采用的是arm920t内核。s3c2440的特点:(1)具有pll时钟发生器,主频最高可达533m。(2)内核1.2v供电最高400m,1.3v供电最高533m。(3)存储器支持1.8v、2.5v、3.0v、3.3v。(4)i/o均支持3.3v供电。(5)s3c2440为单机器周期执行指令集。(6)具有电源管理功能,可以使系统以普通方式、慢速方式、空闲方式和掉电方式工作,降低产品功耗。内核结构:采用arm920t内核,具有16kb指令cache、16kb数据cache和存储器管理单元mmu,指令高速存储缓冲器(i-cache),数据高速存储缓冲器(d-cache)提高指令执行效率及数据存储效率,减少主存带宽和响应性带来的影响,加强的arm体系结构mmu,用于支持wince、linux等操作系统,内部高级微控制总线(amba)体系结构。存储器控制器特性:s3c2440采用总线结构管理片上外设及内存。s3c2440的存储器管理器提供访问外部存储器的所有控制信号。27位地址信号、32位数据信号、8个片选信号、以及读/写控制信号等。总共有8个存储器bank(bank0bank7),其中bank0-bank5为固定128mb,bank6和bank7的容量可编程改变,可以是2、4、8、16、32、64、128mb,最大共1gb。bank0可以作为引导rom,其数据线宽只能是16位和32位,其它存储器的数据线宽可以是8位、16位和32位。8个存储器bank:bank0-bank5:sram、rom(nor flash)。bank6bank7:sram、rom sdram(nor flash)。s3c2440支持两种启动方式:nor flash启动,即代码直接写入nor flash,运行时直接在nor flash上运行。nand flash启动方式,即代码烧到nand flash中,借助片内4k的sram,将代码由nand flash烤到sdram中,在sdram中运行。2.1.2 gprs模组介绍在这个智能手机系统中的基带处理芯片sim900是双频gsm模块,利用无线移动网络实现语音传输和点对点数据传输。同时,模组内具备tcp/ip协议栈,可以直接利用它实现无线上网,具有话音、gsm电路数据,传真、gprs分组数据、短消息等功能。该无线收发模块将作为一个通信子系统,与应用系统相互独立存在。sim900与s3c2440的通信通过uart接口,可以由at命令来实现。音频芯片主要实现mp3播放,录音等音频功能,摄像头模块实现数码拍照、摄像的功能,sd/mmc卡接口可以实现手机存储扩展功能,usb接口可以实现手机与计算机的数据传输5。以上这些模块都由s3c2440芯片来控制,它们共同构成了智能手机的应用模块,如图2-4所示。gprs模组使用标准串口与主控制器进行通讯。模组带有一个10针的接口,该接口可以直接和mcu相连接。或者用户可以通过模组上的rs232接口和pc机直接相连接使用。gprs模组可以用到以下场合:(1)手持通讯设备。(2)远程数据采集系统。(3)无线网络终端。gprs模组需通过j4的电源开关信号(pwrkey)输入引脚向gprs模组输入如图2-2所示的上电时序gprs才能被启动,启动后gprs的信号指示灯会闪烁。也可以手动按下gprs模组上的on/off按键,大约2秒之后松开,gprs模组亦可以被启动。图2-2 gprs模组启动时序图gprs模组启动之后,即可通过uart接口发送at指令来控制语音或数据收发。连接gprs模组到实验箱的j8(gprs)接口上,注意一定要按顺序(实验箱的12v接模组的vcc,iob0接pwrkey,gnd接gnd)插接,且不可插反或错位;断开jp7、jp8的所有跳线;断开手柄接口与手柄的连接;如图2-3配置gprs;如连接耳麦和天线。图2-3 gprs模组跳线配置喇叭/听筒/受话器无线通信模块 sim300sim卡应用处理器 s3c2440音频芯片sd/mmc卡摄像头模块lcd和触摸屏模块flash and sdram电源管理芯片uart串口 应用程序子系统 通信子系统图2-4 手机硬件系统框图2.2 linux操作系统linux操作系统作为一种多任务、稳定可靠、内核可裁减的系统、是开发嵌入式软硬件产片的优秀软件平台。嵌入式linux是一种开放源码、软实时、多任务的嵌入式操作系统。通常它是在标准linux的基础上针对嵌入式系统进行剪裁和优化后形成的。剪裁和优化后的linux体积更小,性能更加稳定,而且源代码本身是免费的。这将大大减少开发商的成本,更具市场竞争力。同时,由于遍布全球的众多linux爱好者又能给予linux开发者强大的技术支持,所以众多商家纷纷转向嵌入式linux的开发。linux作为一个嵌入式操作系统具有许多的优点:(1)可运行于多种硬件平台linux符合ieee posix.1标准,使应用程序具有较好的可移植性。内核的90%以上的代码是用可移植性好的c语言完成的,少部分的底层相关的代码由汇编语言完成,并根据处理器类型分门别类的放在系统内核源码的linux/arch/目录中。目前linux内核支持interx86,motorola/ibm powerpc,s390等处理器体系结构。并且支持嵌入式领域中广泛使用的arm和motorola mc68000系列。随着linux越来越广泛地应用于嵌入式领域,它所支持的嵌入式微处理器必定会进一步增加。(2)可裁减,性能优异,应用软件丰富linux的动态模块加载使linux的剪裁极为方便,高度模块化的部件使添加非常容易。一般来说,经过适当剪裁后的linux内核的启动部分的目标代码不到500kb。用户完全可以把linux内核和root文件系统放在一张软盘上。也可以利用linux实现从网络启动,实现网络无盘图形工作站。linux是一个全面的多任务和真正的32位操作系统。系统运行稳定,功能强大,支持多种硬件平台,应用工具多。随着linux的不断发展,基于linux平台上的应用软件也不断得到扩充。(3)使用成本低linux是免费软件,只要遵守gpl(gnu general pubic license)的规定,就可以免费获得,并进行开发和商业发行。linux下有许多同样遵循gpl规定的一系列的软件工具开发包,它们均为自由发布及使用的代码,从功能上看并于亚于商用开发包,可以极大地降低开发成本。这一优势是其他嵌入式操作系统无法比拟的。(4)强大的网络功能linux操作系统最突出的是网络部分,基本上所有的网络协议和网络接口都可以在linux上找到。linux比标准的unix能更加高效的处理网络协议,系统地网络吞吐性能也非常好,这也是linux在网络服务器市场上占据越来越大市场份额的一个原因。linux内核对网络协议的设计是从简洁高效的角度出发的。它有一整套的网络协议模块。linux不仅可以支持一般用户需求的文件传输协议ftp,telnet和rlogin协议,还能提供对网络上其他及机器内文件的访问。linux的网络功能十分强大,更重要的是,linux的网络功能和协议是以内核可选的模块方式提供的,它允许用户自由地裁减和优化。(5)gui开发支持linux本身有性能优秀的x windows系统,在x windows系统的支持下,能方便的进行图形用户界面的开发。(6)丰富的开发技术资源linux有一个庞大的支持者群体,其中许多人都编写驱动程序和其他的更新程序,并且免费通过internet进行共向。这意味着对新硬件的linux驱动程序甚至比用其它unix系统还来得及时6。2.3 通信方式手机硬件平台的s3c2440属于片上系统,处理器上具备串口、显示等外围接口电路,在本系统中使用s3c2440的uart端口,将gprs模块的rs232的rxd、txd与之相连接。需要在内核中添加相应的串口驱动。串口驱动完成基本的底层操作,为上层的通信程序提供接口函数。通用异步收发器,简称uart,即“universal asynchronous receiver transmitter”,它用来传输串行数据,手机发送数据时,cpu将并行数据写入uart,uart按照一定的格式在一根电线上串行发送出去,手机接收数据时,uart检测另一根电线上的信号,将串行数据收集到缓冲区中,cpu即可读取uart获得这些数据8。uart之间以全双工方式传输数据,最精简的连线方法只有三根线:tx用于发送数据,rx用于接收数据,gnd用于给双方提供参考电平如图2-5所示。txd、rxd数据线以“位”为最小单位进行数据传输,而信息的最小单位为帧,帧由规定好的若干位组成:开始位、数据位、奇偶校验位、停止位等如图2-6。开始位:先发出一个逻辑”0”的信号,表示传输字符的开始。数据位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ascii码。从最低位开始传送,靠时钟定位。奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10120=1200位/秒=1200波特。gprss3c2440uart txdrxdgndrxd uarttxdgnd图2-5 uart数据传输方式停止位开始位数据位校验位图2-6 数据帧的格式3 手机的软件系统设计3.1 通信系统设计gprs模组和微处理器之间的连接时通过串口,对于微处理器而言,gprs模组就相当于一个调制解调器,微处理器通过串口发送at指令控制gprs模块工作情况和得到gprs模块相关信息。用户可以通过at 命令进行呼叫、短信、电话本、数据业务、补充业务、传真等方面的控制。sim900常用的at命令如表1所示。表 1 常用at命令命令命令格式功能描述atat测试连接是否正常。at+cmic=?at+cmic=,设置mic的通道及增益。at+cmgf=?at+ cmgf =设置短消息格式。at+chfa=?at+chfa=切换声音通道。at+clvl=?at+clvl=喇叭音量调节。at+cscs=?at+cscs=选择te 字符集。atdatd;拨号,建立会话、数据或传真等业务。athath0呼叫挂起。ataata呼叫应答。at+vts=?at+vts=发送dtmf 拨号音。at+cmgs=?at+cmgs= , at+cmgs= 发送短消息。at+cmgr=?at+cmgr=,读取短消息。上位机通过uart发送at命令到gprs模组。at命令以换行符作为指令的结束标志,因此在编程发送at命令控制gprs模组时,发送每条命令后还需要发送rn标志命令结束13。(1) ath 呼叫挂起 用户使用ath( 或ath0) 来切断与远端用户的连接,在有多个电话的情况下,所有的电话都释放(包括正在通话挂起和等待的电话 )。(2) ata 呼叫应答 当命令收到呼叫来电信号时向用户发送ring然后等待用户应答呼叫。应答模式下的命令和响应如表2所示。 表2 应答模式响 应 ring 有来电 命 令 ata 应答此来电 响 应 ok 接受呼叫 命 令 ath 挂断电话 响 应 no carrier 电话已切断 (3) at+cpbr 读取电话本 该命令返回用at+cpbs 命令选择的存储区一定范围内的记录。读取电话本的命令和响应如表3所示。表3 读取电话本方式命 令 at+cpbr=? 检测命 令 响 应 +cpbr: (1-50), 20,10 ok 有50 个存储位置电话号码最长20位相关信息最多10 个字符 命 令 at+cpbr=12,14 读取位置12-14 的记录 响 应 +cpbr : 12,112,129,emergency +cpbr : 13,+331290909,145, fred +cpbr :14, 0146290808,129, zazi ok 显示记录位置号号码号码类型相关信息 命 令 at+cpbr=10 读取记录10 响 应 +cpbr :10,0146290921,129,ro b ok 显示记录10 命 令 at+cpbr=52 读取记录52 响 应 +cme error: 21 位置号错误 (4) at+cmgr 读取短消息 命令格式: at+cmgr=采用text 方式的响应格式:+cmgr:, , 命 令:at+cmgr=1 响 应:+cmgr: rec unread, 0146290800,98/10/01,18 :22 :11+00, abcdefghi ok (5) at+cmgs发送短消息采用text 方式的命令格式:at+cmgs= , text is entered 按ctrl-z 发送出去/ 按esc 取消 .命 令: at+cmgs=+33146290800 please call me soon, fred.响 应:+cmgs : ok返回给用户的消息参考值 由模块分配这个值从0 开始每发送一次消息递增1 不论是否发送成功在0-255 之间循环。3.2 手机的应用程序设计3.2.1 串口初始化手机硬件平台中的gprs模组和微处理器之间通过uart串口连接和通信,在使用uart串口前要对串口的一下数据进行初始化,包括波特率、数据位、停止位、奇偶校验位等。通过结构体termios进行设置以设置串口。结构的定义如下:struct termiostcflag_t c_iflag; * 输入模式控制* tcflag_t c_oflag; * 输出模式控制* tcflag_t c_cflag; * 控制模式控制* tcflag_t c_lflag; * 本地模式控制* cc_t c_line; * 线路规则* cc_t c_ccnccs; * 控制符* ;uart串口初始化的程序如下:cfsetispeed(&options, b115200); /*设置串口的波特率为115200bps*/options.c_iflag &= (ignbrk|brkint|parmrk|istrip|igncr|icrnl|ixon); /*设置输入模式*/options.c_cflag &= parenb; /*设置奇偶校验位为无奇偶校验*/options.c_cflag &= cstopb; /*设置停止位为1位*/options.c_cflag &= csize; options.c_cflag |= cs8;/*设置数据位为8位*/options.c_lflag &= (icanon | echo | echoe | isig); /*设置本地模式*/串口的初始化完成后,通过linux下的write和read函数分别进行对串口的读和写操作。其函数原形如下:int write(int handel, void *buf, int nbyte);int read(int handel, void *buf, int nbyte);然后初始化gprs,程序如下:gprs_sendcommand(at+cmic=0,15n); /*设置mic的通道及增益*/gprs_sendcommand(at+chfa=1n); /*设置声音通道为1*/gprs_sendcommand(at+clvl=100n); /* 设置喇叭的音量为100*/gprs_sendcommand(at+cmgf=1n); /*设置短信息格式*/gprs_sendcommand(at+clip=1rn);/*开启来电显示功能*/gprs_sendcommand(at+cscs=ucs2n); /*设置usc2编码*/gprs_sendcommand(at+csmp=17,0,2,25rn); /*支持汉字发送*/3.2.2 手机信号强度的检测 当手机信号的强度变化时,手机会自动检测信号的强度然后作相应的变化,信号检测的函数在一个主线程内,当信息发生变化时向串口发送一个at指令“at+csqrn”,gprs返回的数据保存在一个队列当中,然后队列进行出对操作读出队列中的数据,代码如下:gprs_sendcommand(at+csqrn); deletequeue(buf); /buf为出对的数组,gprs返回的数据保存在buf数组里面,返回值的形式为:+csq:,第一个参数是强度,第二个参数是误码率,我们在本程序中只检测第一个参数的值就行, buf里面的数据是以字符串形式存储的,我们需要把字符串中表示信息强度的第一个参数转化成数字的形式,表示信号强度的参数为一个字符或两个字符,在我们转化成数字时要进行一次判断:一种情况是参数是一位数时代码如下:if(buf7 9) sign= (buf6)- 0x30; 另一种情况参数是两位数时,代码如下:if(buf7= 0&buf7= 9) sign= (buf6- 0x30)*10+ buf7- 0x30); 然后把转化为数字的信号强度以图形的方式显示到触摸屏的信号强度的位置上面,代码如下:tft_clearwindow(signbox);for(i=0;i=10)return 0; 数组从队列中读到数据的第13字符为c时在屏幕上打印注册网络中,当检测次数超时时显示网络注册失败,代码如下: while(buf12!= c)i+;tft_settextpos(msg, 20, 33);tft_print(msg, 注册网络中.);printf(注册网络中.r);gprs_sendcommand(at+cops?n);deletequeue(buf);deletequeue(buf);if(i=10)printf(网络注册失败n);return 0;数组从队列中读到到的字符串的第十三个字符为c第十九个字符为m时表示sim卡为中国移动,然后检测信号的强度,代码如下:if(buf12= c)&(buf18= m)memcpy(infoshow, 中国移动,strlen(中国移动);tel_sigal();fflush(stdout);printf(中国移动n);return 0;数组从队列中读到的字符串的第十三个字符为c,第十九个字符为u时表示sim卡为中国联通,然后检测信号的强度,代码如下if(buf12= c)&(buf18= u)memcpy(infoshow, 中国联通,strlen(中国联通);return 0; 3.2.4 查看sim卡通讯录的信息我们点击触摸屏上面的通信录我们能查看sim卡里面的联系人的信息,我们点击通信录时首先要发送“at+cpbs?rn”命令,gprs返回的值存放在队列中,然后进行出队列操作,把值保存在数组里面,首先对数组进行切割得到联系人的个数,通过int phonebook_getnum(void)函数实现。int phonebook_show(int num, int maxnum)函数读取sim卡中制定序号的联系人的信息,参数中的num要转化成字符串存放在数组buf_num中 ,此时读取buf_num的联系人信息的代码为:gprs_sendstring(at+cpbr=);gprs_sendstring(buf_num);gprs_sendstring(r);gprs_sendstring(n);gprs返回的数据即是序号为num的电话信息,循环读出sim卡中的电话信息,然后把序号、电话号码和联系人的姓名打印在屏幕上面,我们通过点击触摸屏上面的上翻下翻的虚拟按键来查看联系人的信息。case c_up: /上翻if(-info_list maxnum )info_list = 1;break;case c_down: /下翻if(+info_list maxnum)info_list = 1;while(phonebook_show(info_list, maxnum) = error)printf(你们所指定的位置没有信息n);if(+info_list maxnum )info_list = 1;break;case c_hang: gprs_sendcommand(atrn);3.2.5 短信发送的程序设计图3-1 发送短信过程首先选择菜单项“发短信”,进入发送短信子程序。程序首先要求输入对方的电话号码,按确定键后输入短信内容,最后按确定键完成短信的发送。 首先通过点击触摸屏得到点击处的坐标,然后通过坐标执行点击的功能,输入号码的代码如下:key += 48;tel_numi+ = key;tel_numi = 0;tft_msg_print(tel_num);if(i 17)i=17; tel_num即为输入的电话号码,由于gprs只识别uncode码,所以我们要把电话号码和发送短信的内容转化为uncode码后再发送,发送短信的命令的格式为:“at+cmgs=,“代码如下:gprs_sendstring(at+cmgs=);strtounitel(tel_num, tel_num_uin); gprs_sendstring(tel_num_uin); usleep(300*1000);tft_msg_print(请输入短消息:n);py_getstring(msg,info, 100);/调用t9输入法,输入文字,返回对应信息的ascii码if(info0 = 0)gprs_sendstring(033n);tft_msg_print(发送取消);return; strtouni(info, info_uni);/将信息转换为unicode码gprs_sendstring(info_uni);gprs_sendstring(032n);tft_msg_print(发送成功!);删除一个数字时,按挂机键,case c_cancel:tel_num-i = 0;tft_msg_print(tel_num);if(i 40)num = 1;return num;3.2.7 拨打电话的程序设计 选择打电话进入拨打电话程序,程序首先获得键盘输入的电话号码,然后通过串口将命令发给gprs模组,完成打电话操作流程图3-2所示。具体操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论