public static void main(String args[]){         try {
            ComThread.InitMTA();//ComThread.InitMTA();
            String progId = "SV3880-SDK";
            Dispatch zkem = new ActiveXComponent(progId);
            int d=Dispatch.call(zkem,"C_ServerInit",new Variant(8420),new Variant(0)).getInt();
         System.out.println(d);
        
         Thread.sleep(15000);             
            boolean b =  Dispatch.call(zkem, "C_IsDeviceConnected",new Variant(2016042501)).getBoolean();
            System.out.println("连接:"+b);
            String str=Dispatch.call(zkem, "C_GetDevicesList").getString();
            System.out.println("连接设备"+str);
           
            SensorEvents events = new SensorEvents();
            new DispatchEvents(zkem, events,progId);
            Variant st=Dispatch.call(zkem, "C_GetDeviceTime",new Variant(2016042501));
            System.out.println("设备时间"+st);
            
            //Dispatch.call(zkem,"RegEvent",new Variant(1l),new Variant(65535l));             STA sta = new STA();
            sta.doMessagePump();
            System.in.read();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
public class SensorEvents {
public void OnEventCConnect(Variant[] args) {
System.out.println(args[0].getString());
System.out.println(args[1].getLong());
System.out.println(args[2].getLong());
System.out.println(args[3].getLong());
System.out.println(args[4].getString());
System.out.println(args[5].getLong());
}

解决方案 »

  1.   

    多看看文档吧,要不就是这个类库的限制。。你可以使用.net访问com,然后做个cli接口,java调用。可以使用转接口技术
      

  2.   

    先设置事件,然后再call试一下
      

  3.   

    连接设备后,进行监听事件注册:Variant v0 = new Variant(2);
    Variant eventMask = new Variant(65535);
    boolean result2 = zkem.invoke("RegEvent",v0,eventMask).getBoolean();
    System.out.println("regEvent()===="+result2);
    com.welinks.pojo.ZkemEvent zkemEvent=new com.welinks.pojo.ZkemEvent();
    Dispatch ob =zkem.getObject();
    DispatchEvents dispatchEvents=new DispatchEvents((Dispatch) ob,zkemEvent,componetName);然后,进行监听:
    DispatchEvents de = new DispatchEvents(ob,zkemEvent);
    STA sta = new STA();
    sta.doMessagePump();
    上面的代码,会自动让程序挂起,接受设备响应的数据。
      

  4.   

    楼主解决问题了吗?我也碰到了一样的问题,java通过jacob调用ocx 方法可以使用 事件响应不了。我的QQ982278442