与jnpout32pkg/jnpout32reg的java并行端口通信
我试图通过包jnpout32reg(http://www.hytherion.com/beattidp/comput/pport.htm)与并行端口通信,这是Input32(http://www.highrez.co.uk/downloads/inpout32/)的Java实现。我用并行端口测试仪(download.cnet.com/Parallel Port Tester/3000-2086_4-75940249.html)测试了Input32,它似乎工作得很好。然而,java实现似乎不起作用
package ioTest_reg;
import hardware.jnpout32.*;
public class ioTestReg
{
static short datum;
static short Addr;
static pPort lpt;
static void write()
{
datum = 0x001;
// Notify the console
System.out.println("Write to Port: " + Integer.toHexString(Addr) +
" with data = " + Integer.toHexString(datum));
//Write to the port
long start = System.currentTimeMillis();
long stop = System.currentTimeMillis();
while (stop-start < 10000){
lpt.output((short)0x001);
stop = System.currentTimeMillis();
}
System.out.println("Finished");
}
static void do_read_range()
{
// Try to read 0x378..0x37F, LPT1:
for (Addr=0x378; (Addr<0x380); Addr++) {
//Read from the port
datum = (short) lpt.input(Addr);
// Notify the console
System.out.println("Port: " + Integer.toHexString(Addr) +
" = " + Integer.toHexString(datum));
}
}
public static void main( String args[] )
{
lpt = new pPort();
Addr=0x378;
datum=0x01;
write();
// Try to read 0x378..0x37F, LPT1:
do_read_range();
}
}
与端口的连接已建立,我可以从端口读取数据(端口378返回78、379返回79等)。然而,我不能写输出。没有给出错误,但在接收端没有发生任何事情(与并行端口测试仪相反)
当我改用jnpout32pkg(jnpout32reg的另一个版本)时,我得到了以下错误(尽管我安装的所有东西都类似):
Exception in thread "main" java.lang.UnsatisfiedLinkError: ioTest_pkg.jnpout32.ioPort.Out32(SS)V
我做错了什么?pkg和reg之间有什么区别
# 1 楼答案
在亚历山大·海梅尔(Alexander Heimel)和道格拉斯·贝蒂(Douglas Beattie)的大力帮助下,我终于找到了解决办法
Python对Input32(或Inputx64,取决于您使用的版本)没有问题,因此我编写了以下脚本
如果只想发送脉冲(即之后立即将其设置回0),请使用
sleep(0.002)
,后跟p.Out32(address,0)
。接下来,您将通过Java执行此脚本,这是通过以下代码完成的:其中address是并行端口地址(0x378),num是要写入的值