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

📄 testlfpprotocolview.cpp

📁 一个很好的LFP规约调试器
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	*pData = 4; pData++;
	count = 4;
	frame = NSAP_C12;
	dev_ctrl.dev_ack_area = FALSE;
	return TRUE;
}

BOOL CTestLFPProtocolView::GetC20Frame( BYTE* buffer, int& count )
{
	BYTE* pData = buffer;

	*pData = dev_addr; pData++;
	*pData = NSAP_C20; pData++;
	*pData = 1; pData++;
	*pData = 0; pData++;
	*pData = 4; pData++;
	count = 4;
	return TRUE;
}

BOOL CTestLFPProtocolView::GetC15Frame( BYTE* buffer, int& count )
{
	BYTE* pData = buffer;

	*pData = dev_addr; pData++;
	*pData = NSAP_C15; pData++;
	*pData = 1; pData++;
	*pData = 0; pData++;
	*pData = 4; pData++;
	count = 4;
	return TRUE;
}

BOOL CTestLFPProtocolView::GetC19Frame( BYTE* buffer, int& count )
{
	BYTE* pData = buffer;

	*pData = dev_addr; pData++;
	*pData = NSAP_C19; pData++;
	*pData = 1; pData++;
	*pData = 0; pData++;
	*pData = 4; pData++;
	count = 4;
	return TRUE;
}

BOOL CTestLFPProtocolView::GetC4Frame( BYTE* buffer, int& count )
{
	BYTE* pData = buffer;

	*pData = dev_addr; pData++;
	*pData = NSAP_C4; pData++;
	*pData = 1; pData++;
	*pData = 0; pData++;
	*pData = 4; pData++;
	count = 4;
	return TRUE;
}

BOOL CTestLFPProtocolView::GetC35Frame( BYTE* buffer, int& count )
{
	BYTE*	pData = buffer;
	*pData = dev_addr; pData++;
	*pData = NSAP_C35; pData++;
	*pData = 1; pData++;
	*pData = 0; pData++;
	*pData = 4; pData++;
	count = 4;
	return TRUE;
}

BOOL CTestLFPProtocolView::GetYKFrame( BYTE* buffer, int& count, DWORD& frame )
{
	BYTE value;
	BYTE* pData = buffer;
	if( dev_ctrl.dev_ctrl_yk == FALSE ) return FALSE;
	if( dev_ctrl.dev_ctrl_yktype ) value = 0xcc;
	else value = 0x33;
	m_bYkValue = dev_ctrl.dev_ctrl_yktype;
	m_bYkNum = dev_ctrl.dev_ctrl_yknum;
	if( nYkState == YK_SELECT ) {
		*pData = dev_addr; pData++;
		*pData = NSAP_C17; pData++;
		*pData = 1; pData++;
		*pData = 0; pData++;
		*pData = 10; pData++;
		*pData = dev_ctrl.dev_ctrl_yknum & 0x00ff; pData++;
		*pData = value & 0x00ff; pData++;
		*pData = (~dev_ctrl.dev_ctrl_yknum) & 0x00ff; pData++;
		*pData = (~value) & 0x00ff; pData++;
		*pData = dev_ctrl.dev_ctrl_yknum & 0x00ff; pData++;
		*pData = value & 0x00ff; pData++;
		count = 10;
		frame = NSAP_C17;
		dev_ctrl.dev_ctrl_yk = FALSE;
		return TRUE;
	}
	if( nYkState == YK_EXECUTE ) {
		*pData = dev_addr; pData++;
		*pData = NSAP_C18; pData++;
		*pData = 1; pData++;
		*pData = 0; pData++;
		*pData = 10; pData++;
		*pData = dev_ctrl.dev_ctrl_yknum & 0x00ff; pData++;
		*pData = value & 0x00ff; pData++;
		*pData = (~dev_ctrl.dev_ctrl_yknum) & 0x00ff; pData++;
		*pData = (~value) & 0x00ff; pData++;
		*pData = dev_ctrl.dev_ctrl_yknum & 0x00ff; pData++;
		*pData = value & 0x00ff; pData++;
		count = 10;
		frame = NSAP_C18;
		dev_ctrl.dev_ctrl_yk = FALSE;
		return TRUE;
	}
	if( nYkState == YK_CANCEL ) {
		*pData = dev_addr; pData++;
		*pData = NSAP_C22; pData++;
		*pData = 1; pData++;
		*pData = 0; pData++;
		*pData = 10; pData++;
		*pData = dev_ctrl.dev_ctrl_yknum & 0x00ff; pData++;
		*pData = value & 0x00ff; pData++;
		*pData = (~dev_ctrl.dev_ctrl_yknum) & 0x00ff; pData++;
		*pData = (~value) & 0x00ff; pData++;
		*pData = dev_ctrl.dev_ctrl_yknum & 0x00ff; pData++;
		*pData = value & 0x00ff; pData++;
		count = 10;
		frame = NSAP_C22;
		dev_ctrl.dev_ctrl_yk = FALSE;
		return TRUE;
	}
	return FALSE;
}

BOOL CTestLFPProtocolView::GetC16Frame( BYTE* buffer, int& count )
{
	BYTE* pData = buffer;

	*pData = dev_addr; pData++;
	*pData = NSAP_C16; pData++;
	*pData = 1; pData++;
	*pData = 0; pData++;
	*pData = 4; pData++;
	count = 4;
	return TRUE;
}

BOOL CTestLFPProtocolView::IsSYN( BYTE* buffer )
{
	BYTE*	pData;
	pData = buffer;
	if( *(pData+0) == 0xeb &&
		*(pData+1) == 0x90 &&
		*(pData+2) == 0xeb &&
		*(pData+3) == 0x90 &&
		*(pData+4) == NSAC_STX ) return TRUE;
	else return FALSE;
}

BOOL CTestLFPProtocolView::MainProc( BYTE* buffer, int count )
{
	BYTE *pData;
	BYTE addr;
	BYTE type;
	BYTE grpnum;
	BYTE grpno;
	BYTE len;

	pData = buffer;

	addr = *pData; pData++;
	type = *pData; pData++;
	grpnum = *pData; pData++;
	grpno = *pData; pData++;
	len = *pData - 4; pData++;
	switch( type ) {
	case NSAP_ACK:
		return OnReceiveACK( addr );
	case NSAP_NACK:
		return OnReceiveNACK( addr );
	case NSAP_R1:	//jump close
		return OnReceiveR1Frame( addr, pData, len );
	case NSAP_R2:
		return OnReceiveR2Frame( addr, pData, len );
	case NSAP_R4:	//protect value
		return OnReceiveR4Frame( addr, pData, len );
	case NSAP_R7:	//new fault
		return OnReceiveR7Frame( addr, pData, len );
	case NSAP_R8:	//selftest
		return OnReceiveR8Frame( addr, pData, len );
	case NSAP_R10:	//yxbw
		return OnReceiveR10Frame( addr, pData, len );
	case NSAP_R15:	//yc value
		return OnReceiveR15Frame( addr, pData, len );
	case NSAP_R16:	//ym value
		return OnReceiveR16Frame( addr, pData, len );
	case NSAP_R17:	//yk verify
		return OnReceiveR17Frame( addr, pData, len );
	case NSAP_R18:	//yk execute
		return OnReceiveR18Frame( addr, pData, len );
	case NSAP_R19:	//yx value
		return OnReceiveR19Frame( addr, pData, len );
	case NSAP_R20:	//soe
		return OnReceiveR20Frame( addr, pData, len );
	case NSAP_R32:
		return OnReceiveR32Frame( addr, pData, len );
	}
	return FALSE;
}


BOOL CTestLFPProtocolView::OnReceiveACK( int addr )
{
	if( m_nCurFrame == NSAP_C17 ) {
		return TRUE;
	}
	else if( m_nCurFrame == NSAP_C2 ||
		m_nCurFrame == NSAP_C7 ||
		m_nCurFrame == NSAP_C9 ||
		m_nCurFrame == NSAP_C11 ||
		m_nCurFrame == NSAP_C10 ||
		m_nCurFrame == NSAP_C12 ) {
		return TRUE;
	}
	return TRUE;
}

BOOL CTestLFPProtocolView::OnReceiveNACK( int addr )
{
	if( m_nCurFrame == NSAP_C17 ) { //yk request
		return TRUE;
	}
	else if( m_nCurFrame == NSAP_C18 ) { //yk execute
		return TRUE;
	}
	else if( m_nCurFrame == NSAP_C22 ) { //yk abort
		return TRUE;
	}
	else if( m_nCurFrame == NSAP_C2 ||
		m_nCurFrame == NSAP_C7 ||
		m_nCurFrame == NSAP_C9 ||
		m_nCurFrame == NSAP_C11 ||
		m_nCurFrame == NSAP_C10	||
		m_nCurFrame == NSAP_C12 ) {
		return TRUE;
	}
	return FALSE;
}

BOOL CTestLFPProtocolView::OnReceiveR19Frame( int addr, BYTE* buffer, int len )
{
	int i, j;
	int count;
	BYTE *pValue;
	BYTE nTemp;
	CTestLFPProtocolApp* pApp = ( CTestLFPProtocolApp* )AfxGetApp();

	count = len;
	pValue = buffer;
	for( i = 0; i < count; i++ ) {
		nTemp = 0x01;
		for( j = 0; j < 8; j++ ) {
			if( *pValue & nTemp ) {
				pApp->m_pMainFrame->m_pYxListCtrl.SetItemText( (i<<3)+j, 2, _T( "    ■" ) );
			}
			else {
				pApp->m_pMainFrame->m_pYxListCtrl.SetItemText( (i<<3)+j, 2, _T( "    □" ) );
			}
			nTemp <<= 1;
		}
		pValue++;
	}
	return TRUE;
}

BOOL CTestLFPProtocolView::OnReceiveR15Frame( int addr, BYTE* buffer, int len )
{
	int i;
	int count;
	short *pValue;
	float value = 0.0f;
	char	text[128];
	CTestLFPProtocolApp *pApp = ( CTestLFPProtocolApp* )AfxGetApp();

	count = len >> 1;
	pValue = (short *)buffer;
	for( i = 0; i < count; i++ ) {
		if( *pValue & 0x800 ) {
			*pValue = ( ~*pValue & 0x7ff )+1;
			*pValue = -*pValue;
		}
		value = (float)*pValue * (float)atoi( pApp->m_pMainFrame->m_pYcListCtrl.GetItemText( i, 2 ).GetBuffer( 0 ) )/2047;
		sprintf( text, "%.3f", value );
		pApp->m_pMainFrame->m_pYcListCtrl.SetItemText( i, 3, text );
		pValue++;
	}
	return TRUE;
}

BOOL CTestLFPProtocolView::OnReceiveR16Frame( int addr, BYTE* buffer, int /*len*/ )
{
	DWORD *pValue;

	pValue = (DWORD *)buffer;
//	SetUnitYM( addr, 0, *pValue );
	pValue++;
//	SetUnitYM( addr, 1, *pValue );

	return TRUE;
}

BOOL CTestLFPProtocolView::OnReceiveR4Frame( int addr, BYTE* buffer, int len )
{
	int i;
	int count;
	short *pValue;

	count = len >> 1;
	pValue = (short *)buffer;
	for( i = 0; i < count; i++ ) {
//		SetUnitYC( addr, i+16, *pValue );//first 16 points are yc data
		pValue++;
	}
	return TRUE;
}

BOOL CTestLFPProtocolView::OnReceiveR10Frame( int addr, BYTE* buffer, int len )
{
	int i;
	int count;
	BOOL bValue;
	WORD *pValue;

	CTestLFPProtocolApp *pApp = ( CTestLFPProtocolApp* )AfxGetApp();
	count = len >> 1;
	pValue = (WORD *)buffer;
	for( i = 0; i < count; i++ ) {
		bValue = (((*pValue) & 0x0100) == 0x0100);
		if( bValue ) {
			pApp->m_pMainFrame->m_pYxListCtrl.SetItemText( (*pValue) & 0x00ff, 2, _T( "    ■" ) );
		}
		else {
			pApp->m_pMainFrame->m_pYxListCtrl.SetItemText( (*pValue) & 0x00ff, 2, _T( "    □" ) );
		}
		pValue++;
	}
	m_nFramePoll |= NSAP_ACK_FRAME;

	return FALSE;
}

BOOL CTestLFPProtocolView::OnReceiveR20Frame( int addr, BYTE* buffer, int len )
{
// 	int i;
// 	int count;
// 	int order;
// 	BYTE* pData;
// 	SystemTime st;
// 
// 	memcpy( &st, &system32.now, sizeof(SystemTime) );
// 	count = len / 7;
// 	pData = buffer;
// 	for( i = 0; i < count; i++ ) {
// 		st.hour = *pData; pData++;
// 		st.minute = *pData; pData++;
// 		st.second = *pData; pData++;
// 		st.millsecond = pData[1];
// 		st.millsecond = (st.millsecond << 8) & 0xff00;
// 		st.millsecond += *pData; pData += 2;
// 		order = *pData; pData++;
// 		SetUnitSOE( addr, order, *pData, st );
// 		pData++;
// 	}

	m_nFramePoll |= NSAP_ACK_FRAME;

	return FALSE;
}

BOOL CTestLFPProtocolView::OnReceiveR8Frame( int /*addr*/, BYTE* /*buffer*/, int /*len*/ )
{
	m_nFramePoll |= NSAP_ACK_FRAME;

	return FALSE;
}

BOOL CTestLFPProtocolView::OnReceiveR17Frame( int addr, BYTE* buffer, int /*len*/ )
{
	BOOL bValue;
	BYTE nTemp;

	nTemp = ~buffer[2];
	if( buffer[0] != buffer[4] || buffer[0] != nTemp ) return FALSE;
	nTemp = ~buffer[3];
	if( buffer[1] != buffer[5] || buffer[1] != nTemp ) return FALSE;
	if( buffer[1] == 0xcc ) bValue = TRUE;
	else if( buffer[1] == 0x33 ) bValue = FALSE;
	else return FALSE;
	if( buffer[0] != m_bYkNum ) return FALSE;
	if( bValue != m_bYkValue ) return FALSE;

	dev_ctrl.system_type = YK_EXECUTE;
	return TRUE;
}

BOOL CTestLFPProtocolView::OnReceiveR18Frame( int addr, BYTE* buffer, int /*len*/ )
{
// 	BOOL bValue;
// 	BYTE nTemp;
// 
// 	nTemp = ~buffer[2];
// 	if( buffer[0] != buffer[4] || buffer[0] != nTemp ) return FALSE;
// 	nTemp = ~buffer[3];
// 	if( buffer[1] != buffer[5] || buffer[1] != nTemp ) return FALSE;
// 	if( buffer[1] == 0xcc ) bValue = TRUE;
// 	else if( buffer[1] == 0x33 ) bValue = FALSE;
// 	else return FALSE;
// 	if( buffer[0] != m_nYKOrder ) return FALSE;
// 	if( bValue != m_bYKValue ) return FALSE;
// 	if( m_nYKState != YKS_EXEREQ ) return FALSE;
// 	SetUnitYK( addr, buffer[0], bValue, YKS_EXEED, YKR_SUCC );
	return TRUE;
}

BOOL CTestLFPProtocolView::OnReceiveR7Frame( int addr, BYTE* buffer, int len )
{
	m_nFramePoll |= NSAP_ACK_FRAME;
	return FALSE;
}

BOOL CTestLFPProtocolView::OnReceiveR1Frame( int addr, BYTE* buffer, int len )
{
	m_nFramePoll |= NSAP_ACK_FRAME;
	return FALSE;
}

BOOL CTestLFPProtocolView::OnReceiveR2Frame( int addr, BYTE* buffer, int len )
{
	int		i, j;
	char	text[128];
	BYTE	nTemp;
	BYTE*	pData;
	WORD*	pValue;
	float	settingvalue;
	BYTE	value_area;
	CTestLFPProtocolApp *pApp = ( CTestLFPProtocolApp* )AfxGetApp();
	pData = buffer;

	strcpy( text, "装置定值信息" );
	pApp->m_pMainFrame->m_pSettingValueListCtrl.SetItemText( 0, 0, text );
	value_area = *pData;
	strcpy( text, "定值区号" );
	pApp->m_pMainFrame->m_pSettingValueListCtrl.SetItemText( 0, 1, text );
	sprintf( text, "%d", value_area );
	pApp->m_pMainFrame->m_pSettingValueListCtrl.SetItemText( 0, 2, text );
	pData++; pData++;
	aivalue_num = *pData;	pData++;
	divalue_num = *pData;	pData++;
	pValue = (WORD*)pData;
	for( i = 0; i < aivalue_num; i++, pValue++ ) {
		settingvalue = (float)( (float)*pValue/100 );
		sprintf( text, "%.2f", settingvalue );
		pApp->m_pMainFrame->m_pSettingValueListCtrl.SetItemText( i+1, 2, text );
	}
	pData = (BYTE*)pValue;
	for( i = 0; i < (divalue_num+7)/8; i++, pData++ ) {
		nTemp = 0x01;
		for( j = 0; j < 8; j++ ) {
			if( *pData & nTemp ) {
				if( dev_settingvalue_type[(i<<3)+j+1+aivalue_num] == 2 ) {
					pApp->m_pMainFrame->m_pSettingValueListCtrl.SetItemText( (i<<3)+j+1+aivalue_num, 2, "投入" );
				}
				else if( dev_settingvalue_type[(i<<3)+j+1+aivalue_num] == 3 ) {
					pApp->m_pMainFrame->m_pSettingValueListCtrl.SetItemText( (i<<3)+j+1+aivalue_num, 2, "跳闸" );
				}
			}
			else {
				if( dev_settingvalue_type[(i<<3)+j+1+aivalue_num] == 2 ) {
					pApp->m_pMainFrame->m_pSettingValueListCtrl.SetItemText( (i<<3)+j+1+aivalue_num, 2, "退出" );
				}
				else if( dev_settingvalue_type[(i<<3)+j+1+aivalue_num] == 3 ) {
					pApp->m_pMainFrame->m_pSettingValueListCtrl.SetItemText( (i<<3)+j+1+aivalue_num, 2, "报警" );
				}
			}
			nTemp <<= 1;
		}
	}
	if( dev_ctrl.dev_setted_settings ) {
		dev_ctrl.system_type = SET_VALUE;
	}
	return TRUE;
}

BOOL CTestLFPProtocolView::OnReceiveR32Frame( int addr, BYTE* buffer, int len )
{
	BYTE	dev_type = 0;

	dev_type = buffer[0];
	for( int i = 0; i < dev_num; i++ ) {
		if( m_devtype[i].dev_type == dev_type ) {
			CTestLFPProtocolApp *pApp = ( CTestLFPProtocolApp* )AfxGetApp();
			pApp->m_pMainFrame->AddTree( m_devtype[i].dev_name, addr );
			break;
		}
	}
	return TRUE;
}

⌨️ 快捷键说明

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