Ich nutze eigentlich die latest von heute.
hier der Auszug aus der BrickMaster.java
/*************************************************************
* This file was automatically generated on 2012-02-15. *
* *
* If you have a bugfix for this file and want to commit it, *
* please fix the bug in the generator. You can find a link *
* to the generator git on tinkerforge.com *
*************************************************************/
package com.tinkerforge;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.concurrent.TimeUnit;
public class BrickMaster extends Device {
private final static byte TYPE_GET_STACK_VOLTAGE = (byte)1;
private final static byte TYPE_GET_STACK_CURRENT = (byte)2;
private final static byte TYPE_SET_EXTENSION_TYPE = (byte)3;
private final static byte TYPE_GET_EXTENSION_TYPE = (byte)4;
private final static byte TYPE_IS_CHIBI_PRESENT = (byte)5;
private final static byte TYPE_SET_CHIBI_ADDRESS = (byte)6;
private final static byte TYPE_GET_CHIBI_ADDRESS = (byte)7;
private final static byte TYPE_SET_CHIBI_MASTER_ADDRESS = (byte)8;
private final static byte TYPE_GET_CHIBI_MASTER_ADDRESS = (byte)9;
private final static byte TYPE_SET_CHIBI_SLAVE_ADDRESS = (byte)10;
private final static byte TYPE_GET_CHIBI_SLAVE_ADDRESS = (byte)11;
private final static byte TYPE_GET_CHIBI_SIGNAL_STRENGTH = (byte)12;
private final static byte TYPE_GET_CHIBI_ERROR_LOG = (byte)13;
public class ChibiErrorLog {
public int underrun;
public int crcError;
public int noAck;
public int overflow;
public String toString() {
return "[" + "underrun = " + underrun + ", " + "crcError = " + crcError + ", " + "noAck = " + noAck + ", " + "overflow = " + overflow + "]";
}
}
public class Version {
public String name = null;
public short[] firmwareVersion = new short[3];
public short[] bindingVersion = new short[3];
public String toString() {
return "[" + "name = " + name + ", " + "firmwareVersion = " + firmwareVersion + ", " + "bindingVersion = " + bindingVersion + "]";
}
}
public BrickMaster(String uid) {
super(uid);
bindingVersion[0] = 1;
bindingVersion[1] = 1;
bindingVersion[2] = 0;
}
public int getStackVoltage() throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_GET_STACK_VOLTAGE);
bb.putShort((short)4);
ipcon.write(this, bb, TYPE_GET_STACK_VOLTAGE, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for getStackVoltage in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
int voltage = IPConnection.unsignedShort(bb.getShort());
semaphoreWrite.release();
return voltage;
}
public int getStackCurrent() throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_GET_STACK_CURRENT);
bb.putShort((short)4);
ipcon.write(this, bb, TYPE_GET_STACK_CURRENT, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for getStackCurrent in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
int current = IPConnection.unsignedShort(bb.getShort());
semaphoreWrite.release();
return current;
}
public void setExtensionType(short extension, long exttype) {
ByteBuffer bb = ByteBuffer.allocate(9);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_SET_EXTENSION_TYPE);
bb.putShort((short)9);
bb.put((byte)extension);
bb.putInt((int)exttype);
ipcon.write(this, bb, TYPE_SET_EXTENSION_TYPE, false);
}
public long getExtensionType(short extension) throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(5);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_GET_EXTENSION_TYPE);
bb.putShort((short)5);
bb.put((byte)extension);
ipcon.write(this, bb, TYPE_GET_EXTENSION_TYPE, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for getExtensionType in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
long exttype = IPConnection.unsignedInt(bb.getInt());
semaphoreWrite.release();
return exttype;
}
public boolean isChibiPresent() throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_IS_CHIBI_PRESENT);
bb.putShort((short)4);
ipcon.write(this, bb, TYPE_IS_CHIBI_PRESENT, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for isChibiPresent in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
boolean present = (bb.get()) != 0;
semaphoreWrite.release();
return present;
}
public void setChibiAddress(short address) {
ByteBuffer bb = ByteBuffer.allocate(5);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_SET_CHIBI_ADDRESS);
bb.putShort((short)5);
bb.put((byte)address);
ipcon.write(this, bb, TYPE_SET_CHIBI_ADDRESS, false);
}
public short getChibiAddress() throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_GET_CHIBI_ADDRESS);
bb.putShort((short)4);
ipcon.write(this, bb, TYPE_GET_CHIBI_ADDRESS, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for getChibiAddress in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
short address = IPConnection.unsignedByte(bb.get());
semaphoreWrite.release();
return address;
}
public void setChibiMasterAddress(short address) {
ByteBuffer bb = ByteBuffer.allocate(5);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_SET_CHIBI_MASTER_ADDRESS);
bb.putShort((short)5);
bb.put((byte)address);
ipcon.write(this, bb, TYPE_SET_CHIBI_MASTER_ADDRESS, false);
}
public short getChibiMasterAddress() throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_GET_CHIBI_MASTER_ADDRESS);
bb.putShort((short)4);
ipcon.write(this, bb, TYPE_GET_CHIBI_MASTER_ADDRESS, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for getChibiMasterAddress in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
short address = IPConnection.unsignedByte(bb.get());
semaphoreWrite.release();
return address;
}
public void setChibiSlaveAddress(short num, short address) {
ByteBuffer bb = ByteBuffer.allocate(6);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_SET_CHIBI_SLAVE_ADDRESS);
bb.putShort((short)6);
bb.put((byte)num);
bb.put((byte)address);
ipcon.write(this, bb, TYPE_SET_CHIBI_SLAVE_ADDRESS, false);
}
public short getChibiSlaveAddress(short num) throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(5);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_GET_CHIBI_SLAVE_ADDRESS);
bb.putShort((short)5);
bb.put((byte)num);
ipcon.write(this, bb, TYPE_GET_CHIBI_SLAVE_ADDRESS, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for getChibiSlaveAddress in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
short address = IPConnection.unsignedByte(bb.get());
semaphoreWrite.release();
return address;
}
public short getChibiSignalStrength() throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_GET_CHIBI_SIGNAL_STRENGTH);
bb.putShort((short)4);
ipcon.write(this, bb, TYPE_GET_CHIBI_SIGNAL_STRENGTH, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for getChibiSignalStrength in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
short signalStrength = IPConnection.unsignedByte(bb.get());
semaphoreWrite.release();
return signalStrength;
}
public ChibiErrorLog getChibiErrorLog() throws IPConnection.TimeoutException {
ByteBuffer bb = ByteBuffer.allocate(4);
bb.order(ByteOrder.LITTLE_ENDIAN);
bb.put((byte)stackID);
bb.put((byte)TYPE_GET_CHIBI_ERROR_LOG);
bb.putShort((short)4);
ipcon.write(this, bb, TYPE_GET_CHIBI_ERROR_LOG, true);
byte[] answer = null;
try {
answer = answerQueue.poll(IPConnection.TIMEOUT_ANSWER, TimeUnit.MILLISECONDS);
if(answer == null) {
throw new IPConnection.TimeoutException("Did not receive answer for getChibiErrorLog in time");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
bb = ByteBuffer.wrap(answer, 4, answer.length - 4);
bb.order(ByteOrder.LITTLE_ENDIAN);
ChibiErrorLog obj = new ChibiErrorLog();
obj.underrun = IPConnection.unsignedShort(bb.getShort());
obj.crcError = IPConnection.unsignedShort(bb.getShort());
obj.noAck = IPConnection.unsignedShort(bb.getShort());
obj.overflow = IPConnection.unsignedShort(bb.getShort());
semaphoreWrite.release();
return obj;
}
public Version getVersion() {
Version version = new Version();
version.name = name;
version.firmwareVersion[0] = firmwareVersion[0];
version.firmwareVersion[1] = firmwareVersion[1];
version.firmwareVersion[2] = firmwareVersion[2];
version.bindingVersion[0] = bindingVersion[0];
version.bindingVersion[1] = bindingVersion[1];
version.bindingVersion[2] = bindingVersion[2];
return version;
}
public void addListener(Object o) {
}
}
und hier meinen Quelltext den ich versucht habe
import com.tinkerforge.BrickMaster;
import com.tinkerforge.IPConnection;
public class ExampleStackStatus {
private static final String host = new String("localhost");
private static final int port = 4223;
private static final String UID = new String("*****"); // Change to your UID
// Note: To make the example code cleaner we do not handle exceptions. Exceptions you
// might normally want to catch are described in the commnents below
public static void main(String args[]) throws Exception {
// Create connection to brickd
IPConnection ipcon = new IPConnection(host, port); // Can throw IOException
BrickMaster master = new BrickMaster(UID); // Create device object
// Add device to ip connection
ipcon.addDevice(master); // Can throw IPConnection.TimeoutException
// Don't use device before it is added to a connection
// Get voltage and current from stack (in mV/mA)
int voltage = master.getStackVoltage();
int current = master.getStackCurrent();
if (master.isChibiPresent() == true)
{
System.out.println("Chibi da");
short frequenz = master.getChibiFrequency();
System.out.println(frequenz);
short kanal = master.getChibiChannel();
System.out.println(kanal);
}
System.out.println("Stack Voltage: " + voltage/1000.0 + " V");
System.out.println("Stack Current: " + current/1000.0 + " A");
System.out.println("Press ctrl+c to exit");
ipcon.joinThread();
}
}
Ich versteh es nicht ganz...vielleicht siehst du gleich das Problem
Gruß