六、基于 µ C/OS-II嵌入式操作系统的税控收款机设计- -| 回首页 | 2005年索引 | - -(二)、开放式的体系结构

税控收款机软件方案- -

Tag软件方案                                          

、 软件方案


 


在正常运行下,µ c/os-II系统中一共有l1个任务,他们分别是上电任务、方式锁任务、键盘任务、扫描任务、总控任务、系统初始化任务、功能编程任务、销售任务、X报表任务、Z报表任务、税控任务(按优先级降低的顺序排)。各任务之间的关系见下图:


上电任务

 
销售任务

 
税控任务

 
X报表任务

 
Z报表任务

 
功能编程任务

 
系统初始化任务

 
总控任务

 
键盘任务

 
方向锁任务

 
扫描任务

 
键盘中断

 
方式锁中断

 
扫描枪中断

 

 


 (1)各个中断的说明


a)当有键盘按下时,产生键盘中断。该中断服务子程序调用OSSemPost(Sem_Int_Keyboard)来唤醒键盘任务;


b)当方式锁发生旋转时或上电时,产生中断。在该中断子程序中调用OSSemPost(Sem_Int_MethodLock)来唤醒方式锁任务;


c)当扫描枪对准条形码时,产生中断。在该中断子程序中调用OSSemPost(Sem_Int_Scan)来唤醒扫描任务;


 


(2)各个任务的说明:注意:{}括起来的内容是在一个无限循环中


a)上电任务


调用OSSemPend(Sem_Start,0,&err)来获得信号量。


b)方式锁任务


{调用OSSemPend(Sem_Int_MethodLock,0,err)来获得信号量,当获得信号量后,它就设法获得方式锁目前所在的档位的编码。


c)键盘任务


{调用OSSemPend(SemAnt_Keyboard,0,&err)来获得信号量,当获得信号量后,它就设法获得按下的键的键码,然后将键盘任务的任务号3放在Msg_KeyCode[O]中,将键码放在Msg_KeyCode[1]中,然后调用OSQPost(Q_Contol,Msg_KeyCode)来唤醒总控任务}


d)扫描任务


{调用OSSemPend(Sem_Int_Scan,0,&err)来获得信号量,当获得信号量后,它就设法获得扫进来的条形码,然后将扫描任务任务的任务号4放在MSg_PluCode[0]中,将条形码从MSg_PluCode[1]开始放,然后调用OSQPost(Q_Contol,Msg_PluCode)来唤醒总控任务}


e)总控任务


{调用OSQPend(Q_Contol,0,&err)来获得消息,当获消息后继续往下执行}


根据传来的消息的第一个字节的任务号可以判定是什么任务来的信息。


Ø       如果是方式锁任务来的信息,则将传来的方式锁所在档位的编码用一个全局量(方式锁全局量)保存下来。然后接着执行a. b. c. d. e. f.g( a.b.c.d.e.f.g用if……else if来互斥);


Ø       如果是键盘任务来的信息(a.b.c.d.e.f.g用if……else if来互斥)。


Ø       如果是扫描任务来的信息(a.b用if……else if来互斥)


f)系统初始化任务


该任务主要完成高级参数的设置,装载默认的初始设置,设置高级密码和设置经理密码。


g)功能编程任务


{调用OSMboxPend(Mbox_Program,0,&err)来获得邮箱,当获得邮箱后,根据传来的第一个字节的任务号知道传来是键码了还是扫描码,然后根据传来的码值和当前该任务所处的状态(该状态用全局变量来保存,不同的值表示不同的状态)来做相应的处理}


该任务主要是在销售之前,将商品的信息录入进来,包括部类录入、套餐录入、PLU录入。还会录入收款员和营业员的信息、收据头信息、各种付款方式的汇率。


h)销售任务


{调用OSMboxPend(Mbox_Sell,0,&err)来获得邮箱,当获得邮箱后,根据传来的第一个字节的任务号知道传来是键码了还是扫描码,然后根据传来的码值和当前该任务所处的状态(该状态用全局变量来保存,不同的值表示不同的状态)来做相应的处理}


该任务顾名思义就是销售商品,包括按部类销售、按PLU销售、按套餐销售、按台号销售。还可以收取服务费、可以打折、有多种付款方式。


I)X报表任务


{调用OSMboxPend(Mbox_XReportform,0,&err)来获得邮箱,当获得邮箱后,根据传来的第二个字节的键码和当前该任务所处的状态(该状态用全局变量来保存,不同的值表示不同的状态)来做相应的处理}


该任务打印有关的数据报表,包括部类、套餐的销售报表,各个收款员和营业员的业绩报表等。


J)Z报表任务


{调用OSMbox_Pend(Mbox_ZReportform,0,&err)来获得邮箱,当获得邮箱后,根据传来的第二个字节的键码和当前该任务所处的状态(该状态用全局变量来保存,不同的值表示不同的状态)来做相应的处理}


该任务和X报表任务差不多,只是普通的收款员钥匙是无法进入该任务。


K)税控任务


{调用OSMboxPend(Mbox_Tax,0,&err)来获得邮箱,当获得邮箱后,根据传来的第二个字节的键码和当前该任务所处的状态(该状态用全局变量来保存,不同的值表示不同的状态)来做相应的处理}


该任务是来完成税收控制的,方便有关部门查账。


 

- 作者: wisdor 访问统计: 2005年08月4日, 星期四 13:57 加入博采

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=2481414

博客手拉手

[2005-07-23]    ERP必须基于企业流程管理

[2005-08-04]    清末的预备立宪真的只是一场骗局?

[2005-08-04]    上一篇好傻:)

[2005-08-04]    学会宽容

[2005-08-04]    平面设计输出十大陷阱

回复

评论内容: