Technical information

RMS NetLinx Virtual Device API
123
RMS Enterprise - NetLinx Programmer’s Guide
RMS Command Escaping Functions (Cont.)
RmsPackCmdParam Description: Use this function to package parameter for module SEND_COMMAND or SEND_STRING.
Wraps the parameter in double-quotes if it contains the separator.
This function assumes the standard Duet parameter separator ','.
Parameters:
(1) IN - sndcmd/str to which parameter will be added
(2) IN - sndcmd/str parameter
Returns: Packed parameter wrapped in double-quotes if needed, added to the command.
Syntax:
DEFINE_FUNCTION CHAR[RMS_MAX_CMD_LEN] RmsPackCmdParam(CHAR cCmd[], CHAR cParam[])
{
STACK_VAR CHAR cTemp[RMS_MAX_CMD_LEN]
STACK_VAR CHAR cTempParam[RMS_MAX_CMD_LEN]
STACK_VAR CHAR cCmdSep[1]
STACK_VAR CHAR cParamSep[1]
STACK_VAR INTEGER nLoop
cCmdSep = '-'
cParamSep = ','
// Not the first param? Add the param separator
cTemp = cCmd
IF (FIND_STRING(cCmd,cCmdSep,1) != (LENGTH_STRING(cCmd)-LENGTH_STRING(cCmdSep)+1))
cTemp = "cTemp,cParamSep"
// Escape any quotes
FOR (nLoop = 1; nLoop <= LENGTH_ARRAY(cParam); nLoop++)
{
IF (cParam[nLoop] ==
'"')
cTempParam = "cTempParam,'"'"
cTempParam = "cTempParam,cParam[nLoop]"
}
RmsPackCmdParam
Array
Description: Use this function to package parameters for module SEND_COMMAND or SEND_STRING.
Wraps the parameter in double-quotes if it contains the separator and separates them using the separator
sequence.
This function assumes the standard Duet parameter separator ','
Parameters:
(1) IN - sndcmd/str to which parameter will be added
(2) IN - sndcmd/str parameter array
Returns: Packed parameters wrapped in double-quotes if needed
Syntax:
DEFINE_FUNCTION CHAR[RMS_MAX_CMD_LEN] RmsPackCmdParamArray(CHAR cCmd[], CHAR
cParams[][])
{
STACK_VAR CHAR cTemp[RMS_MAX_CMD_LEN]
STACK_VAR INTEGER nLoop
STACK_VAR INTEGER nMax
STACK_VAR CHAR cCmdSep[1]
STACK_VAR CHAR cParamSep[1]
cCmdSep = '-'
cParamSep = ','
nMax = LENGTH_ARRAY(cParams)
IF (nMax == 0)
nMax = MAX_LENGTH_ARRAY(cParams)
cTemp = cCmd
FOR (nLoop = 1; nLoop <= nMax; nLoop++)
cTemp = RmsPackCmdParam(cTemp,cParams[nLoop])
RETURN cTemp;
}