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

📄 eventtriggerdlg.cpp

📁 关于台湾研华远程以太网模块上位机控制源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -