摘要:简单介绍在多功能电话上实现一个点到点邮件收发系统的技术和过程。在通信方面,系统使用串口通信,通过Modem用电话号码作为收发者的地址,避免网络通信中需要IP地址的问题。在架构上,系统分为服务层和客户层:服务层负责通信链路的建立和数据的收发,客户层负责邮件管理和客户界面,增加了系统的灵活性。由于Modem的传输速率有限,设计好的通信协议有助于提高邮件的收发速率,因此结合现有串口通信协议的特点,设计并实现TMP协议。通过该协议,邮件收发系统每秒可以收发2 KB的邮件数据。 关键词:点到点 邮件系统 串口通信 AT指令 引 言
大量嵌入式设备已经进入人们的日常生活和工作中,人们对嵌入式设备的要求越来越高,功能也越来越复杂。笔者与一个嵌入式硬件制造商合作,为其嵌入式电话产品建立了一个软件系统,包括操作系统、驱动程序和一系列应用软件。其中点到点邮件收发系统是一个有明显特色的应用。
本系统是一个基于串口通信的点到点邮件收发软件。运行在嵌入式系统上的邮件收发程序通过Modem以拨号方式连上远端的嵌入式系统,然后进行邮件发送工作。系统结构如图1所示。  图1Tmail系统结构
从用户角度看,其发送流程与普通的电子邮件差不多。用户在编辑好邮件以后,在收信人一栏中填入对方的电话号码,点击发送,系统就会把邮件发送给对应电话号码的远端用户处,当然远端也必须接有同样的嵌入式系统。
系统运行在基于ARM的S3C2410芯片嵌入式目标板上[1]。操作系统是定制的嵌入式Linux,图形界面使用Qt/Embedded支持。
1 系统的构架
系统主要由数据传输、邮件编码、邮件管理和用户界面四部分组成。由于要时刻监视串口的状态,所以系统要一直处于运行状态。但由于嵌入式系统的内存资源和计算资源有限,要尽量减少程序运行时带给整个系统的负载,采用了两层的设计结构,分别叫作服务层和用户层。服务层负责数据传输和邮件编码,用C语言编写,生成的可执行文件较小,一直处于运行状态;用户层负责邮件的管理和用户界面,用C 配以Qt/Embedded编写,由于有大量的界面元素,所以其可执行文件较大,只有用户需要查看和发送邮件时才运行。这样就可以大大减少占用的资源,使整个系统具有更快的速度。
用户层与服务层的通信分两个方面:一方面,当用户层运行时通过信号和共享内存实现实时通信;另一方面,当用户层没有运行时,用文件暂存收到的邮件,在用户层运行后,再由它通知用户。
当需要发送邮件时,用户层先把本地邮件拷贝到共享内存中,然后发送信号通知服务层,服务层接收到信号后,把邮件取出、编码和发送。在发送过程中,为了让用户看到发送的进度,服务端把状态信息放在共享内存中,然后发送信号通知用户层更新状态。当接收邮件时,若用户层没有运行,则把收到的邮件解码后暂存到文件中;若用户层运行着,则服务层通过共享内存和信号不断把接收进度传递给用户层,使其显示给用户,但此时并不会把邮件数据传给用户层,因为此时的邮件数据是经过编码的,等所有数据都接收结束后,服务层才会把邮件解码成本地邮件,然后再传送给用户层保存、显示。
2 服务层的设计与实现
2.1 串口的初始化
在Linux中,串口的设备文件一般为/dev/ttyS0和/dev/ttyS1,分别表示串口1和串口2。首先要用open命令打开串口,然后根据具体的应用来配置串口,比如设置波特率、校验方法、数据位、停止位和流控制等。
2.2 连接的建立和拆除
连接的建立过程,就如同一般的拨号上网过程。不同的只是,拨打的电话号码不是ISP的号码,而是收信人的号码,因此需要在收信人方建立一个拨号服务器,使它能够接通外来的连接请求。Linux下的pppd软件可以实现拨号功能,mgetty可以用作拨号服务器。用pppd和mgetty来建立连接太过奢侈,因为只需建立物理上连通的链路,而不需要用PPP协议建立网络层链路[2]。
本文章更多内容:1 - 2 - 3 - 4 - 下一页>> |