- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过包 jnpout32reg ( http://www.hytherion.com/beattidp/comput/pport.htm ) 与并行端口通信,它是 inpout32 ( http://www.highrez.co.uk/downloads/inpout32/ ) 的 Java 实现。我已经使用并行端口测试仪 (download.cnet.com/Parallel-Port-Tester/3000-2086_4-75940249.html) 测试了 inpout32,它似乎运行良好。但是,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 有什么区别?
最佳答案
在 Alexander Heimel (http://csflab.nin.knaw.nl/protocols/parallel-port-in-matlab) 和 Douglas Beattie (http://www.hytherion.com/beattidp/comput/pport.htm) 的大力帮助下,我终于找到了解决方法。
Python对inpout32(或者inpoutx64,取决于你使用的版本)没有问题,所以我写了下面的脚本。
# import windll, to be able to load the inpoutx64.dll/inpout32.dll file
from ctypes import windll
import sys
from time import sleep
## If no input is given, write '1' to parallel port
address = int(888) # 0x378 in hex
num = 1
## if two inputs are given
if len(sys.argv) > 2:
# cast string arguments to:
address = int(sys.argv[1],16) # hexadecimal integer
num = int(sys.argv[2]) # decimal integer
# load dll.
# Select either inpout32.dll or inpoutx64.dll, depending on which
# Python version you use. If you get the error:
# WindowsError: [Error 193] %1 is not a valid Win32 application
# You have used the wrong one.
p = windll.LoadLibrary("C:\\Python27\\DLLs\\inpout32.dll")
# write data
p.Out32(address,num)
如果您只想发送一个脉冲(即之后立即将其设置回 0),请使用 sleep(0.002)
,然后是 p.Out32(address,0)
。接下来,您通过 Java 执行此脚本,这是通过以下代码完成的:
String cmd = "python C:\\Path\\To\\Code\\WriteParPort.py "+ address +" " + num;
Process p = Runtime.getRuntime().exec(cmd);
其中address为并口地址(0x378),num为待写入值。
关于java - 与 jnpout32pkg/jnpout32reg 的并口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36456252/
这个问题已经有答案了: What is the best way to set a register to zero in x86 assembly: xor, mov or and? (1 个回答)
中有3个事件fns重装 ,我可以对两者做同样的事情 reg-event-db和 reg-event-fx . reg-event-db之间的主要区别是什么, reg-event-fx和 reg-eve
我将 Verilog 与 modelSim 一起使用,当我尝试将 reg 变量分配给另一个 reg 变量的不同部分时出现以下错误: ** Error: Range width must be grea
我在Oracle Forms中要求编写一个PLSQL块,该块将通过包含逗号分隔记录的游标从数据库中读取数据。我已经完成了逻辑,但想检查一下我开发的这个逻辑是否可以以任何方式改进。。因此,我使用subs
使用以下代码是否存在执行速度差异: cmp al, 0 je done 以及以下内容: or al, al jz done 我知道JE和JZ指令是相同的,并且使用OR可以使字节大小提高1个字节。但是,
我正在维护和扩展诊断测试套件的功能,这段代码多次出现,但我不确定它的作用: int ret = 0, i, *reg; int size = sizeof(Regs)/sizof(Reg); for(
在一般情况下,可以使用内存或寄存器操作数的指令如何使用内存操作数变慢然后 mov + mov -> 指令 -> mov + mov 基于在 Agner Fog's instruction tables
假设module_a里面有register_a,它需要链接到module_b。 register_a 是否应该单独声明并分配给 module_a 的输出: reg register_a; assign
这是 ls -R 命令的输出: .: compare.sh searchByFile.sh startup.sh temp.txt test.sh compare.sh~ search
众所周知,WaveFront (AMD OpenCL) 与 WARP (CUDA) 非常相似:http://research.cs.wisc.edu/multifacet/papers/isca14-
我想将一张图片与其他图片列表一张一张地进行比较,然后我想知道哪张图片的相似度更高。 我试图用 Python OPENCV facerec_demo.py 做同样的事情,但它给出了错误: Attribu
打开光驱硬盘的自动运行特性 REG 复制代码 代码如下: Windows Registry Editor Version 5.00</p>
代码如下: Windows Registry Editor Version 5.00</p> <p>[HKEY_CURRENT_USER\Software\Microso
代码如下: Windows Registry Editor Version 5.00</p> <p>[HKEY_LOCAL_MACHINE\SYSTEM\ControlS
代码如下: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\exefile] @="应用程序&q
我知道在 REG 文件的行首放一个分号表示它已被注释。我想知道是否可以在一行(一行的右侧)后添加注释? 最佳答案 在同一行的注释前加上分号就足够了。换句话说,reg 文件在带有注册表项的一行以及整行注
我在 Verilog 中有这个架构/拓扑: 如何访问内部注册 IntReg ,这不是 IntModule 中的输入/输出,在 SystemVerilog 中? always @(posedge clk
我正在尝试使用字节流读取包含普通文本数据的文件。而且我知道在字节流中,每个字节都将被一个一个地读取。因此,如果我通过字节流读取文本文件中的数据 Hi How are you!!!!! 那么它应该给我每
我有一个运行 IIS/Asp.net 的网站的登录表单,在预订期间因为非常缓慢。 在登录页面我正在做的: $("#submit1").trigger('click') //this will logi
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: non-static variable cannot be referenced from a static
我是一名优秀的程序员,十分优秀!