So, ich habe eine Frage, und gebe mich der Hoffnung hin, dass schon mal jemand sich mit dem Thema befasst hat und deshalb Ahnung hat (oder auch einfach so Rat weiß).
Jedenfalls folgendes:
Habe mir damals - in Jugendlichem Leichtsinn - dieses LEGO-Mindstorms gekauft und mit der Software von Lego mehr oder Minder Erfolgreich rumgedoktort. Jetzt, da ich mein Zimmer nach 5 Jahren zum ersten mal wieder aufräume habe ich diesen wiederentdeckt.
Da ich über Internetrecherchen bereits herrausgefunden habe, dass man den auch einigermaßen professionell steuern kann, wollte ich fragen ob jemand weiß wie das geht. Am besten mit PB, was ich aber nicht wirklich für möglich halte.
Wer kennt sich damit aus?
Programme für Lego Mindstorms RCX erstellen
- Falko
- Admin
- Beiträge: 3531
- Registriert: 29.08.2004 11:27
- Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0 - Kontaktdaten:
So wie es aussieht, ist es möglich wenn du die betreffende rcx.dll aus
folgende Seite herunter lädst.
http://www.gajdaw.pl/nmlt/software.html
hier der direktlink zur DLL, die auch unter Purebasci genutzt werden könnte.
http://www.gajdaw.pl/nmlt/zip/rcxdll_0_1.zip
Die Funktionen der DLL sind in der Beschreibung angegeben, welche du
manuell in PB erstellst, oder vielleicht mit ts-soft sein hübsches tool
"DLL2PBLib.exe" extrahierst und entsprechend der Beschreibung anpasst.
die Funktionen, da ich dieses nicht ohne Hardware in PB testen kann.
Aber das sollte nicht schwer sein.
Wenn alles korrekt läuft, kannst du mit Tailbite eine PB-Lib daraus
erzeugen.
[Edit] Hier noch ein weiterer Link, wo all diese Infos herkommen und
sogar ein Delphibeispiel diese DLL ausführlich darstellt und sich leicht in
PB anpassen lässt. Dazu sollte man die einzelnen
procedure TForm1.Button3Click(Sender: TObject);
sich so vorstellen, als ob man z.B. mit Visualdesigner Buttons hergestellt hat und in den einzelnen If-Anweisungen oder Case-Anweisungen die Funktion hineinschreibt.
Oder gleich die einzelnen Funktionen in selbst gewählte Proceduren erstellen. [/Edit]
MfG Falko
folgende Seite herunter lädst.
http://www.gajdaw.pl/nmlt/software.html
hier der direktlink zur DLL, die auch unter Purebasci genutzt werden könnte.
http://www.gajdaw.pl/nmlt/zip/rcxdll_0_1.zip
Die Funktionen der DLL sind in der Beschreibung angegeben, welche du
manuell in PB erstellst, oder vielleicht mit ts-soft sein hübsches tool
"DLL2PBLib.exe" extrahierst und entsprechend der Beschreibung anpasst.
Etwas vorarbeit habe ich schon mal gemacht. Nur nicht die Anpassung anBeschreibung zur rcx.dll --> hat geschrieben:RCX.DLL Exported functions:
procedure RCXSetSerialPort(no:smallint);StdCall;
procedure RCXStart;StdCall;
procedure RCXStop;StdCall;
procedure RCXMotorOn(no:word);StdCall;
procedure RCXMotorOff(no:word);StdCall;
procedure RCXSetFwd(no:word);StdCall;
procedure RCXSetRwd(no:word);StdCall;
procedure RCXAlterDir(no:word);StdCall;
function RCXSensor1:word;StdCall;
function RCXSensor2:word;StdCall;
function RCXSensor3:word;StdCall;
die Funktionen, da ich dieses nicht ohne Hardware in PB testen kann.
Aber das sollte nicht schwer sein.
Wenn alles korrekt läuft, kannst du mit Tailbite eine PB-Lib daraus
erzeugen.
Ich hoffe ich konnte etwas dazu beitragenerstellt mit tool von ts-soft hat geschrieben:; Source generiert durch DLL2PBLib
; Copyright 2005 by Thomas Schulz (TS-Soft)
; Globale Variablen deklaration
Global RCXAlterDir.l
Global RCXMotorOff.l
Global RCXMotorOn.l
Global RCXSensor1.l
Global RCXSensor2.l
Global RCXSensor3.l
Global RCXSetFwd.l
Global RCXSetRwd.l
Global RCXSetSerialPort.l
Global RCXStart.l
Global RCXStop.l
; Init-Funktion
ProcedureDLL rcx_Init()
Shared DLL.l
DLL = LoadLibrary_("rcx.dll")
If DLL
RCXAlterDir = GetProcAddress_(DLL, "RCXAlterDir")
RCXMotorOff = GetProcAddress_(DLL, "RCXMotorOff")
RCXMotorOn = GetProcAddress_(DLL, "RCXMotorOn")
RCXSensor1 = GetProcAddress_(DLL, "RCXSensor1")
RCXSensor2 = GetProcAddress_(DLL, "RCXSensor2")
RCXSensor3 = GetProcAddress_(DLL, "RCXSensor3")
RCXSetFwd = GetProcAddress_(DLL, "RCXSetFwd")
RCXSetRwd = GetProcAddress_(DLL, "RCXSetRwd")
RCXSetSerialPort = GetProcAddress_(DLL, "RCXSetSerialPort")
RCXStart = GetProcAddress_(DLL, "RCXStart")
RCXStop = GetProcAddress_(DLL, "RCXStop")
EndIf
EndProcedure
; End-Funktion
ProcedureDLL rcx_End()
Shared DLL.l
FreeLibrary_(DLL)
EndProcedure
; Allgemeine Funktionen
ProcedureDLL.l RCXAlterDir()
ProcedureReturn CallFunctionFast(RCXAlterDir)
EndProcedure
ProcedureDLL.l RCXMotorOff()
ProcedureReturn CallFunctionFast(RCXMotorOff)
EndProcedure
ProcedureDLL.l RCXMotorOn()
ProcedureReturn CallFunctionFast(RCXMotorOn)
EndProcedure
ProcedureDLL.l RCXSensor1()
ProcedureReturn CallFunctionFast(RCXSensor1)
EndProcedure
ProcedureDLL.l RCXSensor2()
ProcedureReturn CallFunctionFast(RCXSensor2)
EndProcedure
ProcedureDLL.l RCXSensor3()
ProcedureReturn CallFunctionFast(RCXSensor3)
EndProcedure
ProcedureDLL.l RCXSetFwd()
ProcedureReturn CallFunctionFast(RCXSetFwd)
EndProcedure
ProcedureDLL.l RCXSetRwd()
ProcedureReturn CallFunctionFast(RCXSetRwd)
EndProcedure
ProcedureDLL.l RCXSetSerialPort(a.l)
ProcedureReturn CallFunctionFast(RCXSetSerialPort,a)
EndProcedure
ProcedureDLL.l RCXStart()
ProcedureReturn CallFunctionFast(RCXStart)
EndProcedure
ProcedureDLL.l RCXStop()
ProcedureReturn CallFunctionFast(RCXStop)
EndProcedure
[Edit] Hier noch ein weiterer Link, wo all diese Infos herkommen und
sogar ein Delphibeispiel diese DLL ausführlich darstellt und sich leicht in
PB anpassen lässt. Dazu sollte man die einzelnen
procedure TForm1.Button3Click(Sender: TObject);
sich so vorstellen, als ob man z.B. mit Visualdesigner Buttons hergestellt hat und in den einzelnen If-Anweisungen oder Case-Anweisungen die Funktion hineinschreibt.
Oder gleich die einzelnen Funktionen in selbst gewählte Proceduren erstellen. [/Edit]
MfG Falko
Für die Steuerung des RCX gibt's auch ein .NET Interface:
http://msdn.microsoft.com/coding4fun/lego/default.aspx
http://msdn.microsoft.com/coding4fun/lego/default.aspx