message.c

来自「电子称重的程序」· C语言 代码 · 共 75 行

C
75
字号
#include<config.h>
#include<head.h>
#define MSGLEN   10
MSG     idata msgbuf[MSGLEN];
Uchar   msgbufwp=0,msgbufrp=0;
void MessageInit()
{
 char i;
 for(i=0;i<MSGLEN;i++)
   msgbuf[i].message=0;
}
/**************************************************************************
*      函数原型:void SysPostMessage(char message,char param,char  mode);
*      功    能:发送消息。
*      入    口: 消息类型,消息值
**************************************************************************/
void SysPostMessage(char message,char param,char  mode)
{
 char   i;
 if(mode==1)
  {
    for(i=0;i<MSGLEN;i++)
       if(msgbuf[i].message==message)
       {
         msgbuf[i].param+=param;
         return;
       }
 }
 msgbuf[msgbufwp].message=message;
 msgbuf[msgbufwp++].param=param;
 if(msgbufwp>=MSGLEN)msgbufwp=0;
}
/**************************************************************************
*      函数原型:void PostMessageOne(char message,char param);
*      功    能:发送一次性消息。
*      入    口: 消息类型,消息值
**************************************************************************/
void PostMessageOne(char message,char param)
{
 SysPostMessage(message,param,1);
}
/**************************************************************************
*      函数原型:void PostMessageOne(char message,char param);
*      功    能:发送一次性消息。
*      入    口: 消息类型,消息值
**************************************************************************/
void PostMessage(char message,char param)
{
 SysPostMessage(message,param,0);
}
/**************************************************************************
*      函数原型:void GetMessage(MSG *msg);
*      功    能:接收消息消息。
*      入    口: 消息结构的地址
*      出    口: 成功获得信息为1,没有获得信息为0
**************************************************************************/
BOOL GetMessage(MSG *pMsg)
{
    Uchar i,j;

    for(i=0;i<MSGLEN;i++)
    {
     j=(i+msgbufrp)%MSGLEN;
     if(msgbuf[j].message)
     {
      pMsg->message=msgbuf[j].message;
      pMsg->param=msgbuf[j].param;
      msgbuf[j].message=0;
      if(++msgbufrp>=MSGLEN)msgbufrp=0;
      return 1;
     }
    }
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?