📄 testlfpprotocolview.cpp
字号:
*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 + -