jacob com.jacob.com.ComFailException: Невозможно сопоставить имя для dispid: CardNumber [0] git hub ZkemSDK project - PullRequest
0 голосов
/ 25 ноября 2018

Я нахожусь в проекте для подключения к машине контроля доступа и посещаемости. Я нашел этот проект, который подключается к тому же типу, используя java в github, но в строке, в которой я хочу установить свойство CardNumber, у меня есть исключение "com.jacob.com.ComFailException: Невозможно сопоставить имя с показом: CardNumber [0] "может какое-то тело дать мне руку

https://github.com/lookskystar/ZKKQProject/blob/master/ZKKQProject/src/com/zkkq/uitl/ZkemSDK.java

public class ZkemSDK 
{
    private static ActiveXComponent zkem ;

    public   ZkemSDK(){

        zkem = new ActiveXComponent("zkemkeeper.ZKEM.1");
        System.out.println("done ");
    }
    public boolean connect(String address,int port, int machineNum) throws Exception{

        boolean result = zkem.invoke("Connect_NET",address,port).getBoolean();
    }

    public boolean SetUserInfo(int machineNum,int enrollNo2,String userName,String password,int privelage ,boolean flag) {

        Variant dwUserName = new Variant(userName,true);
        Variant dwPassword = new Variant(password,true);
        Variant dwPrivelage = new Variant(privelage,true);
        Variant dwEnrollNo = new Variant(enrollNo2,true);
        Variant dwMachineNum= new Variant(machineNum,true);

        /****/

        zkem.setProperty("CardNumber[0]",454545);
        /****/

        Variant vResult = Dispatch.call(zkem,"SetUserInfo",dwMachineNum, dwEnrollNo, dwUserName, dwPassword, dwPrivelage,true);


        return true;
    }
}

1 Ответ

0 голосов
/ 26 ноября 2018

я нашел, что кто-то переопределил setProperty, чтобы иметь возможность добавить массив по этой ссылке setParameter для свойства массива с JACOB мой код был таким

public static void setProperty(Dispatch d, String sName, String sIndex, String sValue) {
      Variant av[] = { new Variant(sIndex), new Variant(sValue) };
      int j[]= {0};
      Dispatch.invokev(d, sName, Dispatch.Put, av,j).safeRelease();
      av[0].safeRelease(); av[1].safeRelease();
      }

, и вызов был похож на

this.setProperty(zkem,"CardNumber","0","2599970");

до этой строки

Variant vResult = Dispatch.call(zkem,"SetUserInfo",dwMachineNum, dwEnrollNo, dwUserName, dwPassword, dwPrivelage,true);
...