`
zjutsoft
  • 浏览: 460273 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 操作 LED DLL 动态链接库 JNaitive

    博客分类:
  • java
阅读更多
主要是操作LDE。 java 来操作dll动态链接库。
包含 四个文件    JNative.jar. 动态链接库BxADLL.dll.
需要放到 c:\windows\system32目录下面的。 JNativeCpp.dll


源代码:
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.HeapMemoryBlock;
import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;
import org.xvolks.jnative.misc.basicStructures.INT64;
import org.xvolks.jnative.misc.basicStructures.LONG;
import org.xvolks.jnative.misc.basicStructures.HWND;
import org.xvolks.jnative.misc.basicStructures.LPARAM;
import org.xvolks.jnative.misc.basicStructures.HANDLE;
import org.xvolks.jnative.util.Callback;

public class catchDLL2 {
private static JNative v = null;

/**
* 加载的DLL
*/
private static final String DLL_LIB = "BxADLL.dll";



// 强制关机
static void SetScreenState(int a){
int i=0;
try{
v = new JNative(DLL_LIB, "SetScreenState");
Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(100));
v.setParameter(i++,1);
v.setParameter(i++,a);
p.setStringAt(0,"ScreenStateData1");
v.setParameter(i++,p);
v.invoke();
}catch(Exception e){
e.printStackTrace();
}
}
//设置亮度
static void SetScreenLight(int a){
int i=0;
try{
v = new JNative(DLL_LIB, "SetScreenLight");
Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(100));
v.setParameter(i++,1);
v.setParameter(i++,a);
p.setStringAt(0,"ScreenLight1");
v.setParameter(i++,p);
v.invoke();
}catch(Exception e){
e.printStackTrace();
}
}
//设置显示屏参数
static void SetScreenParameter() throws NativeException, IllegalAccessException{
int i = 0;
v = new JNative(DLL_LIB, "SetScreenParameter");
Pointer p3 = new Pointer(MemoryBlockFactory.createMemoryBlock(100));

p3.setStringAt(0,"ParametetData1");
//设置参数
v.setParameter(i++,1);

v.setParameter(i++,64);
v.setParameter(i++,32);
v.setParameter(i++,2);
v.setParameter(i++,2);
v.setParameter(i++,0);
v.setParameter(i++,0);
v.setParameter(i++,p3);

//设置返回值类型
//v.setRetVal(Type.INT);
v.invoke();


}
//发送命令   参数是包含命令的文件
static int SendDataToComm(String pchar,int i){
int ret=1;
try{
v = new JNative(DLL_LIB, "SendDataToComm");
System.out.println(v.getDLLName());
Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(100));
Pointer p2 = new Pointer(MemoryBlockFactory.createMemoryBlock(100));

//设置参数
v.setParameter(0,1);

v.setParameter(1,i);
v.setParameter(2,64);
v.setParameter(3,32);
v.setParameter(4,2);
p.setStringAt(0,"Com1");
v.setParameter(5,p);
v.setParameter(6,57600);
p2.setStringAt(0,pchar);
v.setParameter(7,p2);

//设置返回值类型
v.setRetVal(Type.LONG);
v.invoke();
//System.out.println("LED设备="+p2.getAsString());
ret = Integer.parseInt(v.getRetVal());
}catch(Exception e){
e.printStackTrace();
}
return ret;
}
//取得发送全部显示屏数据的数据头信息,在添加显示区域信息前添加。
static void GetAllDataHead(){

try{

int i = 0;
v = new JNative(DLL_LIB, "GetAllDataHead");
/*Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(100));

p.setStringAt(0,"SendAllDataHead1");*/
//设置参数===================

//显示屏屏号
v.setParameter(i++,1);
//显示屏中区域的个数
v.setParameter(i++,2);
//字幕区域的宽度
v.setParameter(i++,64);
//字幕区域的高度
v.setParameter(i++,32);
//显示屏类型
v.setParameter(i++,2);

//字幕区域信息保存的文件名;
v.setParameter(i++,"SendAllDataHead1");


//设置返回值类型
//v.setRetVal(Type.INT);
v.invoke();



}catch(Exception e){
e.printStackTrace();
}

}
//合并显示区域信息文件 
static void UnionAreaDataToFile(int a,int b,String file,int c){


try{

int i = 0;
v = new JNative(DLL_LIB, "UnionAreaDataToFile");
/*Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(100));
Pointer p1 = new Pointer(MemoryBlockFactory.createMemoryBlock(100));
p.setStringAt(0,file);
p1.setStringAt(0,"SendAllData1");*/
//设置参数===================

//pSourceFile是否是区域文件;1:区域文件;0:非区域文件;
v.setParameter(i++,a);
//区域序号;从1开始;
v.setParameter(i++,b);
//预合并信息文件名称
v.setParameter(i++,file);
//合并目标文件名称。
v.setParameter(i++,"SendAllData1");
//0:在原文件下添加合并信息文件;1:删除原文件信息,重新创建合并信息文件
v.setParameter(i++,c);



//设置返回值类型
//v.setRetVal(Type.INT);
v.invoke();



}catch(Exception e){
e.printStackTrace();
}


}
//转换 字幕区域显示信息 SendDataTitle1 D1
static void SetScreenTitle(int nAreaOrdID,int x,int y,int hight,int big,String pTitle,int nStunt,int nRunSpeed,int nShowTime){
try{

int i = 0;
v = new JNative(DLL_LIB, "SetScreenTitle");
Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(100));
//Pointer p1 = new Pointer(MemoryBlockFactory.createMemoryBlock(100));
Pointer p2 = new Pointer(MemoryBlockFactory.createMemoryBlock(100));
p.setStringAt(0,"宋体");
//p1.setStringAt(0,pTitle);
p2.setStringAt(0,"SendDataTitle1");
//设置参数===================

//区域序号
v.setParameter(i++,nAreaOrdID);
//字幕区域的横坐标
v.setParameter(i++,x);
//字幕区域的纵坐标
v.setParameter(i++,y);
//字幕区域的长度
v.setParameter(i++,64);
//字幕区域的高度
v.setParameter(i++,hight);
//显示屏类型
v.setParameter(i++,2);
//点阵类型
v.setParameter(i++,1);
//字幕区域显示字体
v.setParameter(i++,p);
//字幕区域显示字号
v.setParameter(i++,big);
//字幕区域显示颜色; 1:红色;2:绿色;3:黄色
v.setParameter(i++,1);
//粗体;1:粗体;0正常
v.setParameter(i++,0);
//斜体;1:斜体;0正常
v.setParameter(i++,0);
//下划线;1:下划线;0正常
v.setParameter(i++,0);
//字幕区域显示的字幕滚动信息
v.setParameter(i++,pTitle);
//字幕区域显示特技;具体特技特征字见注1;
v.setParameter(i++,nStunt);
//字幕区域信息运行速度
v.setParameter(i++,nRunSpeed);
//字幕区域信息停留时间
v.setParameter(i++,nShowTime);
//字幕区域信息保存的文件名;
v.setParameter(i++,p2);


//设置返回值类型
//v.setRetVal(Type.INT);
v.invoke();



}catch(Exception e){
e.printStackTrace();
}
}

//设置亮度
static void setLight(int a){
        //设置亮度 SetScreenLight(1--15) ScreenLight1
SetScreenLight(a);
int ret=SendDataToComm("ScreenLight1",0xc8); 
if(ret==1) System.out.println("亮度设置发送成功");
else System.out.println("亮度设置发送失败");
}

//强制开关机
static void setState(int a){
//强制开关机 SetScreenState(1表示开机  0表示关闭); ScreenStateData1
SetScreenState(a);
int opendown=SendDataToComm("ScreenStateData1",0xC4); 
if(opendown==1) System.out.println("开关机发送成功");
else System.out.println("开关机发送失败");

}

//设置屏参
static void setParameter() throws NativeException, IllegalAccessException{
//设置显示屏参数 SetScreenParameter(); ParametetData1
SetScreenParameter();
int par=SendDataToComm("ParametetData1",0xC1); 
if(par==1) System.out.println("显示屏参数发送成功");
else System.out.println("显示屏参数发送失败");

}
// UnionAreaDataToFile 1:区域文件;0:非区域文件; 区域序号;从1开始;
//0:在原文件下添加合并信息文件;1:删除原文件信息,重新创建合并信息文件
//发送字幕 message1显示上面  message2显示下面
public static void SendMessage(String message1,String message2){
GetAllDataHead();
UnionAreaDataToFile(0,0,"SendAllDataHead1",1);
//16是字幕显示高度 12是字体大小
SetScreenTitle(1,0,0,16,12,message1,1,1,2);
UnionAreaDataToFile(1,1,"SendDataTitle1",0);

SetScreenTitle(2,0,16,16,12,message2,1,1,2);
UnionAreaDataToFile(1,2,"SendDataTitle1",0);
//设置字幕 SetScreenTitle(); SendDataTitle1
//SetScreenTitle();
int title=SendDataToComm("SendAllData1",0xD1); 
if(title==1) System.out.println("向显示屏发送数据成功");
else System.out.println("向显示屏发送数据失败");
}

// 发送字幕 message1显示上面 全屏显示
public static void SendOne(String message1){
GetAllDataHead();
UnionAreaDataToFile(0,0,"SendAllDataHead1",1);

SetScreenTitle(1,0,0,32,24,message1,1,1,2);
UnionAreaDataToFile(1,1,"SendDataTitle1",0);


//设置字幕 SetScreenTitle(); SendDataTitle1
//SetScreenTitle();
int title=SendDataToComm("SendAllData1",0xD1); 
if(title==1) System.out.println("向显示屏发送数据成功");
else System.out.println("向显示屏发送数据失败");
}

public static void main(String[] args) {

try{
//1~15  亮度增加
//setLight(1);
//0关机 1 开机
//setState(1);
//设置屏参
//setParameter();

SendMessage("浙A-T56865","杭州威玛计算机系统有限公司");
//SendOne("中国你好");
}catch(Exception ne){
System.err.println("listAllDevice NativeException!");
//releaseCard();
ne.printStackTrace();
}

}

}
  • LED.rar (530.5 KB)
  • 下载次数: 135
1
0
分享到:
评论
4 楼 hujin19861102 2014-03-10  
,做目视化看板!学习下先
3 楼 zjutsoft 2009-11-04  
可以啊! 各个LED的厂商对应的链接库可能会不一样。
2 楼 hxl1013 2009-11-02  
我的QQ是495854943~谢谢了
1 楼 hxl1013 2009-11-02  
你好,最近在做一个项目,类似于银行的叫号系统,对于将Java程序查处的数据显示到LED屏幕上不是很清楚,看了您的文章,希望和您探讨一下~不知道可以不?

相关推荐

    立象条码打印最新dll动态链接库4.04

    立象条码打印最新dll动态链接库4.04是一款专为条码打印设计的软件组件,它在IT行业中扮演着重要角色,特别是在自动化生产和物流管理领域。DLL(Dynamic Link Library)是Windows操作系统中的一种共享库,它封装了一...

    dll动态链接库和c++依赖库缺失修复工具

    动态链接库(DLL)是Windows操作系统中的一个重要组成部分,它是一种可执行文件,包含了程序运行时所需的函数和数据。DLL文件允许多个程序共享同一份代码和资源,从而节省内存并简化软件维护。当系统提示“dll动态...

    Java调用动态链接库(Java 调用 DLL)

    Java调用动态链接库(DLL)是Java编程中一个比较特殊的技术,主要涉及到Java与本地代码的交互。在Windows系统中,DLL(Dynamic Link Library)是实现函数复用的一种方式,它包含了一系列可供其他程序调用的函数或数据...

    java调用C++动态链接库dll接口

    本项目涉及的"java调用C++动态链接库dll接口"是解决这种跨语言交互问题的一种方法,主要利用了Java Native Interface(JNA)这一技术。 JNA是Java平台的标准库,它允许Java代码直接调用本机库(如DLL或.so文件)的...

    JNI--java调用不同平台的动态链接库,dll,so,完美,全教程

    因此,很少有 Java 程序员愿意编写调用 dll/.so 库中的原生函数的 java 程序。这也使 Java 语言在客户端上乏善可陈。可以说 JNI 是 Java 的一大弱点!现在,不需要再羡慕 .NET 的 P/Invoke 机制了。 JNA 把对 dll/....

    Java通过JNI调用DLL动态库

    Java通过JNI调用DLL动态库,亲测试编写

    java程序中加载动态链接库文件

    这时,就需要借助于Java Native Interface (JNI) 来调用C/C++编写的动态链接库(DLL或SO文件),从而实现对底层硬件的访问或其他特定需求。 #### 二、Java Native Interface (JNI) Java Native Interface 是Java平台...

    qt5_dll动态链接库合集

    动态链接库(DLL)是Windows操作系统中的一个重要概念,它将共享代码和资源存储在单独的文件中,多个程序可以同时调用这些共享资源,以减少内存占用和提高系统效率。 "qt5_dll"标签明确指出这个压缩包包含的是与Qt5...

    C#版 OPC dll动态链接库全套合集.zip

    资源名:C#版 OPC dll动态链接库全套合集.zip 资源类型:程序源代码 源码说明: 这是基于C#版的 OPC dll动态链接库全套合集 可直接在工程程序中引用来使用 非常方便 适合人群:新手及有一定经验的开发人员

    msxml4.dll mssoap30.dll 动态链接库

    msxml4.dll mssoap30.dll 动态链接库 短信 网关所需要的dll安装文件。

    DLL动态链接库

    MFC71动态链接库,为缺少改动态链接库的程序 注册既可用

    java连接调用dll动态库

    Java连接调用DLL动态库是将Java编程语言与Windows平台上的动态链接库(DLL)集成的一种技术。在Java中,这种功能通常是通过JNI(Java Native Interface)实现的,它允许Java代码调用C、C++等本地代码,而DLL正是这些...

    LabVIEW调用动态链接库DLL详细介绍(包会) .txt

    ### LabVIEW调用动态链接库DLL详解 #### 一、前言 在现代软件开发过程中,经常需要将一些复杂的功能封装成独立的模块或者库,以便于复用和维护。对于LabVIEW这样的图形化编程环境而言,能够有效地调用外部的动态...

    将现有的C++类转换成dll动态链接库

    ### 将现有的C++类转换成DLL动态链接库 #### 一、DLL的类型与选择 在考虑将现有的C++类转换成DLL时,首先需要理解不同类型的DLL及其适用场景。 1. **Win32DLL** Win32DLL指的是不使用MFC类库创建的DLL。这类DLL...

    S7.Net动态链接库DLL.rar

    《S7.Net动态链接库DLL在西门子PLC通讯中的应用详解》 在工业自动化领域,西门子PLC(可编程逻辑控制器)因其稳定性和灵活性被广泛应用。本文将详细探讨与标题“S7.Net动态链接库DLL.rar”相关的知识点,主要关注S7...

    DLL动态链接库嵌入exe可执行文件

    标题“DLL动态链接库嵌入exe可执行文件”所涉及的知识点主要集中在动态链接库(DLL)与可执行文件(EXE)之间的嵌入技术。动态链接库是一种实现共享函数库的方式,它允许程序中只存放必要的代码部分,在运行时才被加载,...

    libeay32.dll 、 ssleay32.dll动态链接库

    在Windows操作系统中,`libeay32.dll` 和 `ssleay32.dll` 是两个非常重要的动态链接库文件,它们是OpenSSL库的一部分。OpenSSL是一个强大的安全套接层(SSL)和传输层安全(TLS)协议实现,同时也包含了一些用于加密...

    modbus TCP dll 动态链接库 源码

    Modbus TCP DLL(动态链接库)源码是一个用于开发与Modbus TCP协议交互的应用程序的重要资源。Modbus是一种广泛使用的工业通信协议,特别是在自动化设备和系统之间交换数据时。了解和利用这个源码能帮助开发者深入...

    visual c++检测DLL动态链接库的版本号

    vc检测DLL的版本号

Global site tag (gtag.js) - Google Analytics