1、java调用ocx,使用到jacob技术,具体部署环境可以去网上搜索一下。
2、例如有个ocx控件名为Gtwebdll.dll
Gtwebdll.dll 控件说明
属性:
iComPort=1; //设置PC串口端口号码, 如COM1 用 1 表示.
iBaudRate=9600; //设置串口波特率.
iBpPort=1; //设置串口扩展盒端口.1表示A口,2表示B口,3表示C口,4表示K口.
方法函数:
SelBpPort(); //设置串口扩展盒端口函数.
3、Java demo
import com.jacob.com.Dispatch;
public class TestOcx {
@SuppressWarnings("static-access")
public int setBPBox(int comport, int baudrate, int bpport)
{
int recode = 0;
try {
//声明控件
Dispatch msgBox = new Dispatch("CLSID:00A5A260-956A-49E4-82FF-58CE009742C5");
Dispatch.put(msgBox, "iComPort", comport);
Dispatch.put(msgBox, "iBaudRate", baudrate);
Dispatch.put(msgBox, "iBpPort", bpport);
msgBox.call(msgBox, "SelBpPort");
} catch (Exception e) {
e.printStackTrace();
return -1;
}
return recode;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new TestOcx().setBPBox(3, 9600, 2);
}
}
这个demo向串口3发送BP盒转口指令,运行demo得到监听数据如下
1 [00000000] IRP_MJ_CREATE Port Opened - javaw.exe
2 [00000000] IOCTL_SERIAL_SET_BAUD_RATE Baud Rate: 9600
3 [00000000] IOCTL_SERIAL_SET_LINE_CONTROL StopBits: 1, Parity: No, DataBits: 8
4 [00000000] IRP_MJ_WRITE Length: 0003, Data: 1B 25 42
5 [00000012] IRP_MJ_CLOSE Port Closed
4、实际应用中OCX的属性,方法函数,事件状态,如何用jacob技术操作,可以去查找相关技术文档。