#define DI_CHANNELS 8
#define DI_TAG "S0_DI%d_DIValue"
int main(
int argc,
char * argv[])
{
int retval = 0;
unsigned char channel = 0;
unsigned char parameter = 0;
unsigned char tagValue = 0;
while((retval = getopt(argc, argv, "he:")) != -1)
{
switch(retval)
{
case 'e':
parameter = atoi(optarg);
if(parameter > 2)
{
printf("Error event condition = %d\r\n", parameter);
return -1;
}
break;
case '?':
case 'h':
default:
printf("%s.\n\n", "ioPAC5542 DI Tag Event program");
printf("Usage: ./ioPAC5542_di_tag_event [OPTIONS]\n\n");
printf("Options:\n");
printf("\t%-8s Event Condition [%d-%d]. Default event condition = %d\n", "-e", 0, 2, parameter);
printf("\t%-8s (0: EDGE, 1: RAISING EDGE, 2: FALLING EDGE)\n", "");
printf("\n");
return;
}
}
printf("\r\nTag Init\r\n");
{
printf("MX_RTU_Tag_Init error = %d\r\n", retval);
return -1;
}
else printf("Tag Init ok!\r\n\r\n");
printf("Get Tag Info\r\n");
memset(diTagInfo, 0, sizeof(diTagInfo));
{
memset(tagName, 0, sizeof(tagName));
sprintf(tagName,
DI_TAG, channel);
{
printf("tagName = %s, MX_RTU_Tag_Get_Info error = %d\r\n", tagName, rc);
goto exit;
}
}
printf("Get Tag Info ok\r\n\r\n");
printf("DIs Tag Event register\r\n");
memset(handle, 0, sizeof(handle));
memset(&eventConditionStruct, 0, sizeof(eventConditionStruct));
eventConditionStruct.
condition = eventCondition;
{
memset(tagName, 0, sizeof(tagName));
sprintf(tagName,
DI_TAG, channel);
{
{
printf("tagName = %s, MX_RTU_Tag_Event_Register error = %d\r\n", tagName, rc);
goto unregister;
}
}
else goto unregister;
}
printf("DIs Tag Event register ok\r\n\r\n");
printf("Wait for DI Events...\r\n\r\n");
while(1)
{
{
memset(tagName, 0, sizeof(tagName));
sprintf(tagName,
DI_TAG, channel);
tagValue = 0;
memset(×tamp, 0, sizeof(timestamp));
{
continue;
}
{
printf("tagName = %s, handle = %d, MX_RTU_Tag_Event_Get error = %d\r\n", tagName, handle[channel], rc);
break;
}
else
{
printf("tagName = %s, value = %d, timestamp = %d:%d:%d.%d(hour:min:sec.msec)\r\n", tagName, tagValue, timestamp.hour, timestamp.min, timestamp.sec, timestamp.msec);
}
}
}
unregister:
printf("\r\nDIs Tag Event unregister\r\n");
{
}
printf("DIs Tag Event unregister finish\r\n");
exit:
printf("\r\nTag Uninit\r\n");
{
printf("MX_RTU_Tag_Uninit error = %d\r\n", retval);
}
else printf("Tag Uninit ok\r\n");
return 0;
}