int main(
int argc,
char * argv[])
{
int rc, i;
char szFileName[80] = "/etc/RTU/config.rtu";
int cnt = 0, lastCnt = 0, stopCnt = 10;
int diChannelAmount = 8;
int doChannelAmount = 8;
int diCounterChannel = 7;
int reset[] = {1};
while(-1 != (rc = getopt(argc, argv, "hc:")))
{
switch(rc)
{
case 'c':
diCounterChannel = atoi(optarg);
if(diCounterChannel < 0 || diCounterChannel > diChannelAmount - 1)
{
printf("Error parameter: Channel: %d\n", diCounterChannel);
return -1;
}
break;
case '?':
case 'h':
default:
printf("DI TAG sample program.\n\n");
printf("Usage: ./ioPAC5542_tag_di [OPTIONS]\n\n");
printf("Options:\n");
printf("\t%-8s Channel of DI counter module [%d-%d]. Default Channel = %d\n",
"-c", 0, diChannelAmount - 1, 7);
printf("\n");
return;
}
}
printf("%-10s: %d\n", "DI counter channel", diCounterChannel);
sprintf(di_counter[0], "S0_DI%d_CounterOverflowClear", diCounterChannel);
sprintf(di_counter[1], "S0_DI%d_CounterOverflowStatus", diCounterChannel);
sprintf(di_counter[2], "S0_DI%d_CounterReset", diCounterChannel);
sprintf(di_counter[3], "S0_DI%d_CounterValue", diCounterChannel);
{
printf("MX_RTU_Tag_Init(), return code = %d.\n", retval);
return 0;
}
for(i = 0; i < diChannelAmount; i++)
{
sprintf(di_tagName[i], "S0_DI%d_DIValue", i);
}
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", di_counter[2], retval);
return 0;
}
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", di_counter[2], retval);
return 0;
}
for(i = 0; i < doChannelAmount; i++)
{
sprintf(do_tagName[i], "S0_DIO%d_DOValue", i);
}
UINT32 bitVal[diChannelAmount];
for(i = 0; i < diChannelAmount; i++)
{
bitVal[i] = 0;
}
while(1)
{
for(i = 0; i < diChannelAmount ; i++)
{
retval =
MX_RTU_Tag_Read(di_tagName[i], &bitVal[i],
sizeof(bitVal), NULL, NULL);
{
printf("MX_RTU_Tag_Read(%s) = %d\n", di_tagName[i], retval);
break;
}
}
for(i = 0; i < doChannelAmount; i++)
{
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", do_tagName[i], retval);
break;
}
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", do_tagName[i], retval);
break;
}
}
retval =
MX_RTU_Tag_Read(di_counter[3], &u32Val,
sizeof(u32Val), NULL, NULL);
{
printf("MX_RTU_Tag_Read(%s) = %d\n", di_counter[3], retval);
break;
}
else
{
cnt = u32Val;
if(cnt > stopCnt)
{
printf("\nCount > %d ---> Stop!\n", stopCnt);
break;
}
lastCnt = cnt;
}
printf("\rDI = 0x%04X, Counter = %d", u32Val, cnt);
fflush(0);
}
{
printf("MX_RTU_Tag_Uninit(), return code = %d\n", retval);
}
return 0;
}