xBase++

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Sitemap
Index
Links
Impressum
Mail

 

Allgemeines

Alaska Software  xBase++ ist der moderne Nachfolger der Datenbanksprachen der ersten PC-Stunde (Clipper, dBase) und erfreut sich regen Zuspruchs. Vertrieben wird xBase++ (aktuell v1.9) von der Firma Alaska Software.

Rene Nooteboom hat nun den Versuch gewagt Datenbanksprache und fischertechnik Computing miteinander zu verbinden. Unterstützt werden die fischertechnik Interfaces 30520 Universal, 30402 Intelligent und die ROBO Serie. Zusätzlich auch noch das Multiface von Knobloch.

Komponenten

Zentrales Element sind - interfacespezifische - Wrapper-Bibliotheken (ft30520.obj - ft30402.obj - ftroboii.obj - mface.obj), die die Funktionen von umFish30.DLL bzw. umFish40.DLL und inpout32.DLL xBase-gerecht kapseln. Für das "DrumRum" werden noch einige weitere .ch und .prg Files benötigt.

Konsolbeispiel : Interface-Diagnose

Aufbau der Konsol-Anwendung für ein ROBO Interface :

  • ftriTest.xpj : Projekt
  • ftriTest.arc : Resourcen
  • ftriTest.ch : Header
  • ftriTest.prg : Die Anwendung
  • -- und die Include-Files --
  • noot.ch / prg : Allgemeine Funktionen
  • ft.ch : fischertechnik Konstanten
  • umFish40.ch / prg : Load umFish40.DLL
  • ftroboii.obj (ftroboii.ch / prg) : Das Wrapper-Objekt
FUNCTION main()
  LOCAL nSelectedMotor:=M1,nkey:=0,i
  Initialize()
  Set Cursor off
  Do WHILE !(LastKey() == K_ESC)
    @ 3,60 SAY nSelectedMotor PICTURE "9"
    FOR i := E1 TO E8
      @ i+2,5 SAY LTOC(FtRSensor(iPortHandle,i))
    Next i
    @ 19,5 SAY FtRAD(iPortHandle,EX) PICTURE "99999999"
    @ 20,5 SAY FtRAD(iPortHandle,EY) PICTURE "99999999"
    DO CASE
      CASE nkey == asc("1")
        nSelectedMotor := M1
      CASE nkey == asc("2")
        nSelectedMotor := M2
      CASE nkey == asc("3")
        nSelectedMotor := M3
      CASE nkey == asc("4")
        nSelectedMotor := M4
      Otherwise
    EndCase

    Do Case
      CASE Upper(Chr(nkey)) == "R" 
        FtRMotor(iPortHandle,nSelectedMotor,MCW)
        @ nSelectedMotor+3,44 SAY "MCW "
      CASE Upper(Chr(nkey)) == "L" 
        FtRMotor(iPortHandle,nSelectedMotor,MCCW)
        @ nSelectedMotor+3,44 SAY "MCCW"
      CASE Upper(Chr(nkey)) == "O" 
        FtRMotor(iPortHandle,nSelectedMotor,MOFF)
        @ nSelectedMotor+3,44 SAY "MOFF"
      OTHERWISE
    EndCase
    UpdateLoops()
    nkey := Inkey(0.01) // wait 0.01s
  EndDo
  CloseApplication()
RETURN NIL

Codeausschnitt der Anwendung (.PRG) : Die ftroboii Funktionen entsprechen denen von umFish40.DLL, deswegen kann hierfür auch die umFish40-Doku herangezogen werden.

Windowsbeispiel : Komfort-Ampel

Procedure StartTrafficLight()
  LOCAL nPhase:=0,nEvent:=xbe_None,mp1,mp2,oXbp,
    LightPhases_,lPushed:=FALSE
  LoadColorBitMaps()
  ReadData()
  DisableDialogs()
  oPB_Stop:enable()
  // get the traffic light    phases-array
  LightPhases_ := CreatePhases() 
  If lAutomatic // change lights continuously and automatic
  // second event loop for controlling traffic lights
  Do While TRUE 
    nEvent := AppEvent(@mp1,@mp2,@oXbp,1) 
    If nEvent <> xbe_None .AND. !(oXbp == NIL)
      oXbp:handleEvent(nEvent,mp1,mp2)
    EndIf
    Do Case 
      Case nEvent == xbeP_Quit
        CloseApplication()
      Case nEvent == xbeP_Close
        CloseApplication()
      Case lStop
        Exit
    END // endcase 
    If nPhase <= 0
      nPhase := 1
      StartStopWatch()
      FtROutput(iHandle,LightPhases_[nPhase][IOUTPUTBYTE])
    Else
      If ElapsedTime() > LightPhases_[nPhase][ITIME]
       If ++nPhase > Len(LightPhases_)
         nPhase := 1
       EndIf
       StartStopWatch()
       FtROutput(iHandle,LightPhases_[nPhase][IOUTPUTBYTE])
      EndIf
    EndIf 
  EndDo

.........

Mit entsprechend umfangreicherem Source-Code. Der Windows-Code wird von der XBase IDE generiert. Er kann zusätzlich von Hand modifiziert werden. Der Code zum Steuern des Interfaces verschwindet da ein wenig.

Downloads

umFish_xBase.ZIP  : XBase++ Sources und Objects
umFish_xBase.PDF : Übersicht der benötigten Files (auch im ZIP enthalten).
TrafficLight.PDF : Beschreibung des Ampel-Programms

und

umFish41.ZIP bzw. umFish30.ZIP : umFish__.DLL einschl. Dokumentation.

Autor

Rene Nooteboom, eMail : r.nooteboom2(a)chello.nl

Stand : 04.09.2006