int main(
int argc,
char * argv[])
{
int rc, i;
char szFileName[80] = "/etc/RTU/config.rtu";
UINT32 outMode = 0, lastOutMode = -1;
int diChannelAmount = 2;
int doChannelAmount = 8;
int doPWMChannel = 4;
int PWMcount = 0;
while(-1 != (rc = getopt(argc, argv, "hc:p:")))
{
switch(rc)
{
case 'c':
doPWMChannel = atoi(optarg);
if(doPWMChannel < 0 || doPWMChannel > doChannelAmount - 1)
{
printf("Error parameter: Channel: %d\n", doPWMChannel);
return -1;
}
break;
case 'p':
PWMcount = atoi(optarg);
if(PWMcount < 0)
{
printf("Error parameter: PWMcount: %d\n", PWMcount);
return -1;
}
break;
case '?':
case 'h':
default:
printf("DO TAG sample program.\n\n");
printf("Usage: ./ioPAC5542_tag_do [OPTIONS]\n\n");
printf("Options:\n");
printf("\t%-8s Channel of DO PWM module [%d-%d]. Default Channel = %d\n",
"-c", 0, doChannelAmount - 1, 4);
printf("\t%-8s The amount of PWM output count. Default count = %d\n",
"-p", 0);
printf("\n");
return;
}
}
printf("%-10s: %d\n", "PWMChannel", doPWMChannel);
printf("%-10s: %d\n", "PWMcount", PWMcount);
sprintf(do_PWM[0], "S0_DIO%d_PWMCount", doPWMChannel);
sprintf(do_PWM[1], "S0_DIO%d_PWMStartStop", doPWMChannel);
{
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);
}
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;
}
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", do_PWM[0], retval);
return 0;
}
memcpy(tagBuf, &PWMcount, tagInfo.
tagSize);
{
printf(
"MX_RTU_Tag_Write(%s), return code = %d\r\n", tagInfo.
tagName, retval);
return 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;
}
}
outMode = bitVal[0] + 2 * bitVal[1];
printf("\rMode: %d", outMode);
fflush(0);
if(outMode == lastOutMode)
continue;
lastOutMode = outMode;
if(outMode == 0)
{
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;
}
}
}
else if(outMode == 1)
{
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", do_PWM[1], retval);
break;
}
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", do_PWM[1], retval);
break;
}
}
else if(outMode == 2)
{
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", do_PWM[1], retval);
break;
}
{
printf("MX_RTU_Tag_Read(%s) = %d\n", do_PWM[1], retval);
break;
}
}
else if(outMode == 3)
{
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;
}
}
}
else
{
printf("Error DI Value Input.\n");
return 0;
}
}
{
printf("MX_RTU_Tag_Uninit(), return code = %d\n", retval);
}
return 0;
}