package com.jni;
public class JavaCVRda {
public native int Init(); // 初始化icv的远程访问接口
public native int Release(); // 释放icv的远程访问接口
public native void AddNode(String nodeName, String nodeMainIp, String nodeBakeIp); // 可选
public native void SetPort(int nPort); // 可选
public native String Sync_Read(String tagName, int msTimeOut); // 读取单个tag点的值
public native int Sync_Write(String tagName, String tagValue, int msTimeOut); // 写入tag点值
public native long Page_RegisterNTF(String tagNames, int nRefreshRateMS); // 注册一组变量,以逗号隔开。注册后,icv将以固定周期预先读取到本地
public native String Page_Read(String tagName); // 获取某个注册过的变量的值。从本地内存 读取,所以很快
public native int Page_Release(long ntfHandle); // 释放某组注册过的变量
public static void main(String[] args){
//加载动态链接库, java.library.path要包含javacvrda.dll
System.loadLibrary("javacvrda");
JavaCVRda cvrda = new JavaCVRda();
int ret = cvrda.Init();
System.out.println("cvrda.Init()"+ret);
ret=cvrda.Sync_Write("tag1", "1001", 1000);
System.out.println("cvrda.Sync_Write(tag1,10001)="+ret);
String tagValue=cvrda.Sync_Read("tag1", 100);
System.out.println("cvrda.Sync_Read(tag1)="+tagValue);
System.out.println("cvrda.批量读取");
long handle=cvrda.Page_RegisterNTF("tag1,tag2,tag3", 1000);
System.out.println("cvrda.Page_RegisterNTF(tag1,tag2,tag3,1000)="+handle);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 调用Page_Read前需要等下,因此上面注册完毕还没有从服务端拿到数据
tagValue=cvrda.Page_Read("tag1");
System.out.println("cvrda.Page_Read(tag1)="+tagValue);
ret = cvrda.Page_Release(handle);
System.out.println("cvrda.Page_Release("+handle+")="+ret);
ret = cvrda.Release();
System.out.println("cvrda.Release()"+ret);
}
}