Avatar billede elv Nybegynder
05. november 2001 - 10:59 Der er 28 kommentarer og
1 løsning

USB Port Programmering

Hello!

Er det muligt at kommunikere med USB-porte via java? Og i så fald hvordan?

Hvis ikke, hvad er så den bedste måde at skrive til / læse fra parallel-porte?

MVH Elv
Avatar billede james_t_dk Juniormester
05. november 2001 - 11:07 #1
Prøv at kikke her: http://www.beyondlogic.org/
Avatar billede james_t_dk Juniormester
05. november 2001 - 11:08 #2
Avatar billede jakoba Nybegynder
05. november 2001 - 11:11 #3
Java er designet til at kunne køre \'på alle maskiner\' så hvis dit program kræver at maskinen har en USB eller parallel port bryder du konceptet.

brug bufferedreader i java og lav så det maskinspecifikke i et andet sprog på den maskine så du får lavet en logisk enhed din bufferedreader kan koble sig på.

mvh JakobA
Avatar billede martin_schou Nybegynder
05. november 2001 - 11:25 #4
jakoba - i samme tråd kan man jo sige, at eftersom java er beregnet til at kunne køre på alle maskiner, så skal java ikke være istand til at skrive ud, da det kræver, at der er koblet en printer til maskinen.

Der er altså personer, som skriver i java, fordi det nu engang er det, de har lært, og derfor ikke gider spilde en mindre krig på at lære endnu et programmeringssprog, blot for at kunne bruge f.eks. et digitalkamera med USB-adgang.
Avatar billede disky Nybegynder
05. november 2001 - 11:27 #5
james_t_dk: hvis du skal blande dig i folks uddeling af point, synes jeg du skal fise et andet sted hen.

Der er et felt til fri indtastning, og derfor må man give hvad man har lyst !

p.s. dette spørgsmål er noget mere end svært ! Så kom ikke her.
Avatar billede martin_schou Nybegynder
05. november 2001 - 11:35 #6
Disky - du må jo indse, at når der er fire felter (indtast selv, 15, 30 og 60 points), så må man altså kun benytte de i forvejen angivne pointangivelser; man må ikke udlodde mere end 60 points for et svar, uanset hvor svært spørgsmålet så end måtte være. Det er da logik for perlehøns, og det er da også derfor, at Eksperten ikke har noget tjek for, om der udloddes mere end 60 points.

Eller noget i den stil - til pis, siger jeg bare.
Avatar billede jakoba Nybegynder
05. november 2001 - 11:37 #7
martin_schou >> er det ikke også netop sådan System.out er detfineret? et javamodul der så kobler sig på den virtuelle maskine for netop den computer.
Avatar billede martin_schou Nybegynder
05. november 2001 - 11:42 #8
Dunno ... er ikke helt sikker på, hvad du mener med dit spørgsmål; derudover er jeg langt fra sikker på, hvordan java arbejder uden for VM. Hvis disky kan tolke dit kryptiske spørgsmål, så er han sikkert bedre rustet til at svare på det.
Avatar billede disky Nybegynder
05. november 2001 - 11:59 #9
martin:

Hvor er det defineret at man ikke må give mere end 60 ??

Point antal skal gerne passe med opgavestillerens mening om sværhedsgraden.

Og folk der konstant blander sig er mere ødelæggende for dette site end noget som helst andet. Lad dog folk brug point til hvad de ønsker.


Elv:
Du kan ikke fra java snakke direkte med USB porten, du skal gøre det igennem JNI til f.eks. en DLL som så gør det for dig.
Men ligeså snart du gør det ryger platformsuafhængigheden sig en tur. Men hvis du kan leve med det, skal du i f.eks. C++ skrive en DLL som kan læse og skrive fra USB porten, og derefter kan du koble det in i en input/out stream som du så anvender fra Java.
Avatar billede martin_schou Nybegynder
05. november 2001 - 12:01 #10
Disky - en dag skal vi have en lang samtale om blomster og bier ... sludder - ironi :-)
Avatar billede disky Nybegynder
05. november 2001 - 12:02 #11
martin: ja det håber jeg da bestemt :)
Avatar billede elv Nybegynder
05. november 2001 - 13:15 #12
Wow, det er godt nok utroligt hvad der kan ske på et par timer herinde :)

Platformsuafhængigheden i dette spørgsmål er ligegyldigt da programmet skal køre på en windows 98 maskine. Til den skal der kunne tilkobles komponenter, der skal kunne styres af pc\'en, og jeg overvejer at bruge USB til denne kommunikation. Hvis jeg beslutter mig for at lave en dll (hvilket jeg vist også skal hvis det ender med parallelportsprogrammering, hvordan får jeg så fat i den fra en java application?

PS: Grunden til at jeg lagde 100 points ind er også fordi jeg faktisk stiller to spørgsmål i et... det ville derfor ikke være rimeligt at give 30 points, og derefter blive ved med at bede om flere detaljer... nu skal jeg f.eks. vide noget om dll\'er gennem java... men måske er jeg galt på den?
Avatar billede elv Nybegynder
05. november 2001 - 13:55 #14
ok, den kigger jeg lige på, der går nok en uge eller so.... det er et skoleprojekt :)

men jeg venter lige med at lukke spørgsmålet til jeg får det til at virke.... ok?
Avatar billede disky Nybegynder
05. november 2001 - 13:57 #15
Da er helt okay, eller til du opdager du ikke kan få det til at virke :)
Avatar billede james_t_dk Juniormester
05. november 2001 - 16:39 #16
Lige meget hvad i siger om point så blander jeg mig alligevel.

ELV>> Det er rigtigt når de siger at du bryder konceptet ved at skrive til porte der ikke er på alle maskiner, men det kan lade sig gøre.

Dette link er til API\'en der kan gøre det: http://jcp.org/jsr/detail/080.jsp
Avatar billede disky Nybegynder
05. november 2001 - 17:15 #17
james: Jeg kan ikke lige finde en .jar fil + en driver som gør at man kan bruge det. Ligesom til com api\'en har man jo en ocx driver.
Avatar billede james_t_dk Juniormester
05. november 2001 - 17:42 #18
disky>> Hvis ikke jeg sådan tager meget fejl så er driveren til USB faktisk udstyrs specifik. Det vil sige at for hvert webcam eller keyboard er der en driver, de fleste virker dog med standart windows driveren.
Desuden vil dem der kan læse kunne finde ud af at det er en request til en specifikation. Altså er der ikke noget lige nu, men det er på vej!

Som der står:
This specification provides a JavaTM API for communicating with devices that are attached via the USB (Universal Serial Bus). It will allow Java applications to communicate with and manipulate USB devices attached to the bus.

Og senere:
Status: Public Review  16 Sep, 2001

Og igen senere:
2.4 Why isn\'t this need met by existing specifications?
There is no cross-platform way to access the USB using the current Java libraries and standard APIs. This JSR is to establish a Java standard for this access. There is a project working on access on the Linux platform. (See Contributions.)

Men skulle jeg tage fejl så skyd mig da i hovedet. Får jeg svaret rigtigt gør som her: http://www.eksperten.dk/spm/129927
Avatar billede james_t_dk Juniormester
05. november 2001 - 17:49 #19
elv>> Her er noget om parallel porten i JAVA, så vidt jeg kan se burde du kunne skirve/læse på parallel porten, men det ser også ud til kun at være til en printer du kan skrive noget. Jeg vil gerne høre mere om det hvis du får hul igennem.

http://java.sun.com/products/javacomm/javadocs/javax.comm.ParallelPort.html#_top_

Skulle du kunne bruge mine svar, så tag nogle af pointsene til dig selv.
Avatar billede elv Nybegynder
05. november 2001 - 21:57 #20
james>> jeg kan ikke liiige se at det er noget der kan bruges her.... det er vist kun printer-pjat...
Avatar billede disky Nybegynder
05. november 2001 - 23:31 #21
james:

Ting som f.eks. smart card reader og diskonkey kan bruge samme driver.

Men ellers har du ret. Desværre er det ikke nemt med det USB halløj.
Avatar billede elv Nybegynder
06. december 2001 - 09:18 #22
Oooooooooooooooooooookay! Long time, no writing. Here we go again.....

Nu har jeg besluttet mig for at:
1) Køre gennem parallelport
2) Lave dll i c++

Begge dele er der ingen problemer i, men når jeg skal til at køre programmet med dll\'en i siger den:

java.lang.UnsatisfiedLinkError: no TestJNI.dll in shared library path
        at java/lang/Runtime.loadLibrary
        at java/lang/System.loadLibrary
        at TestJNI.<init>
        at TestJNI.main

FEJL: java.lang.UnsatisfiedLinkError: no TestJNI.dll in shared library path


Jeg kan selvfølgelig godt forstå at dette handler om at dll\'en skal ligge i en eller anden bestemt path (eller at en path-variabel skal pege på det dir, jeg bruger), MEN!  Jeg har prøvet at lægge den i samme bibliotek som class-filerne, i et biblioteket med classpath, i et bibliotek med path og nu er jeg løbet tør for ideer.

Kommandolinien hedder:
jview.exe /CP:P \"D:\\Java\\MyJava\\JNI Test (DLL)\" TestJNI
(Altså jview (der ligger i c:\\windows) og CP:P = classpath til ekstre bibliotek. Any suggestions? Det burde nemlig være det sidste problem.....

Elv
Avatar billede disky Nybegynder
06. december 2001 - 09:20 #23
eeewwww

Hent omgående JDK fra www.javasoft.com

Og glem alt om at bruge microsoft\'s jvm den er håbløst forældet osv.
Avatar billede elv Nybegynder
06. december 2001 - 18:51 #24
jamen..... jeg har allerede JDK 1.3, burde det ikke være godt nok? Der er bare ingen jview.exe med.... til gengæld ligger der en i windows...
Avatar billede disky Nybegynder
07. december 2001 - 08:42 #25
netop lad være med at bruge jview, den er totalt forældet. Brug \'java\' commandoen istedet.
Avatar billede elv Nybegynder
07. december 2001 - 14:31 #26
ok, så langt så godt.
MEN
D:\\Java\\MyJava\\JNI Test (DLL)>java.exe TestJNI
Exception in thread \"main\" java.lang.UnsatisfiedLinkError: no TestJNI.dll in java.library.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at TestJNI.<init>(TestJNI.java:5)
        at TestJNI.main(TestJNI.java:16)


Still not working as you can se.... hvor skal jeg lægge dll-filen?
Avatar billede ultik Nybegynder
10. december 2001 - 15:07 #27
JEG tror at du skal bruge Load i stedet for LoadLibrary.... så kan du specifere en sti !

er det mon det der vil få det til at virke ? :)
Avatar billede elv Nybegynder
10. december 2001 - 17:12 #28
Aha! Fandt selv ud af det. Brugte Load() i stedet for LoadLibrary. Og i skal ikke tage jer af ultik, han er bare dum :)

Ej, vi arbejder sammen om projektet og jeg viste ham hvordan han havde løst det..... er han ikke bare lattterlig? :)
Avatar billede ultik Nybegynder
10. december 2001 - 17:18 #29
hehe øvøvøv ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB