CN101272571A - 移动业务终端系统 - Google Patents
移动业务终端系统 Download PDFInfo
- Publication number
- CN101272571A CN101272571A CNA2008101060023A CN200810106002A CN101272571A CN 101272571 A CN101272571 A CN 101272571A CN A2008101060023 A CNA2008101060023 A CN A2008101060023A CN 200810106002 A CN200810106002 A CN 200810106002A CN 101272571 A CN101272571 A CN 101272571A
- Authority
- CN
- China
- Prior art keywords
- input method
- module
- function
- thread
- terminal system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种移动业务终端系统,包括处理器,以及受处理器控制的GSM/GPRS模块、音频处理模块、SIM卡烧写模块、输入模块、输出模块等模块,本发明将普天输入法移植到该终端系统中,挑选适当的功能模块,从而使该终端系统成本低且功能丰富,适于农村以及偏远山区推广使用。
Description
技术领域
本发明涉及通讯技术领域,具体地说涉及一种移动终端系统。
背景技术
随着经济的快速发展,人们的生活节奏变得飞快,嵌入式终端的新陈代谢速度也随着人们的生活节奏变得飞快。一年换几部手机已经不是什么新鲜事。对于各种嵌入式移动终端的开发商来说,这即是机遇,也是挑战。如果能够准确预测市场的潜在需求并且在计划时间内集成出市场需求旺盛的终端产品,就能取得巨大的商业成功。当然如果未能按时做出产品,便会错过商机,造成巨大经济损失。因此,产品开发的组件化、流程化集成成了必然的趋势。换句话说,产品的集成开发不会是从头设计,各个模块都是自己设计的。采用已经成熟的开发模块进行集成成了必然。
针对各种终端开发市场,各个开发软硬件模块厂商开发出针对不同应用的模块,并且大都提出了跨平台解决方案或者针对不同平台的解决方案以适应更广泛的应用市场。然而,目前大多数移动终端成本较高,不适合农村以及偏远山区推广应用。
发明内容
本发明的目的在于提供一种移动业务终端系统,其成本低廉,适于农村及偏远山区使用。
本发明移动业务终端系统,包括处理器,以及受处理器控制的GSM/GPRS模块、音频处理模块、SIM卡烧写模块、输入模块以及输出模块等。
本发明通过比较目前操作系统的利弊以及成本,最终确定以Windows CE作为操作系统。并且,优选采用三星的S3C2410处理器作为系统的处理器。其中所述的GSM/GPRS模块采用的是华为的GTM900-A。
为了能够方便地打印开户凭证等,本发明输出模块不仅包括显示屏还可包括打印机端口。
本发明还将普天输入法移植到终端系统,作为系统输入法。
在Windows CE中移植普天输入法,大致分为如下几个步骤:
1)设计输入法操作界面及操作流程;
2)根据设计的界面及流程,结合Windows CE按键消息处理的机制,融入普天输入法中有用的输入法接口,生成WindowsCE接口标准的输入法动态库文件;
3)修改Windows CE的注册表文件,使得输入法文件生效;
4)应用程序根据输入法的设计,进行输入框默认输入法的事件修改。
本发明移动业务终端,能够实现语音通话,、短信功能、WAP、电话本功能、输入法功能、缴费功能、选号功能、开户功能、统计查询功能、彩信解析、支持键盘输入、支持一键接入功能等。其成本低廉,功能丰富,适合农村以及偏远山区使用。
附图说明
图1本发明移动业务终端系统硬件框架图;
图2移动业务终端系统软件框架图;
图3移动业务终端系统应用系统图;
图4输入法实现效果图;
图5ImePressKey函数流程图;
图6ImeToAsciiEx函数流程图;
图7ImeToAsciiEx函数中非输入法引擎按键处理流程图;
图8普天输入法不需要额外处理时按键处理流程图;
图9普天输入法需要额外处理时按键处理流程图;
图10CandWndProc函数中WM_PAINT消息处理流程图;
图11入法调用逻辑流程图;
图12基于GSM模块的应用系统框架图;
图13响应解析模块处理流程图;
图14来电处理流程图
图15接听电话过程中线程逻辑流程图
图16接收短信处理逻辑流程图
图17模块信号强弱探测线程流程图
具体实施方式
下面实施例用于说明本发明,而不能限制本发明。在不背离本发明精神和实质的情况下,对本发明所作的修改或变化,均属于本发明的范围。
实施例1、系统框架
本例从硬件和软件两个方面介绍一下系统框架的搭建过程。
1、硬件方案
由于项目直接涉及实际产品,和实验室研究不同,对于成本控制要求很高,因此,选择硬件要在功能、成本和开发时间上找到结合点。成熟的硬件、低廉的成本以及良好的技术售后服务成为考虑的重点。
根据需求,硬件部分框架可以分为下面几个部分(如图1所示):处理器、GSM/GPRS模块、音频处理模块、SIM卡烧写模块输入模块(包括手写板、触摸屏、键盘等)、输出模块(包括打印机、LCM、LCD触摸屏)以及电源模块(电池模块、直流模块)等。
其中,占成本最多的几个部分是LCD触摸屏、打印机、GSM/GPRS模块和处理器。这几个部分除了处理器,基本都是通用的组件,也就是说都是有跨平台设计的模块,因此大都可以根据市场调查,慢慢实验,找到性能最稳定价格最低廉的产品,可能会影响硬件设计,但不属于软件开发研究的范畴,这里就不多介绍了。影响软件开发和平台选择最主要的因素就是处理器。
经过调查,处理器的解决方案大致分为两种:一种是采用智能手机专用处理芯片(如TI或者MTK公司的一些产品),另一种是采用通用嵌入式芯片,如ARM、MIPS等。
从功能上分析,产品和智能手机非常接近,完全可以基于智能手机的平台方案进行修改扩展,而且专门的手机芯片处理器把很多外围设备电路的功能融进了芯片中,使得产品的稳定性和省电性都更加出色。而最终没有采取这个方案,原因主要是产量。和手机的用户对象不同,本产品的直接用户不是广大老百姓,量不可能像手机那样动辄几百万台。大的芯片厂商对于这种专有芯片的客户合作的起始资金一般都是百万美金以上的,远远超出研发预算,均摊到每个产品的话成本也过高,因此这种方案是不可行的。
通用芯片的种类很多,根据需求最终产品要能同时处理很多业务功能,还要有多媒体的播放功能。要符合这些功能,处理器的主频至少应达到200MHz。根据市场价格衡量,以及和硬件工程师讨论,最终选择了三星的S3C2410为主处理器芯片。
2软件方案
软件解决方案的确定主要考虑成本和开发难度两个方面。成本是不仅是软件购买的成本,而是包括后期维护在内的综合成本,开发难度也不仅是开发的快慢,同样要包括后期维护、应用扩展的难度等。
根据硬件方案和功能需求,首先排除了无操作系统的方案。无操作系统对于如此复杂的应用,开发难度极大,而且今后功能的扩展非常不便。而基于嵌入式操作系统的开发,有如下方案可选:基于手机操作系统方案和基于通用嵌入式操作系统。
从开发方案的完备性和操作系统的技术支持方面,手机操作系统和我们的需求可以说是十分匹配的。主流的智能手机操作系统是Windows Mobile和Symbian(Linux我们算作通用嵌入式操作系统)。但由于市场上License难以管理,这两个操作系统产品是不和小量产品的厂家合作的,合作的起点价格都在百万美金以上。由于本发明开发的产品量并没有那么大,按照年费形式交费License成本会很高,因此只能放弃这套方案。
通用的嵌入式操作系统比较多。本发明是人机交互的操作终端,对操作系统内核的实时性等没有太高要求,因此,从界面交互性、应用扩展的难易性、技术支持和资料的普及性考虑,Windows CE和嵌入式Linux成了最终的候选者。
单从操作系统角度看,两个操作系统都是很优秀的操作系统,完全能够满足性能需求,而Windows CE每套的License费用最低大约3美金,而嵌入式Linux是开源的,价格很便宜。单从这个角度看似乎嵌入式Linux是很有优势。不过这两个操作系统是有差别的,并不是属于一个范畴。Windows CE是一整套的操作系统解决方案,包含了GUI、通信协议栈、多媒体编解码器等等多种开发资源。可以说,除了手写输入等个别软件需要额外购买,Windows CE提供了完备的开发环境平台。而Linux只是一个纯的造作系统内核,既无图形应用界面,又无多媒体编解码器。尽管由于Linux的开放性质,可以从网上找到各种各样的开源工具,可是根据调查,绝大多数好用的工具都是个人应用免费的,一旦用于商业用途价格都很贵。拿著名的跨平台图形开发工具包QT来说,商业用途,10万套以内的License价格是每套5美金,超过了Windows CE很多,而且功能也主要就是GUI,其他功能不够完备,只能再找其他第三方工具或者自己开发。从售后技术支持角度,微软的MSDN、免费技术服务电话及庞大的开发用户群,是目前Linux很难相比的。
综上分析,这里选择了Windows CE作为移动业务终端的操作系统。软件系统的框架如图2所示。
“应用系统”是指基本需求功能,如图3所示,包括话机功能、业务功能和其他功能。
实施例2、基于Windows CE操作系统的输入法交互设计
普天输入法是普天信息技术研究院有限公司自主研发的商业用途数字键盘手机输入法。其中包含中文拼音、笔画、智能英文、字母、数字等多种输入方法,支持多个平台,完全能够满足键盘输入的需求。由于和普天合作开发项目,使用该输入法必然节省成本,而且能更直接地获得技术上的支持。
从跨平台技术角度讲,普天输入法是典型的“一次编码,到处编译”的商业产品。项目应用开发人员只会得到一个能够参加开发板编译的静态库文件、几个头文件、开发说明书以及几段开发示例代码。任何输入法内部代码将是被屏蔽的。当SDK有改动时,将新的SDK提交给普天,由普天重新通过新的SDK编译出新的库文件在传过来。如果开发平台是其他操作系统,只要向他们提供相应的编译配置,他们就把同样的源码按照提供的编译器配置,并重新编译成可以提开发者使用的库文件,这就是基于标准编译的跨平台技术的最大好处。输入法移植开发过程
在Windows CE中移植普天输入法,大致分为如下几个步骤:
1)设计输入法操作界面及操作流程;
2)根据设计的界面及流程,结合Windows CE按键消息处理的机制,融入普天输入法中有用的输入法接口,生成WindowsCE接口标准的输入法动态库文件;
3)修改Windows CE的注册表文件,使得输入法文件生效;
4)应用程序根据输入法的设计,进行输入框默认输入法的事件修改。
下面就从这几个方面进行具体的输入法移植开发描述。
1、输入法界面交互设计
普天输入法已经提供了12键标准手机按钮的操作交互按键处理,比较类似于普通诺基亚手机的输入法处理方法。可是由于本发明并不是一个普通手机,具有平台的特殊性,因此如果完全按照普天的默认开发设计会给用户的输入带来不便。需要根据硬件和操作进行适当修改。
最大的不同是本发明的显示屏是采用3.5寸横置大屏,一行能够显示比较多的候选字,如果还采用左右移动光标的方式来进行输入选择,按键次数会比较多,比较麻烦。也就是说输入法应该更趋向于PC的输入法,类似紫光输入法、搜狗输入法、Google输入法等,采用数字标识来确定候选字。然而由于按键的方便,PC的输入法一般不具备下一字的联想功能,也就是输完一个字后选字框就会消失了,不会有联想的候选字框继续维持在屏幕上。这个对于按键不那么方便的12键小键盘来说还是很有存在必要的。本发明的输入法交互设计必然是两者的结合。
普天输入法对键盘按键的定义见下表:
表1普天输入法键盘按键定义表
本发明把写作窗口和候选窗口合并在一个窗体里显示,简称选字窗体,右上角的蓝色框是输入法状态窗口(因为背景只是测试窗体和Windows CE标准的界面,略显难看。融入最终应用软件的状态栏效果会好很多)。状态窗口始终显示,选字窗体在开始输入的时候显示,输入完毕后消失。效果图如图4所示。
由于本发明的移动终端不是通用的应用设备,操作业务、输入号码、编辑短信等不同功能不同的输入框需要采用不同的默认输入法。需要一个方法来保存普通文本输入框的默认输入法及当前某个特殊输入框需要的输入法等输入法配置信息。这里采用Windows的注册表来实现。在注册表中设置两项,把信息存储进去,每次启用输入法时,系统先预先检测这两个键的值,再根据键值调出相应输入法。应用程序的窗体需要为某个特殊输入框设置输入法时,先修改注册表,然后激活输入法即可。
2、注册表的修改
Windows CE的输入法是存储在“\Windows\”目录下的动态链接库文件。这里根据普天输入法,命名输入法动态链接库文件为MTIP.dll。为了让系统正常调用输入法,需要修改输入法在注册表的键值。
Windows CE只允许安装一种输入法,相应设置保存在:[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Layouts\e0010804]
其中的子键“Ime File”中存放的字符串键值就是DLL动态链接库的文件名。这里为“MTIP.dll”。
除了Windows CE操作系统需要调用注册表,应用程序窗体也需要根据自己的需求定制获取焦点时需要激活的输入法。具体用法在后面的部分有专门叙述,这里仅对注册表的键目录及键值进行说明。保存输入法信息的键的目录如下:
[HKEY_LOCAL_MACHINE\Software\MTIP]
里面有两个子键:InputMethodCurrent和InputMethodDefault,都为DWORD类型。
InputMethodCurrent键保存当前应用的窗体需要激活的输入法,取值如下:
表2注册表InputMethodCurrent键值定义表
0 | 表示无特殊需求,激活用户默认设置的输入法 |
1 | 表示当前应用需要激活拼音输入法 |
2 | 表示当前应用需要激活笔画输入法 |
3 | 表示当前应用需要激活英文输入法 |
4 | 表示当前应用需要激活字母输入法 |
5 | 表示当前应用需要激活数字输入法 |
6 | 表示当前应用需要激活电话号码输入状态,此时不能切换其他输入法 |
InputMethodDefault键保存用户设置的默认中英文输入法,当InputMethodCurrent取0的时候进行判断,取值如下:
表3注册表InputMethodCurrent键值定义表
0 | 表示当前应用需要激活数字输入法 |
1 | 表示当前应用需要激活拼音输入法 |
2 | 表示当前应用需要激活笔画输入法 |
3 | 表示当前应用需要激活英文输入法 |
4 | 表示当前应用需要激活字母输入法 |
3、输入法动态库的生成
Windows CE的输入法的接口动态库文件主要包含19个接口函数。可是并不是所有函数都需要详细描述。只需要处理其中的ImeInquire、ImeSelect、ImeSetActiveContext、ImePressKey、ImeToAsciiEx、UIWndProc、CandWndProc、StatusWndProc几个接口函数以及动态链接库的入口、出口函数,其他函数只需要直接return就可以了。
输入法的启动:
●DllMain
这个函数是动态链接库的主函数。启动动态链接库进程时,执行初始化普天输入法、初始化系统字体、系统注册主UI窗体类、系统注册选字框窗体类、系统注册状态框窗体类。结束进程时,系统注销状态框窗体类、系统注销选字框窗体类、系统注销主UI窗体类。
●ImeInquire
这个函数是启用输入法时最先被输入法管理器调用的函数,用以获得输入法的有关信息。函数应返回输入法编辑器的初始化信息,在IMEINFO结构中设置当前输入法的各项属性,以及当前输入法的用户界面窗口类名称。
●ImeSeIect
这个函数在用户打开或关闭输入法时被调用。详细的内容包括普天输入法的变量初始化重置、从注册表中读取默认输入法的配置信息进行初始化配置、Windows CE输入法上下文内容的初始化、刷新显示界面。
●ImeSetActiveContext
这个函数在应用程序某个窗体获得或者失去输入焦点时被调用。主要利用失去焦点时,把输入法置为无输入法状态,即向注册表中写入无输入法状态,然后刷新输入法显示窗体并重置输入法。
输入法按键处理:
●ImePressKey
这个函数是键盘事件发生时输入法管理器最先调用的函数。在主处理函数之前对进行预处理,根据函数的返回值确定对于特定的输入上下文来说此键盘事件是否应送交输入法编辑器进行下一步处理。当返回TRUE时,输入法编辑器将进行下一步处理,否则不进行处理,交给操作系统处理。具体实现逻辑流程如图5所示。
●ImeToAsciiEx
这个函数是输入法进行编码转换处理的主要函数,根据按键传进来的值进行相应处理。普天输入法最核心的处理逻辑就在这个函数内体现。该函数和ImeProcessKey函数一起构成了键盘输入方式下输入法编辑器转换引擎的主体。逻辑流程如图6所示。
其中“根据按键对应的键值和用户交互设计,对按键处理”一步内容包含两类处理,一类是非输入法引擎的按键处理,一类是输入法引擎相关的按键处理。
非输入法引擎的处理通过键值判断,流程如图7所示。
这里的输入法引擎采用普天输入法的字符转换引擎。普天输入法把按键的处理分为两类,一类是不需要输入法进行额外处理的,一类是需要额外处理的。不需要额外处理时,该按键只与输入法的内部引擎进行交互,保存输入法转化字符的缓存被输入法引擎所改变;需要额外处理时,输入法引擎不对按键的字符进行字符转化工作,根据按键的键值进行相应的处理。
输入法引擎工作时,首先获取当前输入法的状态信息,然后进行是否需要额外处理的判断。当不需要额外处理时,按键的处理流程如图8
所示。当需要额外处理时,按键的处理流程如图9所示。
●UIWndProc
这个函数是用户界面接口的消息处理函数,可以在里面处理各种界面相关的消息。这里主要对WM_CREATE、WM_IME_ENDCOMPOSITION、WM_DESTROY和WM_IME_NOTIFY等几个消息进行了处理。
WM_CREATE是在输入法启动时发起的用户界面窗体事件,用于创建用户界面接口窗体组件。这里创建了选字窗体和状态窗体。
WM_IME_ENDCOMPOSITION是结束拼写的事件。这里处理输入完时选字窗体的隐藏。
WM_DESTROY是关闭输入法时销毁当前窗体之前的处理事件。这里进行对选字窗体、状态窗体等的关闭以及释放资源等操作。
WM_IME_NOTIFY是处理通知消息的事件,多用于调试。
●StatusWndProc
这个函数是用户界面接口状态窗口组件的消息处理函数。可以进行各种窗体消息的处理。目前只对WM_PAINT消息进行了处理,以后还可以根据需求扩展,处理鼠标点击消息等。WM_PAINT消息是窗体的绘制消息。状态窗体很简单,就是一个蓝色的背景加上一个标识当前输入法状态的文字。从全局变量中读出当前的输入法状态,通过条件语句判断绘制即可。
●CandWndProc
这个函数是用户界面接口候选字窗口组件的消息处理函数。由于把写作窗口(Composition Window)和候选窗口(Candidate Window)合并为一个窗体,简称选字窗体,因此采用这个函数作为该选字窗体的消息处理。
同状态窗口的处理函数一样,这个函数主要也只对绘制消息WM_PAINT进行了处理,不过逻辑稍微复杂一些。逻辑流程图如图10所示。
上述的各个函数根据逻辑都实现后,在EVC中选好编译器,并将普天输入法的库文件加入工程中,点击编译即可。编译通过后,将生成好的库文件放到板子“\Windows\”目录下,开始应用。
4应用程序的输入法调用
完成上面介绍的内容只是搭建好了输入法的使用平台。应用程序要想随心所欲地调用输入法,还需要一些额外的处理。输入法使用的逻辑流程如图11所示。
图11左侧列是输入法的流程,右侧列为应用程序的流程。由图可知,如果希望在某个窗体的某个编辑框获取输入焦点时默认开启某种输入法,只需要在该编辑框的获取焦点的预处理函数中加入一些代码即可。代码示例如下:
DWORD inputtype;
DWORD dwData=sizeof(DWORD);
HKEY hKey;
inputtype=3;//需要的输入法代码,详见表4-4
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
_T(″Software\\MTIP″),
0,
0,
&hKey)==ERROR_SUCCESS)
{
RegSetValueEx(hKey,//得到键值的类型和值
_T(″InputMethodCurrent″),
NULL,
REG_DWORD,
(LPBYTE)&inputtype,
dwData),
}
RegCloseKey(hKey);
HWND hWnd=m_hWnd;
HIMC hIMC=ImmGetContext(hWnd);
LPINPUTCONTEXT 1pIMC=ImmLockIMC(hIMC);
if(ImmGetOpenStatus(hIMC))
{
ImmSetOpenStatus(hIMC,FALSE);
}
else
{
ImmSetOpenStatus(hIMC,TRUE);
}
ImmUnlockIMC(hIMC);
ImmReleaseContext(hWnd,hIMC);
应用程序开发人员只需对第四行“inputtype=3;”等号后面的数字进行修改就可以实现不同的输入法调用。具体数字对应的输入法见表3。
实施例3、基于AT命令的GSM模块通信系统应用设计实现
GSM模块是制作小批量、低成本移动终端必不可少的组成部分,应用非常广泛。GSM模块的设计制造商当然也为其产品能够应用于不同的软硬件平台制定跨平台标准。现在最通用流行的方式就是“串口通信+AT指令”。
项目根据功能需求和市场价格,选用了华为GTM900-A型GSM/GPRS模块作为产品的通信模块。下面就这款产品和基于该模块的应用系统软件设计做详细描述。
1、基于GSM模块的系统开发流程
基于GSM模块的开发一般会遵循如下步骤:
●首先根据购买的GSM的接口设计硬件电路。仔细阅读模块的说明书,注意管脚布局和电气特性。
●确保硬件调试联通后,编写串口通信调试程序,通过简单的AT指令进行硬件连接和功能测试。这里采用ARM处理器的开发工具ADS进行测试。
●编写Windows CE的串口驱动,并进行串口通信测试。这里采用Platform Builder 4.2编译串口驱动,EVC来实现串口通信测试程序。
●基于Windows CE平台对GSM模块进行简单AT命令的测试。由EVC编写测试程序进行测试。
●根据功能需求,设计实现上层应用逻辑功能。
第一部分由项目的硬件工程师来完成,这里不做介绍。串口的驱动编写以及基于Windows的串口程序的开发网上和图书馆已经有很多资料,这里也不做详细介绍了。下面将对应用系统中和GSM模块相关部分设计实现的关键问题进行详细说明。
2、项目应用系统GSM功能平台设计实现
实现GSM模块应用的本质就是对AT命令的逻辑组合。而处理逻辑的难点在于命令的并发性。由于AT命令功能强大,几乎所有对GSM模块的操作都要通过AT,而AT命令又是有响应的命令。有的命令是立即响应的,有的是延时响应的。响应还不仅是用户的AT命令触发的,还可能是外部通信触发的,比如有来电、收到新的短消息等。这就意味着应用系统的逻辑不可能按照线性的顺序逻辑进行设计,否则就会造成混乱。比如打电话的过程中进行音量调节。电话未挂断,打电话的指令还未执行完毕,这个过程中音量调节这个新的AT命令发出,模块会立即响应。如果按照线性的逻辑,在挂断电话后再执行,也就失去了调节的意义。
这种并发行性显然对接收GSM发出的响应命令的处理提出了较高的要求。一方面需要知道某一个响应对应的是哪条AT命令,或者是非AT的响应(如收到短信);另一方面处理该响应的时间还不能很长,否则会影响下一个响应的接收处理。
通过对AT命令格式和流程的分析,利用Windows的线程技术,设计了一种平台方案,较好地解决了上述问题,取得良好的效果。
1)系统框架
由对AT指令的分析,可以看出,对GSM模块的操作不外乎串口的读和写。向串口发送是可以逻辑顺序控制的,而从串口接受后信息则可能是各种各样不同的响应,可能性非常的多。利用Windows的线程和事件消息机制,设计的系统框架如图12所示。
系统被分为三个大层次:应用层、逻辑层和通信层。应用层是和外部进行信息交互的应用层次,主要包括窗体界面和其他外部设备(指示灯、烧写的SIM卡、打印机等)。逻辑层又分为两个子层,上层包括前台应用线程和后台线程。前台应用线程是由应用层的各种操作触发的需要向GSM发送AT命令进行通信的各种逻辑线程,应用的时候临时创建;后台线程是系统启动时直接加载的对GSM模块发出的各种非前台应用线程触发的消息进行处理的常驻线程,系统退出时销毁。下层是响应解析模块,对GSM发出的所有响应消息进行判断,并通知上层。为了保证实时性,响应解析线程并不对收到的东西做任何具体处理,只进行判断和通知。通信层只包含串口的发送和接收两部分。图中的箭头表示消息传递的方向。
●通信层
通信层的串口通信采用Windows CE的API封装成类CPSerialPort。该类封装了打开关闭串口和发送接收串口等函数。打开串口时通过参数对串口进行设置,同时开启内部监听串口线程,线程监听到串口消息,通过回调函数的方式,调用用户指定的接收处理函数。用户可以通过发送函数向已经打开的串口进行发送。由于Windows下串口编程的资料比较多,这里就不做详细介绍了,详见文献[23][24][25][26]。
●响应解析模块
相应解析模块包含一个串口接收的回调函数OnDataArrive和一个后台监控消息处理线程MsgProcThread。分成两个部分的设计主要是为了保证串口接收的实时性,避免对接收消息处理时间过场影响后面的消息接收处理。
工作时,首先创建并初始化一个STL的queue队列结构体实例MsgQ。queue是一个先进先出的队列。程序启动的时候,创建后台监控消息处理线程MsgProcThread。该线程内是个无限循环,首先判断MsgQ的队列是否为空。为空时调用系统的WaitForSingleObject[27]函数进行阻塞等待,避免后台线程不工作时占用CPU。当串口收到某一个响应后,调用OnDataArrive函数。函数将收到的数据压入队列MsgQ中,然用SetEvent后发出一个事件信号,就结束函数。这个过程时间非常短,不会影响后面串口数据的接收,起到了缓存的作用。此时线程的WaitForSingleObject函数收到事件信号,开始触发执行线程后面的消息判断处理语句。判断处理完成后,系统自动循环回到MsgQ的是否为空判断,直到把队列中的所有消息都处理完毕,线程再次阻塞,进入等待状态。整个处理流程图如图13所示。
具体的消息处理判断过程需要对所有的可能的响应类型进行处理,否则就可能造成逻辑错误。AT命令集十分庞大,不可能一下子把所有的可能性都列入,而且很多需求用不到的命令的响应都可以不进行处理,因此,这是个根据功能开发不断扩充的过程。下表列出几个主要的和电话短信处理相关的响应判断条件:
表5主要响应判断条件表
收到响应的前几个字符 | 说明 |
\r\nOK | OK响应 |
\r\nERROR | ERROR响应 |
OK\r\n | 第二回OK响应,用于打电话 |
\r\nRING\r\n | 有来电 |
\r\n+CLCC: | 读出来电号码 |
\r\nNO ANSWER | 电话无应答 |
\r\nNO CARRIER | 对方挂机 |
\r\n> | 发短信时AT成功,等待输入短信内容 |
\r\n+CMGS: | 短信发送成功 |
\r\n+CSQ: | 读出模块信号强度 |
\r\n+CMT: | 有短信,读出短信内容 |
为每种可能的响应预置一种事件,当判断出为该响应时就通过PulseEvent发出一下事件信号。这样上层的前台应用线程和后台线程就可以根据自己的逻辑需要进行处理了。
●前台应用线程和后台线程
前台应用线程和后台线程由若干个独立线程函数组成。前台应用线程由UI在用户操作时创建,根据功能需求,用户在不同情况下点击不同的按钮创建不同的线程。情况比较多,主要和应用层软件设计相关,这里不做详细讨论。后台线程有三个函数,在系统启动时响应解析模块正常启动后随着应用程序主窗体的创建一起创建(因为要用到响应解析模块的事件,并要与界面进行交互)。
后台线程的三个函数分别是:来电监听线程MonitoringRingThread、来短信监听线程RecvSMSThread和模块信号强弱探测线程AskSignalLevelThread。来电监听线程用来监听串口的“RING”来电信号响应,对其进行相应的处理逻辑。来短信监听线程用来对收到的短消息信号进行处理,根据短信的类型进行分别处理。信号强弱探测线程定时向GSM模块发送信号强度探测的AT命令,获取信号强度值,并实时反应到界面显示中。下面对这三个线程的逻辑做简要介绍。
2)来电监听线程
来电监听线程是一个无限循环的逻辑。进入线程的循环后立即被WaitForMultipleObjects[27]函数阻塞住。无限等待响应解析函数模块中的来电事件或者退出事件。当被退出事件激活时退出死循环,结束线程。当被来电事件激活时,进行来电处理的逻辑,其流程如图14所示。
有来电时首先标记状态,表明现在正处于来电状态。这个标志变量可用作其他程序的逻辑判断和界面的显示标志位。然后启动获取来电号码的线程,得到来电的号码,并显示到界面的相应位置。然后判断系统是否启用来电黑名单的功能,如果启用了,将来电号码和数据库中的数据进行匹配,并自动挂掉黑名单数据库中的电话。如果未启用,直接执行后面的逻辑,开启铃声播放线程,播放来电铃音。这里通过Windows CE带的DirectShow技术[28]可以实现包括mp3在内的多种音乐格式铃声的播放。然后再次进入阻塞而状态等待事件消息。
可能的事件有三种,一种是对方挂机或者超时,造成每隔几秒响应一次的“RING”信号消失,一种是我方接了电话,还有一种就是我方直接挂断了电话。当对方挂机或者超时时,结束铃音的播放,向界面信息栏发送消息显示来电未接的信息,然后把来电状态标识改回非来电状态,并把来电的电话号码插入数据库中的相应表格中。如果我方接了电话,启动接听电话线程,并同时开启挂电话监听线程等待用户的挂机操作。当我方直接挂断来电时,结束铃音播放,将来电的号码保存到数据库并将来电状态标记改回非来电状态,结束本次处理。
接听电话过程中的两个线程的逻辑流程如图15所示,这两个都是临时线程,在来电后开始进行通话时同时被创建。挂电话监听线程启动后直接通过WaitForSingleObject进入阻塞状态,等待挂机事件。接听电话线程进行一个条件判断循环,以秒为单位来记录显示通话时间。判断的标识是变量IsCallFlag。初始的状态为False,当电话被接听后启动线程之前被置为True。当挂电话监听线程监听到一方挂电话的外部事件后,向通话的主窗体发送挂机的消息,通知窗体做响应的处理,然后就将标识IsCallFlag置为False,并结束线程。这时,接听电话线程循环到判断后,跳出了循环,将“结束通话”和总的通话时间显示到界面的信息栏窗体中,并将刚才的通话的电话号码、来电时间、通话时间等信息保存到数据库中。最后结束线程循环的本次处理。
3)来短信监听线程
来短信监听线程的主线程很简单,和来电监听线程类似,是一个无限循环的逻辑。进入线程的循环后立即被WaitForMultipleObjects函数阻塞住。无限等待响应解析函数模块中的来短信事件或者退出事件。当被退出事件激活时退出死循环,结束线程。当被来短信事件激活时,进行来短信的处理的逻辑,其流程如图16所示。
收到短消息时首先判断是普通短信还是业务短信。通过判断短信发送方是否为业务中心的号码来进行判断。业务中心的号码存储于注册表中,可以通过业务的设置窗体进行修改。当短信的发送方号码与业务中心号码一致时,启动业务短信处理线程,进行上层业务的处理,不一致时为普通短信,首先播放来短信的音乐,通知信息栏窗体显示来短信图标,并在信息栏窗体的文字通知部分显示短消息的基本信息,然后将短消息存入数据库,并刷新短信接收对话框窗体。最后结束线程循环的本次处理。
4)模块信号强弱探测线程
模块信号强度探测线程启动时,首先启动一个监听线程,用来监听探测到的信号强度,并做相应处理,然后再定时向GSM模块发送AT+CSQ命令探测信号强度。流程如图17所示。
监听信号强度反馈信息线程的循环是无限阻塞循环,监听退出事件和收到信号强度事件两个事件。收到信号强度事件发生时,通过AT命令的响应,读出rssi的信号强度值,根据值的取值范围,确定信号强度属于哪一级。根据级别,向信息栏窗体发送消息,通知窗体的信号强度图标做相应格数的显示。当收到退出事件时退出线程。
模块信号强弱探测线程在成功启动监听信号强度反馈信息线程后,进入限时阻塞等待退出事件,直到收到退出事件时跳出循环,否则每30秒执行一次循环里的语句,向GSM模块发送一次AT+CSQ命令探测模块的接收信号强度。
本发明的业务终端系统能够实现如下功能:
1智能移动业务终端的基本功能
(1)语音通话功能。即基于GSM/CDMA网络的无线通话功能。
(2)短信功能。包括中英文短信和多媒体彩信。
(3)WAP功能。
(4)电话本功能。支持分组管理,全字匹配查找和模糊查找等。
(5)输入法功能。包括拼音输入法,笔画输入法,英文输入法,并支持手写输入。
(6)附属功能。具备日历/农历功能,支持恢复出厂设置功能。
2智能移动业务终端业务功能
(1)缴费功能。包括短信充值、缴纳分摊预存、缴纳专项月租、参与营销活动、账户管理和打印缴费凭证等功能。
(2)选号功能。包括所有号码选取和分HLR选取号码。
(3)开户功能。开户成功后,可以打印开户的凭证;如果是空卡,可以远程写卡。
(4)统计查询功能。可以统计当天业务办理量,包括开户和缴费;可以查询当天已开户号码和当天预约号码。
(5)增值服务。结合条码扫描器等其他终端设备,对代理商的特殊需求提供应用支持。
3智能移动业务终端业务功能
(1)彩信解析。为实现彩信选号等业务功能要求,以及满足未来业务发展的需要,要求终端具备彩信解析能力。
(2)支持键盘输入。支持拼音、笔划输入方法,支持手写输入(且手写识别率大于99%)。
(3)支持一键接入功能。终端上有明确的功能键区:选号键、开户键、缴费键。
Claims (6)
1、一种移动业务终端系统,包括处理器,以及受处理器控制的GSM/GPRS模块、音频处理模块、SIM卡烧写模块、输入模块、输出模块。
2、如权利要求1所述的终端系统,其特征在于,所述终端系统的操作系统为Windows CE。
3、如权利要求1或2所述的终端系统,其特征在于,所述的处理器为三星的S3C2410处理器。
4、如权利要求1或2所述的终端系统,其特征在于所述的GSM/GPRS模块采用的是华为的GTM900-A。
5、如权利要求1或2所述的终端系统,其特征在于,所述的输入模块所采用的输入法为普天输入法。
6、如权利要求1或2所述的终端系统,其特征在于,所述的输出模块包括显示屏和/或打印机端口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101060023A CN101272571A (zh) | 2008-05-07 | 2008-05-07 | 移动业务终端系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101060023A CN101272571A (zh) | 2008-05-07 | 2008-05-07 | 移动业务终端系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101272571A true CN101272571A (zh) | 2008-09-24 |
Family
ID=40006197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101060023A Pending CN101272571A (zh) | 2008-05-07 | 2008-05-07 | 移动业务终端系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101272571A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902766A (zh) * | 2010-07-07 | 2010-12-01 | 中兴通讯股份有限公司 | 用户信息管理方法、系统及业务处理机 |
CN102695143A (zh) * | 2011-03-22 | 2012-09-26 | 王函石 | 一种全媒体科普视窗sms消息传递方法 |
WO2012136017A1 (zh) * | 2011-04-07 | 2012-10-11 | 中兴通讯股份有限公司 | 一种用户终端来电处理方法及装置 |
-
2008
- 2008-05-07 CN CNA2008101060023A patent/CN101272571A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902766A (zh) * | 2010-07-07 | 2010-12-01 | 中兴通讯股份有限公司 | 用户信息管理方法、系统及业务处理机 |
CN101902766B (zh) * | 2010-07-07 | 2014-11-05 | 中兴通讯股份有限公司 | 用户信息管理方法、系统及业务处理机 |
CN102695143A (zh) * | 2011-03-22 | 2012-09-26 | 王函石 | 一种全媒体科普视窗sms消息传递方法 |
WO2012136017A1 (zh) * | 2011-04-07 | 2012-10-11 | 中兴通讯股份有限公司 | 一种用户终端来电处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102902733B (zh) | 一种基于内容订阅的信息推送方法、装置及系统 | |
CN100549948C (zh) | 一种生成分层用户界面的方法及其设备 | |
CN101355610B (zh) | 客服信息提供方法、自助客服模块和客服系统 | |
WO2001050712A2 (en) | Script based interfaces for mobile phones | |
CN101645966A (zh) | 一种手机终端上的自动化操作系统 | |
CN101137170A (zh) | 一种嵌入设备的软件自动测试工具及方法 | |
CN101916196A (zh) | 一种应用程序的启动方法及移动终端 | |
CN108132879A (zh) | 自动化软件测试方法、平台、终端及介质 | |
US20080256487A1 (en) | Method for managing user content in communication terminal | |
CN102333246A (zh) | 一种基于机顶盒Flash中间件的用户界面系统 | |
CN104159204A (zh) | 基于短信的信息交互方法和装置 | |
CN101483694B (zh) | 矢量动画播放控制方法及装置 | |
US20080271058A1 (en) | Tangible interface for mobile middleware | |
CN105810130A (zh) | 景区导览系统及其导览方法 | |
CN101272571A (zh) | 移动业务终端系统 | |
CN102655546A (zh) | 终端设备控制方法及终端设备 | |
CN106484514A (zh) | 一种多开应用的操作管理方法、装置及智能终端 | |
CN102227900B (zh) | 使信息同步的方法与系统 | |
CN103207726A (zh) | 在便携式终端中提供快捷服务的装置和方法 | |
CN1326419C (zh) | 手机功能快捷操作的方法 | |
CN1980433A (zh) | 搜寻移动通信装置功能选项的方法 | |
CN106302591A (zh) | 一种数据传输方法、智能终端及数据传输系统 | |
CN102163149A (zh) | Java-CAT可视化开发系统及方法 | |
CN114840194A (zh) | 代码及操作系统的生成方法和装置、服务器及电子设备 | |
CN101426054A (zh) | 一种手机终端发送短信的方法及手机终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080924 |