并行端口访问 [英] Parallel Port Access

查看:75
本文介绍了并行端口访问的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试让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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆