#define CMD_SET_RANGE 0
#define CMD_SET_VALUE 1
{
"+/-5V",
"+/-10V",
"0-10V",
"0-20mA",
"4-20mA"
};
{
return setuid(0);
}
{
printf("Content-type: text/html; charset=utf-8\n\n");
printf("<html>");
printf("<head>");
printf("<link href=\"../iopac.css\" rel=stylesheet type=text/css>");
printf("<title>%s</title>", title);
printf("<script Language=\"JavaScript\">");
printf("function refreshPage(){window.location.reload();}");
printf("</script>");
printf("</head>");
printf("<body>\n");
printf("<input type=\"button\" value=\"Refresh page\" onClick=\"refreshPage()\">");
}
{
printf("</body>");
printf("</html>\n");
}
{
printf("<table border=\"%d\" width=\"%d%%\">", border, width);
}
{
printf("</table>");
}
{
printf("<tr>");
}
{
printf("</tr>");
}
void insertData(
int width,
char *align,
char *cssClass,
char *data)
{
printf("<td width=\"%d%%\" align=\"%s\" class=\"%s\">%s</td>", width, align, cssClass, data);
}
{
int cmdIdx = -1;
int channel = 0;
char szSetValue[80] = {0};
int ret;
if(cmd == NULL || strcmp(cmd, "") == 0)
{
return -1;
}
sscanf(cmd, "cmd=%d&ch=%d&set=%s", &cmdIdx, &channel, szSetValue);
switch(cmdIdx)
{
{
int i = 0;
printf("MX_RTU_Module_AO_Range_Set = %d<br>\n", ret);
break;
}
{
int i = 0;
float value = (float) atof(szSetValue);
printf("MX_RTU_Module_AO_Eng_Value_Set = %d<br>\n", ret);
break;
}
default:
printf("Error command.\n");
break;
}
return 0;
}
{
char *p;
int slot, chStart, chCount;
char buf[100] = {0};
if((p = getenv("QUERY_STRING")))
{
if(0 == strcmp(p, ""))
{
return;
}
}
else
{
return;
}
sscanf(p, "slot=%d&chStart=%d&chCount=%d&%s", &slot, &chStart, &chCount, buf);
if(buf)
memcpy(command, buf, strlen(buf));
*pChStart = chStart;
*pChCount = chCount;
}
int main(
int argc,
char* argv[],
char *envp[])
{
int i, j;
int ret = 0;
int chAmount = 4;
UINT8 aoSlot = 1, chStart = 0, chCount = 4;
char command[100] = {0};
float aoValue[chAmount];
char *cgiName;
cgiName = getenv("SCRIPT_NAME");
getCgiArg(&aoSlot, &chStart, &chCount, command);
if(0 ==
execCmd(aoSlot, chStart, chCount, command))
{
printf("<script Language=\"JavaScript\">");
printf("window.location.assign(\"%s?slot=%d&chStart=%d&chCount=%d\");",
cgiName, aoSlot, chStart, chCount);
printf("</script>");
}
else
{
insertData(30,
"left",
"block_title",
"AO Channel");
insertData(35,
"center",
"block_title",
"Sensor Type");
printf("MX_RTU_Module_AO_Range_Get = %d<br>\n", ret);
printf("MX_RTU_Module_AO_Eng_Value_Get = %d<br>\n", ret);
for(i = 0; i < chCount; i++)
{
char chMsg[20], valueMsg[20];
char cssClass[20];
float engMin = 0, engMax = 0;
float fTmp;
if(i % 2)
sprintf(cssClass, "column_title_bg");
else
sprintf(cssClass, "column_title");
sprintf(chMsg, "AO-%02d", chStart+i);
sprintf(valueMsg, "%.3f", aoValue[i]);
printf("<td width=\"%d%%\" align=\"%s\" class=\"%s\">", 35, "center", cssClass);
printf("<select onChange=\"location = this.options[this.selectedIndex].value;\">");
printf("<option value=\"#\">%s</option>", aoRangeList[aoRange[i]]);
for(j = 0; j <
sizeof(
aoRangeList)/
sizeof(aoRangeList[0]); j++)
{
if(j == 0)
printf("<option value=\"%s?slot=%d&chStart=%d&chCount=%d&cmd=%d&ch=%d&set=%d\" disabled>%s</option>",
cgiName, aoSlot, chStart, chCount,
CMD_SET_RANGE, chStart+i, j, aoRangeList[j]);
else
printf("<option value=\"%s?slot=%d&chStart=%d&chCount=%d&cmd=%d&ch=%d&set=%d\">%s</option>",
cgiName, aoSlot, chStart, chCount,
CMD_SET_RANGE, chStart+i, j, aoRangeList[j]);
}
printf("</select></td>");
printf("<td width=\"%d%%\" align=\"%s\" class=\"%s\">", 35, "center", cssClass);
printf("<input type=text id=\"%s%d\" size=\"%d\" value=\"%s\" style=\"text-align: right\">", "value", i, 8, valueMsg);
printf("<button onclick=\"javascript:location.href='%s?slot=%d&chStart=%d&chCount=%d&cmd=%d&ch=%d&set='+document.getElementById('%s%d').value\">submit</button>",
cgiName, aoSlot, chStart, chCount,
CMD_SET_VALUE, chStart+i,
"value", i);
printf("</td>");
}
}
return ret;
}