保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

使用uC/OS-II操作系统的短信息电话机


挂机。

  在挂机的时候,如果先前是在响铃的时候摘机的,那么UI任务把它当做已接来电处理;如果不是在响铃的时候摘机的,那么在挂机的时候把它当做已拨电话处理。

  (2)振铃任务

  当铃声来到时,就产生中断。在这个中断中,调用OSSemPost(Sem_Int_Ring)来唤醒振铃任务。

  响铃任务调用OSSemPend(Sem_Int_Ring,0,&err)来获得信号量。获得信号量后,就把下传的号码接收下来;根据号码就可以知道是短信息,还是普通电话。

  ① 当是短信息时,就调用OSSemPost(Sem_Any _SMTask)来唤醒短消息任务;

  ② 如果是电话,就响铃,同时调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)来唤醒UI任务。这时Msg_Any_UI[0]=任务号2,从Msg_Any_UI[1]开始存的是来电时间和电话号码,然后调用OSSemPend(Sem_Int_Ring,RING_RECV_TIMEOUT,&err),来延时响铃一段时间。

  如果在这段时间内没有接电话,那么必然会超时,于是就清除铃声中断,同时调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)来唤醒UI任务,这时Msg_Any_UI[0]=任务号2,Msg_Any_UI[1]=0xff表示铃声结束。UI任务把它当作未接来电处理。

  如果在这段时间内接电话,就必然唤醒摘/挂机任务。如果从响铃到对摘/挂机任务处理完毕所需要的总时间还没有到RING_RECV_TIMEOUT,那么,当时间到了,UI任务也会收到铃声结束的消息;但此时,UI任务不对它做任何处理。

  响铃任务如何区别是正常的电话还是信息中心的来电信息呢?其实很简单。信息中心也是一个终端,是由一个特定的号码来确定的。就像用不同的电话号码来区别不同的用户一样。这样响铃任务就可以根据电话线上下传的号码,来确定是哪种情况了。

  (3)键盘任务

  有按键按下时,产生一中断,在中断服务子程序中调用OSSemPost(Sem_Int_Keyboard)来唤醒键盘任务,同时清除中断标志。键盘任务调用OSSemPend(Sem_Int_Keyboard,0,&err)来获得信号量。获得信号量后,键盘任务将调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)唤醒UI任务。

  Msg_Any_UI[0]为任务号3, Msg_Any_UI[1]为键值。

  (4)短消息任务

  该任务调用OSSemPend(Sem_Any_SMTask,0,&err)获得信号量。当获得信号量后,通过标志位判别是准备上传数据还是下传数据。

  ① 下传数据时,将下传的数据放在recv_buf[]中,然后调用OSMboxPost(Mbox_Any_UI,Msg_Any_UI)唤醒UI任务。Msg_Any_UI [0]=任务号4,从Msg_Any_UI [1]开始存的是从recv_buf[]中筛选过的数据。这是在连上后从信息中心下载信息的情况,其中Msg_Any_UI [1]存的是信息的种类号,种类号都是大于0x80H小于0xFFH的;没有连上信息中心或者是连上之后完成任务。这时recv_buf[1]存的就是0xff;如果刚刚连上,就在recv_buf[1]存0x01。

  ② 如果用户需要发送短消息任务,先将信息存在Msg_send_buf[]中,然后UI任务调用OSSemPost(Sem_Any_SMTask),将该任务激活。该任务提取存在Msg_send_buf[]中的信息后,包装后保存在send_buf[],然后将其发出去。

  (5)用户界面任务

  UI任务一直在等待消息。当它被激活时,根据存在Msg_Any_UI[255]中的不同数据进行不同的处理。详述见“3.用户界面任务详述

《使用uC/OS-II操作系统的短信息电话机(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/148241.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。