#define AO_CHANNEL_ENABLE 1
int main(
int argc,
char **
const argv)
{
int rc, i;
UINT32 aiSlot = 1, aoSlot = 2, slotMin = 0, slotMax = 9;
int aoChannelAmount = 6;
int aiChannelAmount = 8;
UINT8 arrMode[aoChannelAmount];
float burnout = 2.0, burnoutMin = 0.0, burnoutMax = 4.0;
while(-1 != (rc = getopt(argc, argv, "hi:c:o:s:")))
{
switch(rc)
{
case 'i':
aiSlot = atoi(optarg);
if(aiSlot < slotMin || aiSlot > slotMax)
{
printf("Error parameter: slot: %d\n", aiSlot);
return -1;
}
break;
case 'c':
aiChannel = atoi(optarg);
if(aiChannel < 0 || aiChannel >= aiChannelAmount)
{
printf("Error parameter: ai channel: %d\n", aiChannel);
return -1;
}
break;
case 'o':
aoSlot = atoi(optarg);
if(aoSlot < slotMin || aoSlot > slotMax)
{
printf("Error parameter: slot: %d\n", aoSlot);
return -1;
}
break;
case 's':
aoChannel = atoi(optarg);
if(aoChannel < 0 || aoChannel >= aoChannelAmount)
{
printf("Error parameter: ao channel: %d\n", aoChannel);
return -1;
}
break;
case '?':
case 'h':
default:
printf("AO sample program.\n\n");
printf("Usage: ./ao [OPTIONS]\n\n");
printf("Options:\n");
printf("\t%-8s Slot of AI module [%d-%d]. Default slot = %d\n",
"-i", slotMin, slotMax, aiSlot);
printf("\t%-8s Channel on AI module [%d-%d]. Default channel = %d\n",
"-c", 0, aiChannelAmount - 1, aiChannel);
printf("\t%-8s Slot of AO module [%d-%d]. Default slot = %d\n",
"-o", slotMin, slotMax, aoSlot);
printf("\t%-8s Channel on AO module [%d-%d]. Default channel = %d\n",
"-s", 0, aoChannelAmount - 1, aoChannel);
printf("\n");
return 0;
}
}
printf("%-10s: %d\n", "AI slot", aiSlot);
printf("%-10s: %d\n", "AI channel", aiChannel);
printf("%-10s: %d\n", "AO slot", aoSlot);
printf("%-10s: %d\n", "AO channel", aoChannel);
UINT8 u8TypeBuf[aoChannelAmount];
UINT8 u8EnableBuf[aoChannelAmount];
float u32EngBuf[aoChannelAmount];
UINT8 u8RangBuf[aiChannelAmount];
for(i = 0; i < aoChannelAmount; i++)
{
u8TypeBuf[i] = type;
u32EngBuf[i] = 6.0;
}
{
printf("MX_RTU_Module_AO_Enable_Set() = %d\r\n", rc);
return 0;
}
{
printf("MX_RTU_Module_AO_Range_Set() = %d\r\n", rc);
return 0;
}
{
printf("MX_RTU_Module_AO_Eng_Value_Set() = %d\r\n", rc);
return 0;
}
for (i = 0; i < aiChannelAmount; i++) {
}
{
printf("MX_RTU_Module_Fast_AI_Range_Get() = %d\r\n", rc);
return 0;
}
while(1)
{
float fEngVal = 0;
{
printf("MX_RTU_Module_Fast_AI_Eng_Value_Get(%d, %d, %d), return code = %d.\n",
aiSlot, aiChannel, 1, rc);
break;
}
printf("\rAO[%d] Engineering Value = %10f, AI[%d] Engineering Value = %10f", aoChannel, u32EngBuf[aoChannel], aiChannel, fEngVal);
fflush(0);
}
return 0;
}