并行端口访问 [英] Parallel Port Access
问题描述
我正在尝试让Java程序访问并行端口。 Java的通讯
API不能为我提供我需要的控件。我需要能够写入数据和控制引脚并读取状态引脚。任何Java
的人都知道一个很好的解决方案吗?我正在尝试使用JNI并创建我自己的
库,但是构建库会给我带来这些错误:
ld:警告:找不到条目符号_start;默认为
0000000008048094
ParallelPort.o:函数`Java_ParallelPort_setAddress'':
ParallelPort.cpp :(。text + 0x96):undefined引用'ioperm''
ParallelPort.cpp :(。text + 0xaa):未定义引用`ioperm''
任何人都可以帮助我吗?来源如下。
ParallelPort.java
----------
公共类ParallelPort {
static {
System.loadLibrary(" ParallelPort");
}
public ParallelPort( ){$ /
setAddress(0x378); //默认为lp0
}
public ParallelPort(int addr){
setAddress(addr);
}
public native void setAddress(int addr);
public native int getAddress();
public native void sendData(int data);
public native int readStatus();
public native void sendControl(int control);
}
==========
ParallelPort .cpp
----------
#include" ParallelPort.h"
#include< jni。 h>
#include< stdio.h>
#define extern static
#define REALLY_SLOW_IO
#include< asm / io.h> //端口I / O
#undef extern
#include< sys / io.h> //对于ioperm
jint DATA;
jint状态;
jint CONTROL;
JNIEXPORT void JNICALL Java_ParallelPort_setAddress(JNIEnv * env,
jobject obj,
jint addr){
DATA = addr;
状态=地址+ 1;
CONTROL =地址+2;
ioperm(DATA,3,1);
ioperm(0x80,1,1);
}
JNIEXPORT jint JNICALL Java_ParallelPort_getAddress(JNIEnv * env,
jobject obj){
返回DATA;
}
JNIEXPORT void JNICALL Java_ParallelPort_sendData(JNIEnv * env,jobject
obj,
jint数据){
outb(数据,数据);
}
>
JNIEXPORT jint JNICALL Java_ParallelPort_readStatus(JNIEnv * env,
jobject obj){
return inb(STATUS);
}
JNIEXPORT void JNICALL Java_ParallelPort_sendControl(JNIEnv * env,
jobject obj,
jint control){
outb(控制,CONTROL);
}
==========
ParallelPort.h(用javah自动生成)
----------
/ *不要编辑这个文件 - 它是机器生成* /
#include< jni.h>
/ *类ParallelPort的标题* /
#ifndef _Included_ParallelPort
#define _Included_ParallelPort
#ifdef __cplusplus
extern" C" {
#endif
/ *
*类:ParallelPort
*方法:setAddress
*签名:(I)V
* /
JNIEXPORT void JNICALL Java_ParallelPort_setAddress
(JNIEnv *,jobject,jint);
/ *
*类:ParallelPort
*方法:getAddress
*签名:()我是
* /
JNIEXPORT jint JNICALL Java_ParallelPort_getAddress
(JNIEnv *,jobject);
/ *
*类:ParallelPort
*方法:sendData
*签名:(I)V
* /
JNIEXPORT void JNICALL Java_ParallelPort_sendData
(JNIEnv *,jobject,jint);
/ *
*类别:ParallelPort
*方法:readStatus
*签名:()我
* /
JNIEXPORT jint JNICALL Java_ParallelPort_readStatus
(JNIEnv *,jobject);
/ *
*类:ParallelPort
*方法:sendControl
*签名:(I)V
* /
JNIEXPORT void JNICALL Java_ParallelPort_sendControl
(JNIEnv *,jobject,jint);
#ifdef __cplusplus
}
#endif
#endif
2006年2月10日星期五19:44:54 -0800,大卫.brown.0写道:
我正在尝试让Java程序访问并行端口。
rxtx包具有并行端口访问权限,以及其他。
www.rxtx。组织
< da *********** @ gmail.com>在消息中写道
news:11 ********************* @ z14g2000cwz.googlegro ups.com ...我正在尝试让Java程序访问并行端口。 Java的comm
API并没有为我提供我需要的控件。我需要能够写入数据和控制引脚并读取状态引脚。任何Java人都知道一个好的解决方案吗?我正在尝试使用JNI并创建自己的库,但构建库会给我带来以下错误:
< java error and code snipped>
嗯...为什么你要问一个Java问题交叉发布到
clc ++?
< blockquote> 2006年2月10日19:44:54 -0800, da ********** *@gmail.com 写道,引用
或间接引用某人说:
我需要能够写的
到数据和控制引脚并读取状态引脚。任何Java人都知道一个很好的解决方案吗?
有一些第三方库。请参阅
http://mindprod.com/jgloss/serialport.html
-
Canadian Mind Products,Roedy Green。
http://mindprod.com Java自定义编程,咨询和指导。
I''m trying to make a Java program access a parallel port. Java''s comm
API does not provide me with the control I need. I need to be able to
write to the data and control pins and read the status pins. Any Java
people know a good solution? I''m trying to use JNI and create my own
library, but building the library gives me these errors:
ld: warning: cannot find entry symbol _start; defaulting to
0000000008048094
ParallelPort.o: In function `Java_ParallelPort_setAddress'':
ParallelPort.cpp:(.text+0x96): undefined reference to `ioperm''
ParallelPort.cpp:(.text+0xaa): undefined reference to `ioperm''
Can anyone help me? Source follows.
ParallelPort.java
----------
public class ParallelPort {
static {
System.loadLibrary("ParallelPort");
}
public ParallelPort() {
setAddress(0x378); // default to lp0
}
public ParallelPort(int addr) {
setAddress(addr);
}
public native void setAddress(int addr);
public native int getAddress();
public native void sendData(int data);
public native int readStatus();
public native void sendControl(int control);
}
==========
ParallelPort.cpp
----------
#include "ParallelPort.h"
#include <jni.h>
#include <stdio.h>
#define extern static
#define REALLY_SLOW_IO
#include <asm/io.h> // port I/O
#undef extern
#include <sys/io.h> // for ioperm
jint DATA;
jint STATUS;
jint CONTROL;
JNIEXPORT void JNICALL Java_ParallelPort_setAddress(JNIEnv *env,
jobject obj,
jint addr) {
DATA = addr;
STATUS = addr + 1;
CONTROL = addr +2;
ioperm(DATA, 3, 1);
ioperm(0x80, 1, 1);
}
JNIEXPORT jint JNICALL Java_ParallelPort_getAddress(JNIEnv *env,
jobject obj) {
return DATA;
}
JNIEXPORT void JNICALL Java_ParallelPort_sendData(JNIEnv *env, jobject
obj,
jint data) {
outb(data, DATA);
}
JNIEXPORT jint JNICALL Java_ParallelPort_readStatus(JNIEnv *env,
jobject obj) {
return inb(STATUS);
}
JNIEXPORT void JNICALL Java_ParallelPort_sendControl(JNIEnv *env,
jobject obj,
jint control) {
outb(control, CONTROL);
}
==========
ParallelPort.h (Auto-generated with javah)
----------
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class ParallelPort */
#ifndef _Included_ParallelPort
#define _Included_ParallelPort
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: ParallelPort
* Method: setAddress
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_ParallelPort_setAddress
(JNIEnv *, jobject, jint);
/*
* Class: ParallelPort
* Method: getAddress
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_ParallelPort_getAddress
(JNIEnv *, jobject);
/*
* Class: ParallelPort
* Method: sendData
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_ParallelPort_sendData
(JNIEnv *, jobject, jint);
/*
* Class: ParallelPort
* Method: readStatus
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_ParallelPort_readStatus
(JNIEnv *, jobject);
/*
* Class: ParallelPort
* Method: sendControl
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_ParallelPort_sendControl
(JNIEnv *, jobject, jint);
#ifdef __cplusplus
}
#endif
#endif
On Fri, 10 Feb 2006 19:44:54 -0800, david.brown.0 wrote:
I''m trying to make a Java program access a parallel port.
The rxtx package has parallel port access, as well as others.
www.rxtx.org
<da***********@gmail.com> wrote in message
news:11*********************@z14g2000cwz.googlegro ups.com...I''m trying to make a Java program access a parallel port. Java''s comm
API does not provide me with the control I need. I need to be able to
write to the data and control pins and read the status pins. Any Java
people know a good solution? I''m trying to use JNI and create my own
library, but building the library gives me these errors:
<java error and code snipped>
Umm... why the heck are you asking about a Java issue cross posted to
c.l.c++ ?
On 10 Feb 2006 19:44:54 -0800, da***********@gmail.com wrote, quoted
or indirectly quoted someone who said :
I need to be able to
write to the data and control pins and read the status pins. Any Java
people know a good solution?
there are some third party libraries . See
http://mindprod.com/jgloss/serialport.html
--
Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.
这篇关于并行端口访问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!