DLL是硬件接口(在本地可调用),已封装打开串口以及操作硬件的程序,将DLL放在服务器上,现在想从服务器调到客户端来操作硬件,也就是远程可调用打开串口等操作,有什么办法可行?
DLL里的串口函数:
function Java_com_gsxunjiansys_CommDLL_BeanDLL_termcommopen(PEnv: PJNIEnv;
  Obj: JObject;PortI: JString):Jint;
Var
  JVM: TJNIEnv;
  Port:String;
Begin
  JVM := TJNIEnv.Create(PEnv); 
  Port:=JVM.UnicodeJStringToString(PortI);
  JVM.Free;  if Term_CommOpen(pchar(Port)) then
  Begin
    //Application.MessageBox(pchar(Port), '提示', MB_IconInformation);
    result:=1;
  End;End;

解决方案 »

  1.   

    1.建立java主程序,例如System.loadLibrary("jwtain");
    2.用javah生成和主程序对应的头文件
    3.修改java的本地安全策略,使得有权限访问本地的动态链接库
      

  2.   

    我一直以为用RMI远程调用方法,可以行得通,但都没有成功。
    目前采用OCX方式。
    希望提供比较好的方法。
      

  3.   

    RTSTest.java
    public class RTSTest {    static {
            System.loadLibrary("dll");
        }    public native void setRTS(boolean value);    public native boolean getRTS();    /**
         * @param args
         */
        public static void main(String[] args) {
            RTSTest rtsObj = new RTSTest();
            System.out.println("In Java program set RTS = true");
            rtsObj.setRTS(true);
            System.out.println("return RTS's value changed in C++\nRTS.value = "
                    + rtsObj.getRTS());
        }
    }
    RTSTest.h
    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class RTSTest */#ifndef _Included_RTSTest
    #define _Included_RTSTest
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     RTSTest
     * Method:    setRTS
     * Signature: (Z)V
     */
    JNIEXPORT void JNICALL Java_RTSTest_setRTS
      (JNIEnv *, jobject, jboolean);/*
     * Class:     RTSTest
     * Method:    getRTS
     * Signature: ()Z
     */
    JNIEXPORT jboolean JNICALL Java_RTSTest_getRTS
      (JNIEnv *, jobject);#ifdef __cplusplus
    }
    #endif
    #endif
    java中输出的结果:
    In Java program set RTS = true
    return RTS's value changed in C++
    RTS.value = true
      

  4.   

    下面有介绍,还有需要的动态库及类库下载
    http://www.programmerstudy.com/programme/java/20084/97.html