command table 最多有几层

问题现象
在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有层数的制限。

Parents
  • 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

  • 我感觉是命令表没有添加到资源文件中去,能否发上你的mke文件?

    ---------------------------------------------------------------

    中国市政工程西北设计研究院有限公司武汉分院


  • Hi Liu-san,
    正如我帖子中解释的,command其实是5级,在后两级的命令索引值(即命令表项中的第一个字段)不能大于16,我看您ROUTE表中的命令索引值为41~47, 都大于16了。推测应该是这个原因所致。
    每个子表中的索引值最好都从1开始编号,没有必要保持不同表中的索引值不同。

    您修改一下这些索引值试一下。



    Answer Verified By: Bin.Liu 

Reply
  • Hi Liu-san,
    正如我帖子中解释的,command其实是5级,在后两级的命令索引值(即命令表项中的第一个字段)不能大于16,我看您ROUTE表中的命令索引值为41~47, 都大于16了。推测应该是这个原因所致。
    每个子表中的索引值最好都从1开始编号,没有必要保持不同表中的索引值不同。

    您修改一下这些索引值试一下。



    Answer Verified By: Bin.Liu 

Children