package com.qianwen.mdc.utils; import org.eclipse.swt.ole.win32.OleAutomation; import org.eclipse.swt.ole.win32.Variant; public class Lsv2Util { public static final String lsv2Ctrl3ProgId = "{F9EE051D-C65D-4480-8E35-76F10FAB15C6}"; private static Variant execute(OleAutomation oleAutomation, String methodName) { return execute(oleAutomation, methodName, null); } private static Variant execute(OleAutomation oleAutomation, String methodName, Variant[] args) { int mid = getID(oleAutomation, methodName); return execute(oleAutomation, mid, args); } private static Variant execute(OleAutomation oleAutomation, int mid, Variant[] args) { Variant rtnv; if (mid < 0) return null; if (args == null) { rtnv = oleAutomation.invoke(mid); } else { rtnv = oleAutomation.invoke(mid, args); } return rtnv; } private static int getID(OleAutomation oleAutomation, String name) { try { int[] ids = oleAutomation.getIDsOfNames(new String[] { name }); if (ids == null) return -1; return ids[0]; } catch (RuntimeException e) { e.printStackTrace(); return -1; } } public static String getLastError(OleAutomation oleAutomation) { String methodName = "LastError"; return execute(oleAutomation, methodName).getString(); } public static String getLastErrorString(OleAutomation oleAutomation) { String methodName = "LastErrorString"; return execute(oleAutomation, methodName).getString(); } public static boolean connect(OleAutomation oleAutomation) { String methodName = "Connect"; return execute(oleAutomation, methodName).getBoolean(); } public static boolean testConnection(OleAutomation oleAutomation) { String methodName = "TestConnection"; Variant[] args = { new Variant(2) }; return execute(oleAutomation, methodName, args).getBoolean(); } public static boolean disConnect(OleAutomation oleAutomation) { String methodName = "DisConnect"; return execute(oleAutomation, methodName).getBoolean(); } public static boolean reConnect(OleAutomation oleAutomation) { String methodName = "ReConnect"; return execute(oleAutomation, methodName).getBoolean(); } public static void setMedium(OleAutomation oleAutomation, int medium) { String methodName = "Medium"; Variant[] args = { new Variant(medium) }; execute(oleAutomation, methodName, args); } public static void setIPAddress(OleAutomation oleAutomation, String ipAddress) { String methodName = "IPAddress"; Variant[] args = { new Variant(ipAddress) }; execute(oleAutomation, methodName, args); } public static void setPort(OleAutomation oleAutomation) { String methodName = "Port"; execute(oleAutomation, methodName); } public static void setTransferMode(OleAutomation oleAutomation, Integer mode) { String methodName = "TransferMode"; Variant[] args = { new Variant(mode.intValue()) }; execute(oleAutomation, methodName, args); } public static void setHostFunction(OleAutomation oleAutomation, Boolean hostFunction) { String methodName = "HostFunction"; Variant[] args = { new Variant(hostFunction.booleanValue()) }; execute(oleAutomation, methodName, args); } public static String getVersionTNC(OleAutomation oleAutomation) { String methodName = "VersionTNC"; return execute(oleAutomation, methodName).getString(); } public static String getProgramName(OleAutomation oleAutomation) { String methodName = "ReceiveDNCInfo"; short type = 3; int InfoPara = 0; Variant[] args = { new Variant(type), new Variant(InfoPara) }; return execute(oleAutomation, methodName, args).getString(); } public static String receiveMemBlock(OleAutomation oleAutomation, short type, short address, short count) { String methodName = "ReceiveMemBlock"; Variant[] args = { new Variant(type), new Variant(address), new Variant(count) }; return execute(oleAutomation, methodName, args).getString(); } }