ftcomputing.robo
Class FishFace

java.lang.Object
  extended by ftcomputing.robo.JavaFish
      extended by ftcomputing.robo.FishFace

public class FishFace
extends JavaFish

Klasse zum Ansprechen der Fischertechnik-Interfaces über Java. Basis ist die umFish40.DLL v4.3.75.33 mit Wrapper.DLL javaFish40.DLL und der zugehörenden Klasse JavaFish, die von der die Klasse FishFace abgeleitet ist. Der Funktionsinhalt orientiert sich an der Klasse FishFace der C# Assembly FishFace2005.DLL

Author:
Ulrich Müller, Michael Fennel
See Also:
FishFaceException, JavaFish

Constructor Summary
FishFace()
           
 
Method Summary
 void clearCounter(int InputNr)
          Zurücksetzen eines Counters auf 0
 void clearCounters()
          Zürucksetzen aller Counter auf 0
 void clearMotors()
          Löschen aller M-Ausgänge (damit werden auch alle O-Ausgängen gelöscht)
 void closeInterface()
          Beenden der Verbindungn zum Interface
 boolean finish()
          Feststellen eines Endewunsches durch die Escape-Taste oder das notHalt-Feld.
 boolean finish(int InputNr)
          Feststellen eines Endewunsches durch die Escape-Taste, einen bestimmten Taster oder das notHalt-Feld.
 int getAnalog(int AnalogNr)
          Methode zum Abfragen eines Analogeingangs für Wiederstände (AX, AY, AXS1 ... 3)
 int getCounter(int InputNr)
          Abfrage des Counters eines Digitaleingangs
 java.lang.String getDeviceFirmware()
          Abfrage der Firmware
 java.lang.String getDeviceName()
          Abfrage des Gerätenamens (resultiert aus Gerätetyp)
 int getDeviceSerial()
          Abfrage der Seriennummer
 int getDeviceType()
          Abfrage des Devices-Typs
 int getDistance(int SensorNr)
          Auslesen der vom UltaSonic-Sensor gemessenen Entfernung in cm.
 int getDistanceMode()
          Festellen des DistanceModes
 boolean getInput(int InputNr)
          Abfrage des Zustands von einem I-Eingang
 int getInputs()
          Abfrage des Zustands aller I-Eingänge
 boolean getIRKey(int Code, int KeyNr)
          Abfrage einer bestimmten Taste am IR-Handsender
 boolean getNotHalt()
          Abfragen des notHalt-Status
 int getOutputs()
          Auslesen des Status aller M-Ausgänge
 int getVoltage(int VoltNr)
          Abfragen der analogen Spannungseingänge bzw. der Distanzeingängen im Voltage-Mode (Distance.Voltage)
 void openInterfaceCOM(int ifTyp, int ComNr, int AnalogZyklen)
          Methode für die Verbindung an einem COM-Port.
 void openInterfaceUSB(int ifTyp, int SerialNr)
          Methode für die Verbindung an einem USB-Port, Distance-Mode nicht einstellbar, steht aber Standardmäßig auf Ulta-Sonic
 void openInterfaceUSB(int ifTyp, int SerialNr, int DistanceMode)
          Deprecated. Distance-Mode sollte nicht manuell eingestellt werden!
 void pause(int mSek)
          Anhalten des Programms, kann durch notHalt == true oder Escape unterbrochen werden
 void setCounter(int InputNr, int ICount)
          Setzten eines bestimmten Counters auf einen bestimmten Wert.
 void setLamp(int LampNr, int OnOff)
          Schalten einer Lampe an einem O-Ausgang (nur Robo-Interface)
 void setLamp(int LampNr, int OnOff, int Brightness)
          Schalten einer Lampe an einem O-Ausgang (nur Robo-Interface) mit Angabe der Helligkeit
 void setMotor(int MotorNr, int Direction)
          Setzen eines M-Ausganges
 void setMotor(int MotorNr, int Direction, int Speed)
          Setzen eines M-Ausganges mit Angabe der Geschwindigkeit
 void setMotor(int MotorNr, int Direction, int Speed, int ICount)
          Setzen eines M-Ausgangs mit Angabe der Geschwindigkeit und bei angeschlossenen Impulszähler zum Setzen der zu drehenden Impulse.
 void setMotors(int MotorStatus)
          Setzen aller M-Ausgänge
 void setMotors(int MotorStatus, int Speed)
          Setzen aller M-Ausgänge mit Angabe der Geschwindigkeit
 void setNotHalt(boolean OnOff)
          Setzen des notHalt-Status
static java.lang.String Version()
           
 int waitForChange(int InputNr, int NrOfChanges)
          Warten auf einen angebene Zahl von Zustandsänderungen an einem I-Eingang, unterbrechbar
 int waitForChange(int InputNr, int NrOfChanges, int TermInputNr)
          Warten auf eine beliebige Zahl von Zustandsänderungen an einem I-Eingang, kann durch drücken eines Taster abgebrochen werden
 int waitForChanges(int InputNr)
          Warten auf einen Wechsel des Zustandes am angebgenen I-Eingang, unterbrechbar
 int waitForHigh(int InputNr)
          Warten auf einen Wechsel von 0 nach 1 am angegebenen I-Eingang
 int waitForInput(int InputNr)
          Warten auf true (1) am angegebenen I-Eingang, abbrechbar
 int waitForInput(int InputNr, boolean OnOff)
          Warten auf 0 oder 1 am angegebenen I-Eingang, abbrechbar
 int waitForLow(int InputNr)
          Warten auf einen Wechsel von 1 nach 0 am angebenen I-Eingang, abbrechbar
 int waitForMotors(int mSek, int... MotorNrs)
          Warten auf ein Motor-Ready-Ereignis der angegebenen M-Ausgänge Mot.M1...
 
Methods inherited from class ftcomputing.robo.JavaFish
escape, getTickCount, jrClearCounters, jrCloseInterface, jrGetActDeviceFirmwareNr, jrGetActDeviceSerialNr, jrGetActDeviceType, jrGetAnalog, jrGetCounter, jrGetDistanceValue, jrGetInput, jrGetInputs, jrGetIRKey, jrGetModeStatus, jrGetMotors, jrGetVoltage, jrOpenInterfaceCOM, jrOpenInterfaceUSB, jrOpenInterfaceUSBdis, jrRobMotor, jrRobMotors, jrSetCounter, jrSetLamp, jrSetLampEx, jrSetModeStatus, jrSetMotor, jrSetMotorEx, jrSetMotors, jrSetMotorsEx, sleep
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FishFace

public FishFace()
Method Detail

getDeviceName

public java.lang.String getDeviceName()
Abfrage des Gerätenamens (resultiert aus Gerätetyp)

See Also:
Type

getDeviceType

public int getDeviceType()
Abfrage des Devices-Typs

Returns:
Device-Typ (kongruent zu Gerätename)

getDeviceSerial

public int getDeviceSerial()
Abfrage der Seriennummer

Returns:
Seriennummer

getDeviceFirmware

public java.lang.String getDeviceFirmware()
Abfrage der Firmware

Returns:
Firmware-Version

openInterfaceUSB

public void openInterfaceUSB(int ifTyp,
                             int SerialNr)
                      throws FishFaceException
Methode für die Verbindung an einem USB-Port, Distance-Mode nicht einstellbar, steht aber Standardmäßig auf Ulta-Sonic

Parameters:
ifTyp - der Interface-Typ. Zu entnehmen aus der IFTypen -Klasse.
SerialNr - die Seriennummer des Interface. Bei IFTypen.ftROBO_first_USB muss die Seriennummer 0 sein
Throws:
FishFaceException - wenn die Verbindung zum Interface fehl schlägt.
See Also:
openInterfaceUSB(int, int, int), openInterfaceCOM(int, int, int)

openInterfaceUSB

public void openInterfaceUSB(int ifTyp,
                             int SerialNr,
                             int DistanceMode)
Deprecated. Distance-Mode sollte nicht manuell eingestellt werden!

Methode für die Verbindung an einem USB-Port, mit einstellbarer Distance-Mode. Distance-Mode besser belassen, nur wer weiß was er macht soll dies tun.

Parameters:
ifTyp - der Interface-Typ. Zu entnehmen aus der IFTypen -Klasse.
SerialNr - die Seriennummer des Interface. Bei IFTypen.ftROBO_first_USB muss die Seriennummer 0 sein
DistanceMode - die Einstellung, wie die Distanzeingänge arbeiten sollen. Zu entnehmen aus der Distance-Klasse.
Throws:
FishFaceException - wenn die Verbindung zum Interface fehl schlägt.
See Also:
openInterfaceUSB(int, int), openInterfaceCOM(int, int, int)

openInterfaceCOM

public void openInterfaceCOM(int ifTyp,
                             int ComNr,
                             int AnalogZyklen)
Methode für die Verbindung an einem COM-Port. Distance-Mode nicht einstellbar, steht aber standardmäßig auf Ulta-Sonic.

Parameters:
ifTyp - der Interface-Typ. Zu entnehmen aus der IFTypen -Klasse.
ComNr - die Nummer des COM-Anschlusses am PC
AnalogZyklen - gibt an nach wie vielen Zyklen die Werte der Analog-Eingänge aktualisiert werden. Dies wurde vorgesehen, um die Abfragefrequenz der übrigen Eingänge zu erhöhen, da die Analogabfrage deutlich länger dauert. Standard ist hier 5.
Throws:
FishFaceException - wenn die Verbindung zum Interface fehl schlägt.
See Also:
openInterfaceUSB(int, int), openInterfaceUSB(int, int, int)

Version

public static java.lang.String Version()
Returns:
die aktuelle Version der FishFace-Klasse

getAnalog

public int getAnalog(int AnalogNr)
Methode zum Abfragen eines Analogeingangs für Wiederstände (AX, AY, AXS1 ... 3)

Parameters:
AnalogNr - die Nummer des Analogeingangs. Siehe auch Inp.
Returns:
ein Wert zwischen 0 und 1023, desto größer der Wert, desto höher ist der anliegende Wiederstand (der Messbereich reicht von 0-5,5kΩ).

getCounter

public int getCounter(int InputNr)
Abfrage des Counters eines Digitaleingangs

Parameters:
InputNr - die Nummer des Digitaleingangs, der abgefragt werden soll (siehe Inp).
Returns:
die Zahl der Impulse, die zu dem gewählten Eingang kamen.
Achtung: Es wird jede Zustandsänderung am Digitaleingang gezählt. Dass heißt, drückt man einen Taster einmal, so hat der Counter 2 Impulse gezählt.
Throws:
FishFaceException - wenn keine Verbindung zum Interface besteht oder es ein Interface-Problem gibt.

setCounter

public void setCounter(int InputNr,
                       int ICount)
Setzten eines bestimmten Counters auf einen bestimmten Wert.

Parameters:
InputNr - der Digitaleingang (siehe Inp)
ICount - die Zahl, auf die der Counter gestellt werden soll

getDistance

public int getDistance(int SensorNr)
Auslesen der vom UltaSonic-Sensor gemessenen Entfernung in cm. Erstellen des FishFace-Objekts mit Distance.UltraSonic muss vorher gegangen sein.

Parameters:
SensorNr - die Nummer des Distanzsensoreingangs (siehe Distance.UltraSonic)
Returns:
gibt die Entfernung in cm zurück

getDistanceMode

public int getDistanceMode()
Festellen des DistanceModes

Returns:
die eingestellte DistanceMode als Zahl (entspricht Distance)

getInput

public boolean getInput(int InputNr)
Abfrage des Zustands von einem I-Eingang

Parameters:
InputNr - Nummer des Digitaleingangs
Returns:
Zustand des Eingangs.
  • True: 1
  • False: 0

getInputs

public int getInputs()
Abfrage des Zustands aller I-Eingänge

Returns:
Die Summer aller I-Eingänge, diese errechnet sich wie folgt:
  • I1 hat den Wert 1, I2 hat den Wert 2, I3 hat den Wert 4, I4 hat den Wert 8, usw...
  • die Werte der I-Eingänge, die "geschlossen" sind, werden addiert

getIRKey

public boolean getIRKey(int Code,
                        int KeyNr)
Abfrage einer bestimmten Taste am IR-Handsender

Parameters:
Code - Auswahl des IR-Codes (siehe IRCode)
KeyNr - Auswahl der IR-Taste am Sender (siehe IRKeys)
Returns:
true, falls die gewählte Taste gedrückt ist,
false, falls die gewählte Taste nicht gedrückt ist

setLamp

public void setLamp(int LampNr,
                    int OnOff)
Schalten einer Lampe an einem O-Ausgang (nur Robo-Interface)

Parameters:
LampNr - die Nummer des Ausgangs (siehe Out)
OnOff - der Zustand, der gesetzt werden soll (siehe Dir)

setLamp

public void setLamp(int LampNr,
                    int OnOff,
                    int Brightness)
Schalten einer Lampe an einem O-Ausgang (nur Robo-Interface) mit Angabe der Helligkeit

Parameters:
LampNr - die Nummer des Ausgangs (siehe Out)
OnOff - der Zustand, der gesetzt werden soll (siehe Dir)
Brightness - die Helligkeit der Lampe (siehe Speed)

setMotor

public void setMotor(int MotorNr,
                     int Direction)
Setzen eines M-Ausganges

Parameters:
MotorNr - die Nummer des Motors (siehe Mot)
Direction - die Drehrichtung, die gesetzt werden soll (siehe Dir)

setMotor

public void setMotor(int MotorNr,
                     int Direction,
                     int Speed)
Setzen eines M-Ausganges mit Angabe der Geschwindigkeit

Parameters:
MotorNr - die Nummer des Motors (siehe Mot)
Direction - die Drehrichtung, die gesetzt werden soll (siehe Dir)
Speed - die Geschwindigkeit des Motors (siehe Speed)

setMotor

public void setMotor(int MotorNr,
                     int Direction,
                     int Speed,
                     int ICount)
Setzen eines M-Ausgangs mit Angabe der Geschwindigkeit und bei angeschlossenen Impulszähler zum Setzen der zu drehenden Impulse. Der Impulszähler des jeweiligen Motor ist am I-Eingang MotorNr * 2. Jeder Wechsel des Zustandes stellt einen Impuls dar. Außerdem gibt es eien Stopp-Taster am I-Eingang MotorNr * 2 -1.

Parameters:
MotorNr - die Nummer des Motors (siehe Mot)
Direction - die Drehrichtung, die gesetzt werden soll (siehe Dir)
Speed - die Geschwindigkeit des Motors (siehe Speed)
ICount - Zahl der zu drehenden Impulse

setMotors

public void setMotors(int MotorStatus)
Setzen aller M-Ausgänge

Parameters:
MotorStatus - die Drehrichtung, die gesetzt werden soll (siehe Dir)

setMotors

public void setMotors(int MotorStatus,
                      int Speed)
Setzen aller M-Ausgänge mit Angabe der Geschwindigkeit

Parameters:
MotorStatus - die Drehrichtung, die gesetzt werden soll (siehe Dir)
Speed - die Geschwindigkeit des Motors (siehe Speed)

getNotHalt

public boolean getNotHalt()
Abfragen des notHalt-Status

Returns:
false, wenn kein Nothalt vorliegt
true, wenn Nothalt vorliegt

setNotHalt

public void setNotHalt(boolean OnOff)
Setzen des notHalt-Status

Parameters:
OnOff - Status, der gesetzt werden soll

getOutputs

public int getOutputs()
Auslesen des Status aller M-Ausgänge

Returns:
Die Summer aller M/O-Ausgänge, diese errechnet sich wie folgt:
  • O1 hat den Wert 1, O2 hat den Wert 2, O3 hat den Wert 4, O4 hat den Wert 8, usw..., wenn der Zustand "an" ist
  • M1 mit Drehrichtung links hat den Wert 1, mir Drehrichtung rechts 2, M2 mit Drehrichtung links hat den Wert 4, mit Drehrichtung rechts 8
  • alle Werte werden addiert

getVoltage

public int getVoltage(int VoltNr)
Abfragen der analogen Spannungseingänge bzw. der Distanzeingängen im Voltage-Mode (Distance.Voltage)

Parameters:
VoltNr - Nummer des Spannungseingangs (Inp)
Returns:
einen Wert von 0-1023 (entstpricht 0 - 10 V)

clearCounter

public void clearCounter(int InputNr)
Zurücksetzen eines Counters auf 0

Parameters:
InputNr - der Counter, der auf 0 gesetzt werden soll (siehe Inp)

clearCounters

public void clearCounters()
Zürucksetzen aller Counter auf 0


clearMotors

public void clearMotors()
Löschen aller M-Ausgänge (damit werden auch alle O-Ausgängen gelöscht)


closeInterface

public void closeInterface()
Beenden der Verbindungn zum Interface


finish

public boolean finish()
Feststellen eines Endewunsches durch die Escape-Taste oder das notHalt-Feld.

Returns:
true, wenn die Escape-Taste gedrückt wird oder notHalt == true ist.
false, wenn kein Endewunsch besteht

finish

public boolean finish(int InputNr)
Feststellen eines Endewunsches durch die Escape-Taste, einen bestimmten Taster oder das notHalt-Feld.

Parameters:
InputNr - die Nummer des I-Eingangs (Inp)
Returns:
true, wenn die Escape-Taste gedrückt wird, der gewählte Taster gedrückt oder notHalt == true ist
false, wenn kein Endewunsch besteht

pause

public void pause(int mSek)
Anhalten des Programms, kann durch notHalt == true oder Escape unterbrochen werden

Parameters:
mSek - Zeit in Millisekunden, die angibt wie lange das Programm angehalten werden soll

waitForChange

public int waitForChange(int InputNr,
                         int NrOfChanges)
Warten auf einen angebene Zahl von Zustandsänderungen an einem I-Eingang, unterbrechbar

Parameters:
InputNr - die Nummer des I-Eingangs (Inp)
NrOfChanges - Zahl der Zustandsänderungen
Returns:
gibt an, wie die Methode beendet wurde: NotHalt, Escape-Taste, Abbruchtaster, Zahl der Zustandsänderungen erreicht (zu entnehmen aus der Wait-Klasse)

waitForChange

public int waitForChange(int InputNr,
                         int NrOfChanges,
                         int TermInputNr)
Warten auf eine beliebige Zahl von Zustandsänderungen an einem I-Eingang, kann durch drücken eines Taster abgebrochen werden

Parameters:
InputNr - die Nummer des I-Eingangs (Inp)
NrOfChanges - Zahl der Zustandsänderungen
TermInputNr - die Nummer des I-Eingangs (Inp), der für den Abbruch sorgt (bei 0 gibt es keine I-Eingang, der abbricht)
Returns:
gibt an, wie die Methode beendet wurde: NotHalt, Escape-Taste, Abbruchtaster, Zahl der Zustandsänderungen erreicht (zu entnehmen aus der Wait-Klasse)

waitForChanges

public int waitForChanges(int InputNr)
Warten auf einen Wechsel des Zustandes am angebgenen I-Eingang, unterbrechbar

Parameters:
InputNr - die NUmmer des I-Eingangs (Inp)
Returns:
gibt an, wie die Methode beendet wurde: NotHalt, Escape-Taste, Abbruchtaster, Zahl der Zustandsänderungen erreicht (zu entnehmen aus der Wait-Klasse)

waitForHigh

public int waitForHigh(int InputNr)
Warten auf einen Wechsel von 0 nach 1 am angegebenen I-Eingang

Parameters:
InputNr - die Nummer des I-Eingangs (Inp)
Returns:
gibt an, wie die Methode beendet wurde: NotHalt, Escape-Taste, Abbruchtaster, Zahl der Zustandsänderungen erreicht (zu entnehmen aus der Wait-Klasse)

waitForInput

public int waitForInput(int InputNr)
Warten auf true (1) am angegebenen I-Eingang, abbrechbar

Parameters:
InputNr - die Nummer des I-Eingangs (Inp)
Returns:
gibt an, wie die Methode beendet wurde: NotHalt, Escape-Taste, Abbruchtaster, Zahl der Zustandsänderungen erreicht (zu entnehmen aus der Wait-Klasse)

waitForLow

public int waitForLow(int InputNr)
Warten auf einen Wechsel von 1 nach 0 am angebenen I-Eingang, abbrechbar

Parameters:
InputNr - die Nummer des I-Eingangs (Inp)
Returns:
gibt an, wie die Methode beendet wurde: NotHalt, Escape-Taste, Abbruchtaster, Zahl der Zustandsänderungen erreicht (zu entnehmen aus der Wait-Klasse)

waitForInput

public int waitForInput(int InputNr,
                        boolean OnOff)
Warten auf 0 oder 1 am angegebenen I-Eingang, abbrechbar

Parameters:
InputNr - die Nummer des I-Eingangs (Inp)
OnOff -
  • true: warten auf 1
  • false: warten auf 0
  • Returns:
    gibt an, wie die Methode beendet wurde: NotHalt, Escape-Taste, Abbruchtaster, Zahl der Zustandsänderungen erreicht (zu entnehmen aus der Wait-Klasse)

    waitForMotors

    public int waitForMotors(int mSek,
                             int... MotorNrs)
    Warten auf ein Motor-Ready-Ereignis der angegebenen M-Ausgänge Mot.M1... Die M-Ausgänge müssen als RobMotoren mit setMotor(int, int, int, int) einzeln gestartet werden. Das Ready-Ereignis tritt ein, wenn alle zugehörenden Counter auf 0 stehen. Die Methode kann in einer Schleife ohne erneuten Motorstart wiederholt werden. Der Return-Wert gibt an, wie die Methode beendet wurde. Zu entnehmen aus der Wait-Klasse.

    Parameters:
    mSek - gibt an, wie lange auf das Ready-Ereignis gewartet werden soll. 0 Endlos, sonst die angegebene Anzahl von MilliSekunden.
    MotorNrs - die Motoren, auf die gewartet werden soll
    Returns:
    gibt an, wie die Methode beendet wurde. Zu entnehmen aus der Wait-Klasse.