#define MODE_LIST 0
#define MODE_READ 1
#define MODE_WRITE 2
{
printf("%s.\n\n", "TAG utility");
printf("Usage: ./tag_utility [OPTIONS]\n\n");
printf("Options:\n");
printf("\t%-8s List mode. Listing all of the tags. (default mode = list mode)\n", "-l");
printf("\t Ex. ./tag_utility -l\n");
printf("\t%-8s Read mode. Read a tag. Using with -n.\n", "-r");
printf("\t Ex. ./tag_utility -r -n TagName\n");
printf("\t%-8s Write mode. Write a tag. Using with -n, -v.\n", "-w");
printf("\t Ex. ./tag_utility -w -n TagName -v TagValue\n");
printf("\t%-8s Tag name.\n", "-n NAME");
printf("\t%-8s Tag value.\n", "-v VALUE");
printf("\t%-8s Print timestamp.\n", "-t");
printf("\n");
}
int main(
int argc,
char **
const argv)
{
int rc;
char szFileName[80] = "/etc/RTU/config.rtu";
int isNameSet = 0;
int isValueSet = 0;
int i;
char ch;
char printTimestamp = 0;
while(-1 != (rc = getopt(argc, argv, "lwrn:v:th")))
{
switch(rc)
{
case 'l':
break;
case 'r':
break;
case 'w':
break;
case 'n':
strcpy(szTagName, optarg);
isNameSet = 1;
break;
case 'v':
strcpy(szTagValue, optarg);
isValueSet = 1;
break;
case 't':
printTimestamp = 1;
break;
case 'h':
case '?':
default:
return 0;
}
}
{
printf("MX_RTU_Tag_Init(), return code = %d.\n", retval);
return 0;
}
switch(mode)
{
break;
{
if(!isNameSet)
{
printf("no tag name, please use \"-n\".\n");
break;
}
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", szTagName, retval);
break;
}
memset(×tamp, 0, sizeof(timestamp));
{
{
sprintf(szVal, "%d", val);
break;
}
{
sprintf(szVal, "%d", val);
break;
}
{
sprintf(szVal, "%d", val);
break;
}
{
sprintf(szVal, "%d", val);
break;
}
{
sprintf(szVal, "%d", val);
break;
}
{
sprintf(szVal, "%d", val);
break;
}
{
sprintf(szVal, "%d", val);
break;
}
{
float val = 0;
sprintf(szVal, "%.3f", val);
break;
}
{
char val[64];
memset(val, 0 , 64);
sprintf(szVal, "%s", val);
break;
}
}
{
if(printTimestamp)
printf(
"%s = %s, timestamp = %d.%d.%d-%d:%d:%d.%d\n", tagInfo.
tagName, szVal, timestamp.year, timestamp.mon, timestamp.day, timestamp.hour, timestamp.min, timestamp.sec, timestamp.msec);
else
printf(
"%s = %s\n", tagInfo.
tagName, szVal);
}
else
printf(
"MX_RTU_Tag_Read(%s), return code = %d\r\n", tagInfo.
tagName, retval);
break;
}
{
if(!isNameSet)
{
printf("no tag name, please use \"-n\".\n");
break;
}
if(!isValueSet)
{
printf("no tag value, please use \"-v\".\n");
break;
}
{
printf("MX_RTU_Tag_Get_Info(%s), return code = %d.\n", szTagName, retval);
break;
}
{
{
unsigned int data = atoi(szTagValue);
memcpy(tagBuf, &data, tagInfo.
tagSize);
break;
}
{
float fData = atof(szTagValue);
memcpy(tagBuf, &fData, tagInfo.
tagSize);
break;
}
{
memcpy(tagBuf, szTagValue, strlen(szTagValue));
break;
}
}
printf(
"MX_RTU_Tag_Write(%s), return code = %d\r\n", tagInfo.
tagName, retval);
break;
}
default:
printf("unknow command.\n");
break;
}
printf("MX_RTU_Tag_Uninit() = %d\n", retval);
return 0;
}