int main(
int argc,
char **
const argv)
{
int rc, i;
UINT32 doSlot = 2, slotMin = 0, slotMax = 9;
unsigned short burnStat;
int tcChannelAmount = 8;
int doChannelAmount = 2;
float u32Val = 0;
float fThreshold = 100.0f;
float fVal = 0;
while(-1 != (rc = getopt(argc, argv, "hi:c:r:s:")))
{
switch(rc)
{
case 'i':
tcSlot = atoi(optarg);
if(tcSlot < slotMin || tcSlot > slotMax)
{
printf("Error parameter: slot: %d\n", tcSlot);
return -1;
}
break;
case 'c':
tcChannel = atoi(optarg);
if(tcChannel < 0 || tcChannel >= tcChannelAmount)
{
printf("Error parameter: channel: %d\n", tcChannel);
return -1;
}
break;
case 'r':
fThreshold = atof(optarg);
break;
case 's':
doSlot = atoi(optarg);
if(doSlot < slotMin || doSlot > slotMax)
{
printf("Error parameter: slot: %d\n", doSlot);
return -1;
}
break;
case '?':
case 'h':
default:
printf("TC TAG sample program.\n\n");
printf("Usage: ./ioPAC8500_tag_tc [OPTIONS]\n\n");
printf("Options:\n");
printf("\t%-8s Slot of TC module [%d-%d]. Default slot = %d\n",
"-i", slotMin, slotMax, tcSlot);
printf("\t%-8s Channel on TC module [%d-%d]. Default channel = %d\n",
"-c", 0, tcChannelAmount - 1, tcChannel);
printf("\t%-8s Test threshold. Default threshold = %.3f\n",
"-r", fThreshold);
printf("\t%-8s Slot of DO module [%d-%d]. Default slot = %d\n",
"-s", slotMin, slotMax, doSlot);
printf("\n");
return 0;
}
}
printf("%-10s: %d\n", "TC slot", tcSlot);
printf("%-10s: %d\n", "TC channel", tcChannel);
printf("%-10s: %.3f\n", "Threshold", fThreshold);
printf("%-10s: %d\n", "DO slot", doSlot);
sprintf(tc[0], "S%d_TC%d_TCValue", tcSlot, tcChannel);
sprintf(tc[1], "S%d_TC%d_TCMaxValue", tcSlot, tcChannel);
sprintf(tc[2], "S%d_TC%d_TCMinValue", tcSlot, tcChannel);
sprintf(tc[3], "S%d_TC%d_ResetMaxMin", tcSlot, tcChannel);
sprintf(tc[4], "S%d_TC%d_BurnOutState",tcSlot, tcChannel);
{
printf("MX_RTU_Tag_Init(), return code = %d.\n", retval);
return 0;
}
for(i = 0; i < doChannelAmount; i++)
{
sprintf(do_tagName[i], "S%d_DO%d_DOValue", doSlot, i);
}
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;
}
}
while(1)
{
{
printf("MX_RTU_Tag_Read(%s) = %d\n", tc[0], retval);
break;
}
{
printf("MX_RTU_Tag_Read(%s) = %d\n", tc[4], retval);
break;
}
printf("\rTC Value = %20f, TC Burnout Status = %d", fVal, burnStat);
fflush(0);
if(burnStat == 1)
{
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", do_tagName[0], retval);
break;
}
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", do_tagName[0], retval);
break;
}
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", do_tagName[1], retval);
break;
}
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", do_tagName[1], retval);
break;
}
}
else {
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", do_tagName[1], retval);
break;
}
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", do_tagName[1], retval);
break;
}
if(fVal > fThreshold)
{
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", do_tagName[0], retval);
break;
}
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", do_tagName[0], retval);
break;
}
}
else {
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", do_tagName[0], retval);
break;
}
{
printf("MX_RTU_Tag_Write(%s), return code = %d\r\n", do_tagName[0], retval);
break;
}
}
}
}
{
printf("MX_RTU_Tag_Uninit(), return code = %d\n", retval);
}
return 0;
}