2106|1

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请高手分析下下列程序,小弟看不懂 [复制链接]

想将下列程序改成“排队机”以下是要实现的功能,可不知从哪里下手。

 

排队机功能:

实际应用的排队机在现实生活中已不鲜见,如中国移动营业厅、银行储蓄网点等等。具体功能:模拟客户到达取得排队号码([十进制4位顺序号]所谓登记):“挂号(排队)机”要记录登记号码、登记(到达)时间、办理业务类型(此处省略)等;“柜台机(3-5个)”:按登记号顺序受理客户业务,记录开始受理时间,客户登记号码,受理结束时间,并记录受理全部信息,结束工作以后输出相关记录(输出明细表)。

 

 

 

#include "includes.h"

#define  TASK_STK_SIZE   512    //任务堆栈长度
#define  N_MESSAGES      512 

  OS_STK    StartTaskStk[TASK_STK_SIZE];
  OS_STK    MyTaskStk[TASK_STK_SIZE];
  INT16S key;
  INT8U   err;
  INT8U   x=0,y=0,i=0;
  OS_EVENT  *Str_Q;

  char *ss;
  char *s[7];

  void  *MsgGrp[N_MESSAGES];     /*消息数组,消息数组存放着各消息的指针*/
  INT8U  a[7]={12,34,56,78,90};


  void StartTask(void *data);
  void  MyTask(void *data);

void  main (void)
{

  PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLUE);
  OSInit();
  PC_DOSSaveReturn();
  PC_VectSet(uCOS, OSCtxSw);

  Str_Q = OSQCreate( &MsgGrp[0], N_MESSAGES );
  OSTaskCreate(StartTask, (void *)0, &StartTaskStk[TASK_STK_SIZE - 1], 0);
  OSStart();

}


void StartTask(void *pdata)
{
#if OS_CRITICAL_METHOD == 3
  OS_CPU_SR  cpu_sr;
#endif
 pdata = pdata;

  OS_ENTER_CRITICAL();
  PC_VectSet(0x08, OSTickISR);
  PC_SetTickRate(OS_TICKS_PER_SEC);
  OS_EXIT_CRITICAL();

  OSStatInit();
  OSTaskCreate(MyTask,(void *)0, &MyTaskStk[TASK_STK_SIZE - 1], 3);
  for(;;)
  {
  for(i=0;i<7;i++)
  {sprintf(&s,"%d",a);
  PC_DispStr(0,x++,&s,DISP_BGND_BLUE + DISP_FGND_WHITE);
  OSQPost(Str_Q,&s);
  }

  if( PC_GetKey(&key) == TRUE )
  {
   if( key == 'q' )
   {
    PC_DOSReturn();
    }


  }
     OSTimeDlyHMSM(0,0,7,0);
  }

}

void  MyTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
  OS_CPU_SR  cpu_sr;
#endif
  pdata = pdata;
  for (;;)
   {
   ss = OSQPend(Str_Q,0,&err);            /*请求消息*/

   PC_DispStr(10,y++,ss,DISP_BGND_BLUE + DISP_FGND_WHITE);

   OSTimeDlyHMSM(0,0,1,0);

   }

}

 

最新回复

ying应该是UCOS把 懂点皮毛 没看懂  详情 回复 发表于 2011-11-16 18:03
点赞 关注

回复
举报

7172

帖子

195

TA的资源

五彩晶圆(高级)

沙发
 
ying应该是UCOS把 懂点皮毛 没看懂
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表