⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lb_bdy4.c

📁 中国石油二期加油站IC系统后台通讯软件
💻 C
字号:
/*
***********************************************************************************************************
                                                      Amos
                                          The Real_Time Operation System
                                                   Multi Task
                                 (c) Copyright 1998-2002, ShangYaoHui, Shenzhen
                                              All Right Reserved
                                                  VERSION 6.01

" By  : 商耀挥(ShangYaoHui)
 create time: 2002-7-6 1:05:30  
***********************************************************************************************************
*/

/************ head file list *************/
#include "envopt.h"        /* environment options */
#include "envdep.h"        /* environment dependent */
#include "envind.h"        /* environment independent */

#include "gen.h"           /* general */
#include "cm5.h"           /* common functions */
#include "ssi.h"           /* system services */

/* header/extern include files (.x) */

#include "gen.x"           /* general */
#include "cm5.x"           /* common functions */
#include "ssi.x"           /* system services */

#include "cm_llist.h"
#include "cm_llist.x"

#ifdef WIN32
	#include "winbase.h"
	#include "winsock2.h"
#endif

#include "rx.h"
#include "rx.x"

#include "rx_msg.h"
#include "rx_msg.x"

#include "lb_cm.h"
#include "lb_cm.x"

#include "lb_recv.h"
#include "lb_recv.x"
#include "lb_xmit.h"
#include "lb_xmit.x"
#include "lb_msg.h"
#include "lb_msg.x"

#include "lb_bdy1.h"
#include "lb_bdy1.x"
#include "lb_bdy2.h"
#include "lb_bdy2.x"
#include "lb_bdy4.h"
#include "lb_bdy3.h"
#include "lb_bdy3.x"
#include "lb_bdy4.h"
#include "lb_bdy4.h"
#include "lb_bdy4.x"
#include "lb_bdy5.h"
#include "lb_bdy5.x"
/************* const define **************/

/******** import variable declare ********/

/******* gloable variable declare ********/

/*********** function declare ************/

/********** function prototype ***********/

S16 lbBuildRqstStat(EquCfgEntry_s * equ, TranCb_s * tran)
{
	lbCmBuildCmdA(equ, tran, NULLP, 0xa0); 

	RETVALUE(RFAILED);
}


S16 lbBuildGetCardASN(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
	lbCmBuildCmdB(equ, tran , (U8)action, action, 0xa4); 
	RETVALUE(ROK);
}
S16 lbBuildGetBlkCardASN(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
	lbCmBuildCmdB(equ, tran , (U8)action, action, 0xa6); 
	RETVALUE(ROK);
}


S16 lbBuildGetCardInfo(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
	lbCmBuildCmdA(equ, tran, action, 0xa5); 
	RETVALUE(ROK);
}

S16 lbBuildAuthStart(EquCfgEntry_s * equ, TranCb_s * tran)
{
	lbCmBuildCmdB(equ, tran, 1, 0, 0xB2); 
	RETVALUE(ROK);
}

S16 lbBuildAuthStop(EquCfgEntry_s * equ, TranCb_s * tran)
{
	lbCmBuildCmdA(equ, tran, 0, 0xb3); 
	RETVALUE(ROK);
}

S16 lbBuildGetTotleVolume(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
	lbCmBuildCmdA(equ, tran, action, 0xa1);
	RETVALUE(ROK);
}

S16 lbBuildGetPrice(EquCfgEntry_s * equ, TranCb_s * tran)
{
	lbCmBuildCmdB(equ ,tran , equ->entry.pGunId, NULLP, 0xc0);
	RETVALUE(ROK);
}

S16 lbBuildStopFill(EquCfgEntry_s * equ, TranCb_s * tran)
{
	lbCmBuildCmdB(equ ,tran , equ->entry.pGunId, NULLP, 0xb6);
	RETVALUE(ROK);
}

S16 lbBuildResumeFill(EquCfgEntry_s * equ, TranCb_s * tran)
{
	lbCmBuildCmdB(equ, tran , equ->entry.pGunId, NULLP, 0xb7);
	RETVALUE(ROK);
}





S16 lbBuildCfm(EquCfgEntry_s * equ, TranCb_s * tran, U32 rqstType, U32 action)
{
	lbCmBuildCfmCmd(equ, tran, rqstType, action, 0xd0); 
	RETVALUE(ROK);
}

S32 lbBuildCloseDuring(EquCfgEntry_s * equ, TranCb_s * tran, U32 action)
{
	lbCmBuildCmdA(equ, tran , action, 0xb4);
	RETVALUE(ROK);
}


S16 lbBuildUpdateBlkList(EquCfgEntry_s * equ, TranCb_s * tran, CardAsn_s * asnArray, U32 itemNum)
{
	CmdMsg_s * cmdNode;
	BlkWriteCmd_s cmd;
	Buffer * msg;
	U32 i;

	if (ROK != lbCmGetCmdNode(tran, &cmdNode))
	{
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}

	if (ROK != SGetMsg(0, 0, &msg))
	{
		SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}
	memset(&cmd, 0, sizeof(BlkWriteCmd_s));

	cmd.hdr.frameStart = 0x55aa;
	cmd.hdr.dataLen = 107;
	cmd.hdr.sideId = equ->entry.sideId;
	cmd.cmd = 0xdb;

	for(i = 0; i < itemNum ; i++)
	{
		cmd.asnArray[i] = *asnArray++;
	}

	SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);

	cmdNode->msg = msg;
	cmdNode->msgCode = cmd.cmd;
	cmdNode->action = NULLP;
	cmdNode->machId = equ->entry.machId;
	cmdNode->sideId = equ->entry.sideId;
	cmdNode->gunId = equ->entry.pGunId;
	cmdNode->dir = CMD_DIR;
	cmdNode->chId = equ->entry.channelId;

	cmdNode->rqstParam = equ->entry.gunId;

	cmdNode->stat = RDY_SEND;
	cmdNode->timer = 1;
	cmdNode->retry = 500;
	cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
	RETVALUE(ROK);
}

S16 lbBuildSetOilTypeCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
	CmdMsg_s * cmdNode;
	WriteOilTypeCmd_s cmd;
	Buffer * msg;

	if (ROK != lbCmGetCmdNode(tran, &cmdNode))
	{
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}

	if (ROK != SGetMsg(0, 0, &msg))
	{
		SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}
	memset(&cmd, 0, sizeof(WriteOilTypeCmd_s));

	cmd.hdr.frameStart = 0x55aa;
	cmd.hdr.dataLen = 4;
	cmd.hdr.sideId = equ->entry.sideId;
	cmd.cmd = 0xc5;
	cmd.gunId = equ->entry.pGunId;
	cmd.oilType = equ->entry.oilType;

	SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);

	cmdNode->msg = msg;
	cmdNode->msgCode = cmd.cmd;
	cmdNode->action = NULLP;
	cmdNode->machId = equ->entry.machId;
	cmdNode->sideId = equ->entry.sideId;
	cmdNode->gunId = equ->entry.pGunId;
	cmdNode->dir = CMD_DIR;
	cmdNode->chId = equ->entry.channelId;
	cmdNode->rqstParam = equ->entry.gunId;

	cmdNode->stat = RDY_SEND;

	cmdNode->timer = 1;
	cmdNode->retry = CMD_RETRY_TIMES;
	cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
	RETVALUE(ROK);
}

S16 lbBuildGetHistroyCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
	RETVALUE(lbCmBuildCmdB(equ, tran, 0x02, 0x01, 0xda));
}

S16 lbBuildGetGreyCmd(EquCfgEntry_s * equ, TranCb_s * tran, U8 type)
{
	RETVALUE(lbCmBuildCmdB(equ, tran, type, type, 0xd7));
}

S16 lbBuildWriteGreyCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
	CmdMsg_s * cmdNode;
	WriteGreyCmd_s cmd;
	Buffer * msg;

	if (ROK != lbCmGetCmdNode(tran, &cmdNode))
	{
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}

	if (ROK != SGetMsg(0, 0, &msg))
	{
		SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}
	memset(&cmd, 0, sizeof(WriteGreyCmd_s));

	cmd.hdr.frameStart = 0x55aa;
	cmd.hdr.dataLen = 30;
	cmd.hdr.sideId = equ->entry.sideId;
	cmd.cmd = 0xd3;

   	memcpy(cmd.grey, equ->grey, 28); 

	SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);

	cmdNode->msg = msg;
	cmdNode->msgCode = cmd.cmd;
	cmdNode->action = NULLP;
	cmdNode->machId = equ->entry.machId;
	cmdNode->sideId = equ->entry.sideId;
	cmdNode->gunId = equ->entry.pGunId;
	cmdNode->dir = CMD_DIR;
	cmdNode->chId = equ->entry.channelId;

	cmdNode->rqstParam = equ->entry.gunId;

	cmdNode->stat = RDY_SEND;

	cmdNode->timer = 1;
	cmdNode->retry = CMD_RETRY_TIMES;
	cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
	RETVALUE(ROK);
}

S16 lbBuildReleaseGreyCmd(EquCfgEntry_s * equ, TranCb_s * tran, U8 * grey)
{
	CmdMsg_s * cmdNode;
	WriteGreyCmd_s cmd;
	Buffer * msg;

	if (ROK != lbCmGetCmdNode(tran, &cmdNode))
	{
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}

	if (ROK != SGetMsg(0, 0, &msg))
	{
		SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}
	memset(&cmd, 0, sizeof(WriteGreyCmd_s));

	cmd.hdr.frameStart = 0x55aa;
	cmd.hdr.dataLen = 30;
	cmd.hdr.sideId = equ->entry.sideId;
	cmd.cmd = 0xd5;

   	memcpy(cmd.grey, grey, 28); 

	SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);

	cmdNode->msg = msg;
	cmdNode->msgCode = cmd.cmd;
	cmdNode->action = NULLP;
	cmdNode->machId = equ->entry.machId;
	cmdNode->sideId = equ->entry.sideId;
	cmdNode->gunId = equ->entry.pGunId;
	cmdNode->dir = CMD_DIR;
	cmdNode->chId = equ->entry.channelId;
	cmdNode->rqstParam = equ->entry.gunId;

	cmdNode->stat = RDY_SEND;

	cmdNode->timer = 1;
	cmdNode->retry = CMD_RETRY_TIMES;
	cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
	RETVALUE(ROK);
}


S16 lbProcSpecCode(S32 num, SpecCode_s * array)
{
	CmdMsg_s * cmdNode;
	EquCfgEntry_s * equ;
	SpecCodeCmd_s *cmd;
	SpecCode_s *specCodeArray;
	Buffer * msg;
	S32 itemCnt, i;
	U8 cmdCnt;
	S32 itemNum;

	RxCmdEntry_s * entry;
	TranCb_s * tran;

	LBGETCMDENTRY(0, CMD_DIR, entry);
	equ = (EquCfgEntry_s *)cmLListFirst(&rxCb.pEquCfgList);
	while(NULLP != equ)
	{
		LBGETTRAN(entry, equ, tran);
		cmdCnt = 1;
		itemNum = num;
		while(itemNum >= 0)
		{
			if (ROK != lbCmGetCmdNode(tran, &cmdNode))
			{
				RXLOGERROR(0, 0, 0, "ERROR");
				RETVALUE(RFAILED);
			}
			if (ROK != SGetMsg(0, 0, &msg))
			{
				lbCmDestroyCmdNode(cmdNode);
				RXLOGERROR(0, 0, 0, "ERROR");
				RETVALUE(RFAILED);
			}
			itemCnt = 50<itemNum?50:itemNum;
			if (ROK != SGetSBuf(0, 0, (Data **)&cmd, sizeof(SpecCodeCmd_s) + itemCnt * 2))
			{
				lbCmDestroyCmdNode(cmdNode);
				SPutMsg(msg);
				RXLOGERROR(0, 0, 0, "ERROR");
				RETVALUE(RFAILED);
			}

	
			memset((Data *)cmd, 0, sizeof(SpecCodeCmd_s));
	
			cmd->hdr.frameStart = 0x55aa;
			cmd->hdr.sideId = equ->entry.sideId;
		
			cmd->itemNum = htons(itemCnt);
			cmd->cnt = cmdCnt;
			cmd->hdr.dataLen = itemCnt * 2 + 5;
			cmd->cmd = 0xd4;
			specCodeArray = (SpecCode_s *)(cmd + 1);

			for(i = 0; i < itemCnt; i++)
			{
				specCodeArray[i] =  *array++;
			}

			SAddPstMsgMult((Data *)cmd, (MsgLen)(cmd->hdr.dataLen + 3), msg);
			SPutSBuf(0, 0, (Data *)cmd, sizeof(SpecCodeCmd_s) + itemCnt * 2);

			cmdNode->msg = msg;
			cmdNode->msgCode = 0xd4;
			cmdNode->action = NULLP;
			cmdNode->machId = equ->entry.machId;
			cmdNode->sideId = equ->entry.sideId;
			cmdNode->gunId = equ->entry.pGunId;
			cmdNode->dir = CMD_DIR;
			cmdNode->chId = equ->entry.channelId;
			cmdNode->rqstParam = equ->entry.gunId;

			cmdNode->stat = RDY_SEND;

			cmdNode->timer = 1;
			cmdNode->retry = CMD_RETRY_TIMES;
			cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
			
			itemNum -= itemCnt;
			if (itemCnt == 0)
			{
				break;
			}

			cmdCnt++;
		}
		equ = (EquCfgEntry_s *)cmLListNext(&rxCb.pEquCfgList);
	}
 	RETVALUE(ROK);
}

S16 lbBuildCfgSysCmd(EquCfgEntry_s * equ, TranCb_s * tran, RxCfg_s * cfg)
{
	CmdMsg_s * cmdNode;
	SysCfgCmd_s cmd;
	Buffer * msg;

	if (ROK != lbCmGetCmdNode(tran, &cmdNode))
	{
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}

	if (ROK != SGetMsg(0, 0, &msg))
	{
		SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}
	memset(&cmd, 0, sizeof(SysCfgCmd_s));

	cmd.hdr.frameStart = 0x55aa;
	cmd.hdr.dataLen = 44;
	cmd.hdr.sideId = equ->entry.sideId;
	cmd.cmd = 0xd1;

	memcpy(&cmd.cfg, cfg, sizeof(RxCfg_s));


	SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);

	cmdNode->msg = msg;
	cmdNode->msgCode = cmd.cmd;
	cmdNode->action = NULLP;
	cmdNode->machId = equ->entry.machId;
	cmdNode->sideId = equ->entry.sideId;
	cmdNode->gunId = equ->entry.pGunId;
	cmdNode->dir = CMD_DIR;
	cmdNode->chId = equ->entry.channelId;
	cmdNode->rqstParam = equ->entry.gunId;

	cmdNode->stat = RDY_SEND;

	cmdNode->timer = 1;
	cmdNode->retry = CMD_RETRY_TIMES;
	cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
	RETVALUE(ROK);
}


S16 lbBuildSetPriceCmd(EquCfgEntry_s * equ, TranCb_s * tran, U16 price, Time_s * time)
{
	CmdMsg_s * cmdNode;
	SetPriceCmd_s cmd;
	Buffer * msg;

	if (ROK != lbCmGetCmdNode(tran, &cmdNode))
	{
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}

	if (ROK != SGetMsg(0, 0, &msg))
	{
		SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}
	memset(&cmd, 0, sizeof(SetPriceCmd_s));

	cmd.hdr.frameStart = 0x55aa;
	cmd.hdr.dataLen = 12;
	cmd.hdr.sideId = equ->entry.sideId;
	cmd.cmd = 0xc1;
   	cmd.gunId = equ->entry.pGunId;

	memcpy(&cmd.time, time, sizeof(Time_s));
	cmd.price = price;

	SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);

	cmdNode->msg = msg;
	cmdNode->msgCode = cmd.cmd;
	cmdNode->action = NULLP;
	cmdNode->machId = equ->entry.machId;
	cmdNode->sideId = equ->entry.sideId;
	cmdNode->gunId = equ->entry.pGunId;
	cmdNode->dir = CMD_DIR;
	cmdNode->chId = equ->entry.channelId;
	cmdNode->rqstParam = equ->entry.gunId;

	cmdNode->stat = RDY_SEND;

	cmdNode->timer = 1;
	cmdNode->retry = CMD_RETRY_TIMES;
	cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
	RETVALUE(ROK);
}

S16 lbBuildSetTimeCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
	CmdMsg_s * cmdNode;
	SetTimeCmd_s cmd;
	Buffer * msg;
	DateTime time;


	SGetDateTime(&time);

	if (ROK != lbCmGetCmdNode(tran, &cmdNode))
	{
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}

	if (ROK != SGetMsg(0, 0, &msg))
	{
		SPutSBuf(0, 0, (Data *)cmdNode, sizeof(CmdMsg_s));
		RXLOGERROR(0, 0, 0, "ERROR");
		RETVALUE(RFAILED);
	}
	memset(&cmd, 0, sizeof(SetTimeCmd_s));

	cmd.hdr.frameStart = 0x55aa;
	cmd.hdr.dataLen = 9;
	cmd.hdr.sideId = equ->entry.sideId;
	cmd.cmd = 0xd8;

	cmd.time[0] = 0x20;
	cmd.time[1] = ((time.year/10)<<4) | (time.year%10);
	
	cmd.time[2] = ((time.month/10)<<4) | (time.month%10);

	cmd.time[3] = ((time.day/10)<<4) | (time.day%10);

	cmd.time[4] = ((time.hour/10)<<4) | (time.hour%10);

	cmd.time[5] = ((time.min/10)<<4) | (time.min % 10);

	cmd.time[6] = ((time.sec/10)<<4) | (time.sec % 10);

	SAddPstMsgMult((Data *)&cmd, (MsgLen)(cmd.hdr.dataLen + 3), msg);

	cmdNode->msg = msg;
	cmdNode->msgCode = cmd.cmd;
	cmdNode->action = NULLP;
	cmdNode->machId = equ->entry.machId;
	cmdNode->sideId = equ->entry.sideId;
	cmdNode->gunId = equ->entry.pGunId;
	cmdNode->dir = CMD_DIR;
	cmdNode->chId = equ->entry.channelId;
	cmdNode->rqstParam = equ->entry.gunId;

	cmdNode->stat = RDY_SEND;

	cmdNode->timer = 1;
	cmdNode->retry = CMD_RETRY_TIMES;
	cmdNode->loadTimer = CMD_RETRY_TIMEOUT;
	RETVALUE(ROK);
}

S16 lbBuildSetNetModeCmd(EquCfgEntry_s * equ, TranCb_s * tran)
{
	RETVALUE(lbCmBuildCmdB(equ,tran, 0x01, NULLP, 0xb0));
}




/******************* modify histroy list *******************
001. create at: 2002-7-6 1:05:30 by Shangyaohui

****************** modify histroy list end ****************/


⌨️ 快捷键说明

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