问题现象在CMD命令表中定义了四层 如下
Table MAIN = { /*-------------------------------------- # subtable class options command word - --------- ---------- -------------------- ----------------- */ { 1, ISOMMANAGER, INHERIT, NONE | CMDSTR (CMDID_ISOMMANAGER), "ISOMMANAGER" },};
Table ISOMMANAGER = { /*-------------------------------------- # subtable class options command word - --------- --------- ----------------- ---------- */ { 1, ZERO , INHERIT, NONE | CMDSTR (CMDID_ISOMMANAGER), "START" }, { 2, SELECT , INHERIT, NONE | CMDSTR (CMDID_ISOMMANAGER), "SELECT" },
};
Table SELECT = { /*-------------------------------------- # subtable class options command word - --------- --------- ----------------- ---------- */ { 30, ZERO, INHERIT, NONE | CMDSTR (CMDID_ISOMMANAGER), "OPEN" }, { 31, ZERO, INHERIT, NONE | CMDSTR (CMDID_ISOMMANAGER_SELECT), "OK" }, { 40, ROUTE, INHERIT, NONE | CMDSTR (CMDID_ISOMMANAGER_ROUTE), "ROUTE" },
Table ROUTE = { /*-------------------------------------- # subtable class options command word - --------- --------- ----------------- ---------- */ { 41, ZERO , INHERIT, NONE | CMDSTR (CMDID_ISOMMANAGER_ROUTE), "DIRECTION" }, { 42, ZERO , INHERIT, NONE | CMDSTR (CMDID_ISOMMANAGER_ROUTE), "RESET" },
但是 调用 ISOMMANAGER SELECT ROUTE RESET 的时候就说在这个AP中没有定义。但是如果改为三层,就可以调用。
想请教一下,这个MS中是不是对CMD有层数的制限。
Hi Liu-san,
MDL中的Command最多可以定义为5层。一个commandnumber是一个长整型数,如0x01020345。其中的01表示第一级命令的索引值,02是第二级命令的索引值,03是第三级命令的索引值,4是第四级,5是第五级。它们都是十六进制的,因而可以推断出前三级分别可有最多256个不同的命令键入,后两级最多可有16个不同的命令键入。
您的命令不能起作用推测应该是您的整个cmd.r文件某处定义有问题。可否将整个cmd.r文件上载到这里供分析?
本论坛附加文件的方法是:①答复问题时选择Advanced Reply Editor;②将您要附加的文件压缩为.zip文件;③用Insert/Edit Media工具将该文件插入
Answer Verified By: Bin.Liu
TheoldCMD.zipYongan.Fu
Thank you for your replay.
稍微再说明一下,在mstn中直接用 isommanager select route restart 就会报出 这个APP中没有定义这个命令。
但是 mdlDialog_cmdNumberQueue(TRUE, CMD_ISOMMANAGER_SELECT_ROUTE_RESTART,mdlSystem_getCurrTaskID(),TRUE);底层MDL编程使用的时候是没有什么问题的。
谢谢Mr Fu
---------------------------------------------------------------
中国市政工程西北设计研究院有限公司武汉分院