December 24, 2014 at 10:42 AMDec 24, 2014 Compile From Source in Pascal (Delphi/Lazarus) scheint noch nicht zu klappen. Compiler findet das "tinkerforge" package auf dem (Fast-) Image nicht, siehe Screenshot. Kann ich das lösen mit Angabe des passenden Path in Umgeb.Var oder Makefile ? Ebenso frohe Weihnachten.
December 24, 2014 at 03:31 PMDec 24, 2014 Verdammt, noch ein Bug den wir uns durch eine Last-Minute-Änderung eingefangen haben . Wochenlanges Testen und dann sowas... Die aktuell Veröffentlichen FPC Bindings lassen sich nicht mit dem Makefile compilieren, das ist beim bauen des Images fehlgeschlagen aber nicht aufgefallen. Dadurch ist die FPC Library gar nicht installiert auf dem RED Brick . Du kannst das wie folgt über die Console fixen: sudo su # password = tf cd /usr/tinkerforge/bindings/delphi/source/ sed -i -e 's/BrickRED//g' Makefile.fpc export FPCDIR=/usr/lib/fpc/`ls /usr/lib/fpc/ | grep -E [0-9].[0-9].[0-9] | head -n1` fpcmake make make install Danach funktioniert dann alles wie erwartet, getest hab ich mit folgendem Beispiel: Makefile.fpc: [target] programs=ExampleEnumerate [require] packages=tinkerforge ExampleEnumerate.pas: program ExampleEnumerate; {$ifdef MSWINDOWS}{$apptype CONSOLE}{$endif} {$ifdef FPC}{$mode OBJFPC}{$H+}{$endif} uses SysUtils, IPConnection, Device; type TExample = class private ipcon: TIPConnection; public procedure EnumerateCB(sender: TIPConnection; const uid: string; const connectedUid: string; const position: char; const hardwareVersion: TVersionNumber; const firmwareVersion: TVersionNumber; const deviceIdentifier: word; const enumerationType: byte); procedure Execute; end; const HOST = 'localhost'; PORT = 4223; var e: TExample; { Print incoming enumeration } procedure TExample.EnumerateCB(sender: TIPConnection; const uid: string; const connectedUid: string; const position: char; const hardwareVersion: TVersionNumber; const firmwareVersion: TVersionNumber; const deviceIdentifier: word; const enumerationType: byte); begin WriteLn('UID: ' + uid); WriteLn('Enumerate Type: ' + IntToStr(enumerationType)); if (enumerationType <> IPCON_ENUMERATION_TYPE_DISCONNECTED) then begin WriteLn('Connected UID: ' + connectedUid); WriteLn('Position: ' + position); WriteLn('Hardware Version: ' + IntToStr(hardwareVersion[0]) + '.' + IntToStr(hardwareVersion[1]) + '.' + IntToStr(hardwareVersion[2])); WriteLn('Firmware Version: ' + IntToStr(firmwareVersion[0]) + '.' + IntToStr(firmwareVersion[1]) + '.' + IntToStr(firmwareVersion[2])); WriteLn('Device Identifier: ' + IntToStr(deviceIdentifier)); end; WriteLn(''); end; procedure TExample.Execute; begin { Create connection and connect to brickd } ipcon := TIPConnection.Create; ipcon.Connect(HOST, PORT); { Register enumerate callback to "EnumerateCB" } ipcon.OnEnumerate := {$ifdef FPC}@{$endif}EnumerateCB; { Trigger enumerate } ipcon.Enumerate; WriteLn('Press key to exit'); ReadLn; ipcon.Destroy; { Calls ipcon.Disconnect internally } end; begin e := TExample.Create; e.Execute; e.Destroy; end. Auszuführende Executable ist "ExampleEnumerate". Ergebnis im Log: 2014-12-24T16:21:00.234105+0100 ------------------------------------------------------------------------------- UID: 3df8jB Enumerate Type: 1 Connected UID: 0 Position: 0 Hardware Version: 1.0.0 Firmware Version: 2.0.0 Device Identifier: 17 UID: 3df8jB Enumerate Type: 0 Connected UID: 0 Position: 0 Hardware Version: 1.0.0 Firmware Version: 2.0.0 Device Identifier: 17 UID: 6CtsQi Enumerate Type: 0 Connected UID: 3df8jB Position: 1 Hardware Version: 2.1.0 Firmware Version: 2.3.0 Device Identifier: 13 UID: fobar Enumerate Type: 0 Connected UID: 6CtsQi Position: c Hardware Version: 1.0.0 Firmware Version: 2.0.1 Device Identifier: 246
December 24, 2014 at 05:52 PMDec 24, 2014 Author Prima und danke, hat geklappt. Allerdings scheint es erst beim 2 Versuch der Programmstart (Always) zu klappen, anbei das log: 2014-12-11T14:44:17.899223+0100 ------------------------------------------------------------------------------- An unhandled exception occurred at $00037794 : ETimeoutException : Did not receive response in time for function ID 2 $00037794 $0001FF94 $000087C0 $000088A8 2014-12-11T14:44:21.468739+0100 ------------------------------------------------------------------------------- Das Programm was ich ausführe ist recht banal, siehe Attachment. Falls das o.g. ein Bug ist, reicht eine Behebung auch im nächsten Jahr ExampleCallback.pas
December 29, 2014 at 01:49 PMDec 29, 2014 Author Denkt ihr beim Upgrade des RED Images auch an diesen Bug.
December 29, 2014 at 01:57 PMDec 29, 2014 Author Sind eig. auf dem Fullimage Tools für Fernwartungszugriff ala VNC, Teamviewer etc. ?
December 29, 2014 at 04:32 PMDec 29, 2014 Author Hmh, ich werde bestimmt noch die eine oder andere blöde Fragen zu Linux & Co stellen, da ich davon (noch) keine Ahnung habe, aber sehe ich das richtig, daß die Lazarus IDE schon in der RED-Distro - analog zu https://packages.debian.org/hu/wheezy/armel/lazarus-ide-0.9.30.4/filelist - bzw. im Repo enthalten ist ?
December 29, 2014 at 04:43 PMDec 29, 2014 Alles was in Debian Wheezy enthalten ist, ist auch in der "RED-Distro" enthalten. Die "RED-Distro" ist Debian Wheezy mit einem großen Haufen zusätzlicher Pakete die wir für unser System benötigen.
December 31, 2014 at 10:09 AMDec 31, 2014 Author Hab es getestet und ist jetzt mit dem 1.2 Image gefixt und arbeitet problemlos.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.