USB-I2C Adapter JAVA problem

Bega

Mitglied
Guten tag. Ich bin grade dabei bezüglich meiner Präsentationsprüfung morgen ein Programm zu schreiben.
Mein Thema ist (quasi) Kommunikation Zwichen Java und einer Seriellen Schnitstelle. Desswgen habe ich mir ein I2c Servo interface und einen passenden USB Adapter dazu bestellt.
Ich habe bisher mit der java comm und der RXTX Bibliothek versucht eine Verbindung aufzubauen, das gelang mir auch. Aber etwas hinzuschicken, wirklich ansprechen konnte ich ihn nochnicht.
Ich wende mich an euch weil ich das programm heute noch fertig bekommen wollte. (auch wenn es nicht unbedingt Ausschlaggebend für meine note sein wird.)
ich zeig euch hier mal meinen code mit RXTX, vlt findet ihr ja schon auf anhieb etwas falsches:
Java:
import gnu.io.*;
import java.io.IOException;
import java.io.OutputStream;

public class RXTX {

	int baudrate = 19200;
	int dataBits = SerialPort.DATABITS_8;
	int stopBits = SerialPort.STOPBITS_2;
	int parity = SerialPort.PARITY_NONE;

	public RXTX() {
	}

	public void connect(String portName) throws NoSuchPortException, PortInUseException, IOException, UnsupportedCommOperationException {
		//Port checken
		CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
		System.out.println();
		if (portIdentifier.isCurrentlyOwned()) {
			System.out.println("Error: Port ["+portName+"] is currently in use");
			return;
		} else {
			System.out.println("Success: Port ["+portName+"] is ready");
		}
		//Connect
		SerialPort serialPort = (SerialPort)portIdentifier.open(this.getClass().getName(), 2000);
		OutputStream outputStream = serialPort.getOutputStream();
		serialPort.setSerialPortParams(baudrate, dataBits, stopBits, parity);
		outputStream.write(new byte[]{(byte)0x00});
		serialPort.close();
	}

	public static void main(String[] args) throws NoSuchPortException, PortInUseException, IOException, UnsupportedCommOperationException {
		RXTX rxtx = new RXTX();
		rxtx.connect("COM2");
	}

}
Hier noch das Datenblatt des adapters:
http://www.roboter-teile.de/datasheets/usb2i2c.pdf
(das beigelieferte programm kann den Adapter ansprechen was man dann an einer Grünen LED sieht die blinkt bei Datentransfer, desswgen gehe ich davon aus dass, das problem in meinem java code liegt.)

wäre erfreut über eure hilfe, mfg patrick:)
 
T

tuxedo

Gast
Sehe so spontan keinen Fehler.
Du sendest ein 0x00 byte... Mehr nicht. Wenn du Infos lesen und schreiben willst, solltest du dir die Befehler dieses Adapters mal genau ansehen. In der Doku ist zu lesen:

Commands
The USB-I2C responds to commands sent to it from the PC. There are just three primary
commands:
I2CD_CMD (0x53) - This allows you to read or write to I2C devices that do not have
internally addressable registers, such as the Philips PCF8574 I/O expander.
I2C_CMD (0x55) - This allows you to read or write to internally registered devices such as
EEPROM's or our own range of modules.
USB-I2C_CMD (0x5A) - A range of commands to the USB-I2C module, generally to
improve selected communications.

0x00 steht da nicht dabei. Ich geh mal davon aus dass du schlicht und ergreifend ddie falsche/eine unvollständige Sequenz sendest und gar nix zurück liest...

Was hast du erwartet was passiert wenn du nur 1 byte sendest und dann die Verbindung wieder trennst?

- Alex
 

Bega

Mitglied
Es kam weder eine exception noch eine Reaktion am Adapter. Habe es natürlich auch schon mit anderen zahlen probiert (z.b. 0x01).
Könntest du mir ein Beispiel geben, was ich senden muss, um z.b. die Rote LED aus und ein zu schalten.
Der befehlt ist auf seite 6 zu finden. Bin ehrlich gesagt grad etwas ratlos in der Angelegenheit was ich ihm genau schicken muss damit er reagiert bzw einen befehl aufnimmt.
mfg
 
T

tuxedo

Gast
??? Aber lesen kannst du? Und du weißt auch was I2C ist? Hast du ein I2C Device am Adapter angeschlossen?

Ich geh mal davon aus dass du keins dran hast. Dann kannst du nicht viel tun. Laut Doku würde mit folgender Sequenz die Revision der Firmware des I2C Adapters abfragen:

0x5A für das einleiten eines USB-I2C Commands
0x01 für das Abfragen des Revision
0x00 einfach ein leeres byte
0x00 einfach ein leeres byte

Antwort:

1 einzelnes Byte das die Revision der Firmware wiederspiegelt.

Man kann anscheinend auch die rote LED des Adapters ausschalten und die I/O Leitungen als digitale Eingänge benutzen:

0x5A für das einleiten eines USB-I2C Commands
0x10 Sets I/O pins high/low
0x0E Steuerbyte
0x00 einfach ein leeres byte

Als Antwort wird hier auch ein byte zurück kommen.

Genaueres findet sich in der von dir verlinkten Doku. So, mehr lese ich für dich jetzt nicht. --> RTFM :rtfm:

- Alex
 

dhachim

Bekanntes Mitglied
Uff, wenn dein Thema nicht Java wäre, würde ich dir jetzt zu C oder Dasic raten :)
Aber wie Tuxedo schon geschrieben hat, 0x00 bewirkt nix, wenn du es schickst.

Im Umgang mit Hardware muss man erst mal lernen, die Datenblätter zu lesen, und zu verstehen. ;)
Aber spannend isses allemal. Wenn du fertig bist mit dem Projekt würde mich das Ergebnis interessieren.
Hab mit Java noch nix gemacht in dem Bereich.
 

Bega

Mitglied
Nochmals vielen Dank für die Antworten.

Der von mir oben gepostete Java Code funktioniert also einwandfrei (bis auf den Inhalt des byte[]-arrays, hier müsste rein: (byte)0x5A,(byte)0xC2,(byte)0x0E,(byte)0x00 -> Rote LED aus), das einzige Problem war die Ansprechung mit dem 0x5A. Tuxedo, hast recht. Lesen sollte gelernt sein, leider sind meine Englischkenntnisse nich ausreichen um das komplette Datenblatt zu verstehen und daher hast du mir mit deinen Beispiel sehr weitergeholfen (vielleicht war ich aber auch nur zu unkonzentriert, bis morgen musst das ganze stehn) - Die rote LED war danach aus.

Dhachim, das Java Projekt soll später ein "ferngesteuertes" Auto steuern, desswegen werde ich die Klasse noch in die richtigen Eventhandler einbinden und fertig.

Nun gibt es allesdings ein neues Problem:
An meinem I2C Bus hängt ein SD21 (Servocontroler mit I2C Interface), mir ist aus dem Datenblatt allerdings nicht ersichtlich, wie man dies genau ansteuert. Ich würd wenn es nicht allzu viel umstände macht, euch bitten, nochmals in das Datenblatt zu gucken und mir zu sagen mit welchen anweisungsparametern man den Servo befehligt. Aus den Datenblättern kann ich leider nicht herausfinden, ob man nun dennoch den 0x5A Befehl benutzen muss oder nicht.
Aktuell habe ich es mit (byte)0x5A,(byte)0xC2,(byte)63,(byte)63 probiert (Verzweiflungstat).
C2 steht im Datenblatt der Servosteuerung: http://www.roboter-teile.de/datasheets/sd21.pdf

Ich hoffe es ist nicht zu viel arbeit, mir hilfe es.

Danke, Bega
 

dhachim

Bekanntes Mitglied
okay lets have a look inside.
Using the I2C Bus

http://www.robotikhardware.de/download/sd21.pdf hilft beim Verstehen.

zuerst: 0x55
I2C_CMD (0x55) - This allows you to read or write to internally registered devices such as
EEPROM's or our own range of modules.
Dann ist wichtig: 0xC2 (wohin willst du schreiben)
Address
The SD21 Servo module is located at address 0xC2 on the I2C bus.

nun Welches Servo/ Byte:
(#Servo*3) -2

dann wieviele Bytes will man senden:
0x02

Was soll geschrieben werden:
(byte) (ServoPosition & 0xff) Lowbyte der Position
(byte) (ServoPosition >>8) HighByte der Position


Also:
Java:
byte[0]=0x55;
byte[1]=0xC2;
byte[2]=(int #Servo*3) -2 ;
byte[3]=0x02;
byte[4]=(byte) (int ServoPosition & 0xff)
byte[5]=(byte) (int ServoPosition >>8)
sollte es tun. Natürlich ohne Gewähr. :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Java 8 Adapter Allgemeine Java-Themen 10
R Parameter Adapter - Design Allgemeine Java-Themen 1
K USB Wlan Adapter ? Allgemeine Java-Themen 10
B Wann Interface und wann Adapter Allgemeine Java-Themen 4
H Adapter-kanonische Baumimplementierung Allgemeine Java-Themen 4
V Nachteile von Adapter-Klassen Allgemeine Java-Themen 7
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1
P Java Quellen finden Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben