📄 eventtriggerdlg.cpp
字号:
hEvent = CreateEvent(NULL,
FALSE, // auto reset
FALSE, // init state as Non-Signal
NULL);
if (ADAMTCP_StartEventTrigger( hEvent ) == ADAMTCP_NoError)
{
while(Thread_Info->Continue)
{
if ( WaitForSingleObject(hEvent, Thread_Info->SleepTime) == WAIT_OBJECT_0 )
{
if (tmpList->GetCount() > 220)
tmpList->ResetContent();
if (tmpRdo[1]->GetCheck())
{
while (ADAMTCP_ReadEventInfo(&lIP, &lSlot, &lChannel,
&lType, &lStatus, &lValue, &lDateTime) == ADAMTCP_NoError)
{
addr.S_un.S_addr = lIP;
sprintf(buf, "%s", inet_ntoa(addr));
idx = 0;
while (idx<8)
{
tmpIP[idx]->GetWindowText(szIP, 127);
if (strcmp(buf, szIP) == 0)
{
cnt[idx]++;
sprintf(buf, "%d", cnt[idx]);
tmpCnt[idx]->SetWindowText(buf);
break;
}
idx++;
}
/////////////////////////////////////
sprintf(buf, "From [%s], %s", inet_ntoa(addr), ctime((const long*)&lDateTime));
tmpList->InsertString(-1, buf);
sprintf(buf, "--Slot(%d), Ch(%d), Val=(%d)", lSlot, lChannel, lValue);
tmpList->InsertString(-1, buf);
switch (lType)
{
case ADAMTCP_TYPE_DIO:
strcpy(buf, "--Type(DIO event)");
break;
case ADAMTCP_TYPE_HIALARM:
strcpy(buf, "--Type(High Alarm event)");
break;
case ADAMTCP_TYPE_LOALARM:
strcpy(buf, "--Type(Low Alarm event)");
break;
case ADAMTCP_TYPE_CONNECT:
strcpy(buf, "--Type(Connection)");
break;
default:
strcpy(buf, "--Type(unknown event type)");
break;
};
switch (lStatus)
{
case ADAMTCP_STATUS_ON_TO_OFF:
strcat(buf, ", Event('ON' to 'OFF')");
break;
case ADAMTCP_STATUS_OFF_TO_ON:
strcat(buf, ", Event('OFF' to 'ON')");
break;
case ADAMTCP_STATUS_NO_CHANGE:
strcat(buf, ", Event(No change)");
break;
case ADAMTCP_STATUS_LOST:
strcat(buf, ", Event(Lost)");
break;
default:
strcat(buf, ", Event(unknown status)");
break;
};
tmpList->InsertString(-1, buf);
tmpList->InsertString(-1, " ");
if (tmpList->GetCount() > 22)
tmpList->SetTopIndex(tmpList->GetCount() - 22);
}
}
else
{
if (ADAMTCP_ReadEventPattern(&lIP, (unsigned char*)szPattern, &pLen) == ADAMTCP_NoError)
{
addr.S_un.S_addr = lIP;
szPattern[pLen] = '\0';
if (tmpRdo[2]->GetCheck())
{
sprintf(buf, "From [%s], Length=%d =====>", inet_ntoa(addr), pLen);
tmpList->InsertString(-1, buf);
// header
buf[0]='\0';
for(idx=0; idx<4; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Header [Byte 0~3]");
tmpList->InsertString(-1, buf);
// Function code
sprintf(buf, "%02X", szPattern[4]);
tmpList->InsertString(-1, "--Fun Code [Byte 4]");
tmpList->InsertString(-1, buf);
// Packet No.
sprintf(buf, "%02X", szPattern[5]);
tmpList->InsertString(-1, "--Packet No [Byte 5]");
tmpList->InsertString(-1, buf);
// DIO, 6~21
buf[0]='\0';
for(idx=6; idx<22; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]= '\0';
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--DIO [Byte 6~21]");
tmpList->InsertString(-1, buf);
// AIO, 22~149
buf[0]='\0';
for(idx=22; idx<150; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--AIO [Byte 22~149]");
tmpList->InsertString(-1, buf);
// Hi-Alarm, 150~157
buf[0]='\0';
for(idx=150; idx<158; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Hi-Alarm [Byte 150~157]");
tmpList->InsertString(-1, buf);
// Low-Alarm, 158~165
buf[0]='\0';
for(idx=158; idx<166; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Low-Alarm [Byte 158~165]");
tmpList->InsertString(-1, buf);
// Pre-DIO, 166~181
buf[0]='\0';
for(idx=166; idx<182; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Pre-DIO [Byte 166~181]");
tmpList->InsertString(-1, buf);
// Pre-Hi-Alarm, 182~189
buf[0]='\0';
for(idx=182; idx<190; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Pre-Hi-Alarm [Byte 182~189]");
tmpList->InsertString(-1, buf);
// Pre-Low-Alarm, 190~197
buf[0]='\0';
for(idx=190; idx<198; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Pre-Low-Alarm [Byte 190~197]");
tmpList->InsertString(-1, buf);
// DIO 0->1 mask, 198~213
buf[0]='\0';
for(idx=198; idx<214; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--DIO 0->1 mask [Byte 198~213]");
tmpList->InsertString(-1, buf);
// DIO 1->0 mask, 214~229
buf[0]='\0';
for(idx=214; idx<230; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--DIO 1->0 mask [Byte 214~229]");
tmpList->InsertString(-1, buf);
// Hi-Alarm 0->1 mask, 230~237
buf[0]='\0';
for(idx=230; idx<238; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Hi-Alarm 0->1 mask [Byte 230~237]");
tmpList->InsertString(-1, buf);
// Hi-Alarm 1->0 mask, 238~245
buf[0]='\0';
for(idx=238; idx<246; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Hi-Alarm 1->0 mask [Byte 238~245]");
tmpList->InsertString(-1, buf);
// Low-Alarm 0->1 mask, 246~253
buf[0]='\0';
for(idx=246; idx<254; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Low-Alarm 0->1 mask [Byte 246~253]");
tmpList->InsertString(-1, buf);
// Low-Alarm 1->0 mask, 254~261
buf[0]='\0';
for(idx=254; idx<262; idx++)
{
sprintf(hexchar, "%02X", szPattern[idx]);
hexchar[2]=0;
strcat(buf, hexchar);
}
tmpList->InsertString(-1, "--Low-Alarm 1->0 mask [Byte 254~261]");
tmpList->InsertString(-1, buf);
//
tmpList->InsertString(-1, " ");
if (tmpList->GetCount() > 22)
tmpList->SetTopIndex(tmpList->GetCount() - 22);
}
}
}
}
}
ADAMTCP_StopEventTrigger();
ReturnValue = 0;
}
else
ReturnValue = -1;
// Close Event
CloseHandle(hEvent);
::PostMessage(hWnd->m_hWnd, WMU_THREAD_EXIT, 0,0);
AfxEndThread(0, TRUE);
return ReturnValue;
}
void CEventTriggerDlg::OnThreadExit()
{
m_rdo1.EnableWindow(TRUE);
m_rdo2.EnableWindow(TRUE);
m_rdo3.EnableWindow(TRUE);
m_btnstart.EnableWindow(TRUE);
m_btnstop.EnableWindow(FALSE);
m_btnexit.EnableWindow(TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -