天才教育网合作机构>

全国千锋IT培训

欢迎您!
朋友圈

400-850-8622

全国统一学习专线 9:00-21:00

位置:学校资讯 > rf手持能用java开发吗,java如何调用C#封装好的DLL文件中的rf_init打开串口方法?

rf手持能用java开发吗,java如何调用C#封装好的DLL文件中的rf_init打开串口方法?

日期:2021-11-01 13:06:30     浏览:278    来源:全国千锋IT培训
核心提示:rf手持能用java开发吗,搞 Java 最重要的是什么?毫不夸张地说,掌握和了解java如何调用C#封装好的DLL文件中的rf_init打开串口方法???,基本就能走遍天下都不怕了!1.java如何调用C#封装好的DLL文件中的rf_init打开串

rf手持能用java开发吗,搞 Java 最重要的是什么?毫不夸张地说,掌握和了解java如何调用C#封装好的DLL文件中的rf_init打开串口方法???,基本就能走遍天下都不怕了!

1.java如何调用C#封装好的DLL文件中的rf_init打开串口方法?

在使用外部的非.NET托管的DLL的时候,通常你要知道这个dll中公开了那些接口(一般情况下只有公开的方法有用)。例如:在一个用C语言编写的用来读取串口上IC卡读卡器的dll中公开了如下的方法。int auto_init(int port,ulong baud);这个方法是用来自动初始话读卡器的。我们在C#中就要通过dllImport的方式来使用这个接口。首先程序集要引用using System.Runtime.命名空间。然后在我们的程序中声明要引用的这个方法。[DllImport("Mwic_32.dll")]public static unsafe extern int ic_init(int port,ulong baud);特殊属性DllImport的构造函数中输入的是所引用的dll的中文名称或者全名称,如果输入的只是文件名那么系统会在运行目录下寻找文件名为指定名称的程序集。注意声明的引用必须是static unsafe extern 类型的。其他的形式就跟dll中定义的一样。这样声明之后,我们就可以在自己的代码里面就像调用方法一样的使用这个方法了。在使用的时候,因为我们调用的是一段非托管代码,因此就必须在非托管方法中使用,声明非托管方法的形式如下。///

/// 初始化RD系列通用读卡器的方法。(本方法调用非托管代码)/// public unsafe void (){this.opened=true;this.st=this.icdev=ic_init(this.port,9600); if(this.st<0) { this.error(this.st); this.opened=false; return; } this.st=this.getState(this.icdev); if(st<0) { this.error(this.st); this.opened=false; return; } //System.Windows.Forms..Show(this.()); this.deep(10); }注意在声明非托管方法的时候方法前面必须添加unsafe字段已标明这个方法是非托管的。在这个方法内部所使用的数据类型可以使用C#的类型也能够使用C或者C++的数据类型。如果你只是做一般性的调用的话,上面的方法就足够用了。在使用的时候,托管的代码可以任意调用这些非托管的方法。需要注意的就是在调用非托管代码时*做好异常检测。另外一个常见的问题就是通常非托管中使用的值类型与托管中的不同,而且经常非托管中的方法的参数使用的都是指针,这时就要注意怎样将托管类型转换为指针。例如在上面这个读卡dll中有一个int get_status(int icdev,int* state)方法,在这个方法中有一个参数时一个指针。声明这个方法的方式是:[DllImport("Mwic_32.dll")]public static unsafe extern int get_status(int icdev,int* state);在使用这个方法的适合,就可能会出现歧异因为在C#中没有int*类型,因此我们就要利用C#的表现形式来为这个方法输入参数,方法如下:/// /// 检查读卡器的插卡状态 /// /// /// public unsafe int getState(int icdev) { int i=2; int st=RD.get_status(this.icdev,&i); this.status=i; return i; }上面的使用方法只是一个简单的调用,更加深入的使用还会复杂,在这里没法一下子说清楚。你可以参照MSDN上的一些相关的帮助进一步深入学习。我的这个使用方法只是我自己摸索出来的,如果有错误的地方请高手指正,谢谢!

虽说掌握和了解了java如何调用C#封装好的DLL文件中的rf_init打开串口方法???,能走遍天下,但也要不断去学习新的知识,更多的Java知识,请联系客服获取。

本文由 全国千锋IT培训 整理发布。更多培训课程,学习资讯,课程优惠,课程开班,学校地址等学校信息,可以留下你的联系方式,让课程老师跟你详细解答:
咨询电话:400-850-8622