的C库函数,利用这些库函数可以开发出高效的应用程序,驱动步进电机完成各种操作。因此把这些程序集成为Java本地方法体,成为用Java语言实现远程控制的关键技术。其
程序段如下:
int pcl839dirve()
{ …………………………
int i ;
clrscr();
set_base(0x2c0); /* 设置pcl839的基地址*/
set_mode(CH1,DIR); /* 设置pcl839通道1 "Direction" mode */
set_mode(CH2,DIR); /* 设置pcl839通道2 "Direction" mode */
set_mode(CH3,PUS); /* 设置pcl839通道3"Pulse" mode */
set_speed(CH123,600,3000,600); /* 设置pcl839通道速度 */
pmove(CH123 , P_DIR,FH,4000 , N_DIR,FH,2000 , P_DIR,FH,4000);
waitrdy(CH123); /* 等待所有通道就绪*/
cmove(CH123 , N_DIR,FH , N_DIR,FH , N_DIR,FH);
………………………/*进行具体的现场操作,以下的程序语句仅作为演示*/
printf("按任何键降速");
getch();
printf("\n");
slowdown(CH123); /* 把通道1,2,3降速到低速状态*/
for(i=2999;i>-1;i--)
{ cprintf("%d \r",i);
delay(1);
}
stop(CH123); /* 通道停止运行*/
return(0);
}
对于工控机,Java程序的编写必须集成本地方法。对于本地方法的集成采取以下步骤:首先在一个Java程序中定义一个本地的方法,编译该Java代码;然后当用JDK环境下的JavaH命令创建一个C语言的头文件时,必须注意其中的类结构和函数定义,接着创建一个Stub文件,Stub文件中包含与其C结构紧密联系在一起的C代码;Stub文件建立以后,编写相应的C代码,在原有的C代码前面必须加上《stubpreamble.h》和《drive.h》两个头文件;最后再由
VC++等集成开发环境将C语言程序编译成DLL程序,这样就实现了本地方法的集成。对于工控机的本地程序按以上步骤完成以后,工控机的主程序编制如下:
public class main
{public static void main(String args)
{ .
/*负责与远程控制主机通信部分的程序段
new drive().pcl839drive();
.
}}
public class dirve
{public native void pcl839drive();
static{
System.loadLibrary("drive");
} }
该段程序由主类和本地方法类组成,主类除完成通信部分的程序外,还必须实例化本地方法类,并且调用本地方法;本地方法类在定义本地方法时,必须加上关键词native,并且程序段中有一段静态代码,该静态代码通过系统函数为本地方法类加载drive库。
通过采用Java语言编程技术,就可以实现本地方法的集成和网络的通信,有效地把控制主机和远程主机通过网络连接起来,以实现远程控制。该套方案是在已有本地局域网络的基础上建成的,充分利用了Java网络编程和集成本地方法的技术,具有经济实惠和高效的特点。由于Java的平台无关性,使得Java在与本地方法的集成中隐藏了大量的技术细节。因而进一步对Java的关键技术开展研究,充分和高效地利用这一富有特色的语言,实现对底层智能节点的控制,达到网络监控的目的,无疑是一个非常有意义的课题。