代码如下
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.1.0</version>
</dependency>
package zk.jni;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.NativeLong;
public class JavaToAdmsPullSDK1 {
public interface Dll extends Library {
Dll instance = (Dll)Native.loadLibrary("C://Windows//system32//plcommpro", Dll.class);
int Connect(String str);
int ControlDevice(int h, NativeLong OperationID, NativeLong Param1, NativeLong Param2, NativeLong Param3, NativeLong Param4, String Options);
int PullLastError();
}
package zk.jni;
import com.sun.jna.NativeLong;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("open")
public class JavaToAdmsPullSDK{
@GetMapping("{ip}/{doorId}")
public boolean OpenDoor(@PathVariable(value = "ip") String ip,
@PathVariable(value = "doorId") int doorId){
int h = 0;
String str="protocol=TCP,ipaddress="+ip+",port=4370,timeout=2000,passwd=";
int ret = 0;
//連接
if (0 == h) {
h = JavaToAdmsPullSDK1.Dll.instance.Connect(str);
if (h != 0) {
System.out.println("Connect device succeed!");
} else {
ret = JavaToAdmsPullSDK1.Dll.instance.PullLastError();
System.out.println("Connect device Failed! The error id is: " + ret);
return false;
}
//开门
int res=0;
NativeLong OperationID=new NativeLong(1);//operationID
NativeLong Param1=new NativeLong(doorId);//DoorID
NativeLong Param2=new NativeLong(1);//OutputAddress
NativeLong Param3=new NativeLong(5);//DoorState(5秒)
NativeLong Param4=new NativeLong(0);//預留
res = JavaToAdmsPullSDK1.Dll.instance.ControlDevice(h, OperationID, Param1, Param2, Param3, Param4, "");
if (res >= 0) {
System.out.println("The operation succeed!");
}else{
ret = JavaToAdmsPullSDK1.Dll.instance.PullLastError();
System.out.println("Connect device Failed! The error id is: " + ret);
return false;
}
}else{
ret = JavaToAdmsPullSDK1.Dll.instance.PullLastError();
System.out.println("Connect device Failed! The error id is:" + ret);
return false;
}
System.out.println("连接成功ipaddress="+ip+" dorrId="+doorId);
return true;
}
}
注意事项
注:1.我是64位的系统用的32位的jre,64位的jre我试过貌似不能成功