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

📄 elteck_dc.c

📁 AL157型灵达电源单片机通讯程序.通过协议获得电源当前的状态.
💻 C
字号:
#define DC_GLOBALS
#include <variable.H>

#ifdef ELTECK_DC

unsigned char HexToAscii(unsigned char mHex)
{
	mHex &= 0x0F;
	if ( mHex < 0x0A ) return(mHex + 0x30);
	return ( (mHex & 0x0f)  + 0x37);
}

void DcProcess(void)
{
unsigned char data tmp;
struct Serial_rcv xdata *Com;

unsigned char xdata mData[13];
unsigned char xdata *mptr;
unsigned char data i;
unsigned char data mBCC;
static unsigned char data mPos;
unsigned int data mAddr;
unsigned int code PollAddr[] = {	0,		0x08, 	0x20, 	0x28, 	0x30, 	0x38, 	0x40,	
									0x80, 	0x88, 	0x90, 	0x98, 	0xa0,	0xa8, 	0xb0, 	
									0xb8, 	0xc0, 	0xc8, 	0xd0,	0xd8,	
									0x100, 	0x110, 	0x120,	0x130, 	
									0x140, 	0x180, 	0x190, 	0x1b0, 	0x1c0, 	0x1d0, 	0x200 };
	mPos = (mPos + 1) % sizeof(PollAddr);
	mAddr = PollAddr[mPos];
	mptr = mData;
	*(mptr++) = 0x02;		// STX
	*(mptr++) = 0x31;		// Id_H
	*(mptr++) = 0x34;		// Id_L:  PRS system is defined as 14H
	*(mptr++) = 0x31;		// Stamp: is 31H	
	*(mptr++) = 0x32;		// Message Type: for COMLI message type 2 is 32H
	*(mptr++) = 0x34;		// Address_H
    *(mptr++) = HexToAscii( mAddr /256 );
	*(mptr++) = HexToAscii( (mAddr&0xff) /16 );
	*(mptr++) = HexToAscii( mAddr&0x0f );  // Address _L		
	*(mptr++) = 0x30;		// Len_H
	*(mptr++) = 0x32;	    // Len_L:  Bytes to read fro address
	*(mptr++) = 0x03;		// ETX
	mBCC = 0;
	for (i = 1; i < 12; i++) mBCC ^= mData[i];
	*(mptr) = mBCC;
	if (Send_To_SndBuffer(ELTECK_DC, 13, mData) ) SendStart(ELTECK_DC);

	Com = Rcv + ELTECK_DC;	
	while  ( Com->Tail != Com->Head ) {
		tmp=Com->mData[Com->Head++];
		Com->Head=Com->Head % LEN_RCV;
		
		if (tmp == 0x02)  {
				Com->Start = 1;   	//  save first byte and byte-position;
				Com->Buff[1] = 0x02;
				Com->pos = 2; 
  			    continue;
		}
		if (tmp == 0x03) {
			Com->Buff[Com->pos] = 0x03;
			Com->Buff[0] = Com->pos;
			memcpy(DcBuff,Com->Buff, Com->pos + 1);
			Com->Start=0;
		}
		if ( Com->pos >100 ) Com->Start=0;
		Com->Buff[Com->pos++]=tmp;
		continue;
	}  

}

#endif

⌨️ 快捷键说明

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