Borland C++ Builder und der IO-Warrior 24

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Tasm-Devil
Posts: 38
Joined: Tue Oct 18, 2005 4:52 pm
Contact:

Borland C++ Builder und der IO-Warrior 24

Post by Tasm-Devil »

Ist es schwer mit dem BCB 5 oder 6 den Warrior zu steuern oder zu empfangen.

Wie viele Schritte benötigt es bis die Sache läuft. Ich frag nur weil ich vor habe mir in nächster Zeit 1-2 Warrior zu zulegen.

Kann mar einer helfen?
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Man muss sich nur ein iowkit.lib aus der iowkit.dll bauen.
Dazu liefert aber Borland ein Tool mit (IMPLIB).
iowkit.h laesst sich in BCB verwenden.

Ansonsten studiert man noch die Delphi-Beispiele. Diese sollten sich mit dem dcc32.exe Delphi Kommandozeilen Compiler uebersetzen lassen.
Mit ein bischen Geschick lassen sich die Beispiele auch nach BCB umsetzen.

Die HID-Komponente geht auch, aber es ist ein bichchen schwieriger sie einzubinden und zu verstehen.
Tasm-Devil
Posts: 38
Joined: Tue Oct 18, 2005 4:52 pm
Contact:

Post by Tasm-Devil »

Was macht die HDI-Komponente?
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Die HID-Komponente ist eine Delphi-Komponente (BCB kompatibel), die alle HID-Geraete umfassend erschliesst. Entsprechend ist sie erheblich komplexer strukturiert und folgt auch nicht den Standardpfaden des Komponentendesigns.
Der wichtigste Unterschied ist das die HID-Geraete dynamisch verwaltet werden und daher ist es moeglich das An- und Abstecken von HID-Geraeten zu behandeln.
Tasm-Devil
Posts: 38
Joined: Tue Oct 18, 2005 4:52 pm
Contact:

Post by Tasm-Devil »

Hi Leute,
mitlerweile habe ich mir den IO Warrior 24 gekauft und bin am Probieren. Allerdings hab ich schon mit dem MD5-Demo-Programmen problem, die ich aber in einem anderen Topik erörten möchte. Was ich euch hier nun fragen möchte ist folgendes:

Ich habe die HidDeviceControl Komponente erstaunlicherweise ohne Probleme in den BCB6 integriert und möchte Sie jetzt teste. Zum probieren habe ich ein auf der CD mitgeliefertes Demo Projekt geladen. Zu meiner überaschung Compiliert er es ohne zu murren aber der Linker streikt mit folgender Fehlermeldung:
[Linker Fatal Error] Fatal: Could not open ..\..\..\bin\BasicDemo.exe (error code 5)

Kann mir einer helfen. (BasicDemp.exe soll er machen, die gibt es logischerweise nicht)
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Das klingt danach das das Verzeichnis ..\..\..\bin nicht vorhanden ist.
Die Projektoptionen der Beispiele sind so gesetzt das sie alle das Programm ueber diesen relativen Pfad im gleichen Verzeichnis ablegen wollen.
Tasm-Devil
Posts: 38
Joined: Tue Oct 18, 2005 4:52 pm
Contact:

Post by Tasm-Devil »

ok danke das hat mir ein bisschen weitergeholfen. der fehler ist weg aber das demo-programm sagt mit es findet keinen IO-Warrior obwohl er definitif angeschlossen ist. Ich habe es mit einem Fertigkompiliertem Programm von der CD getestet.

Hier hab ich 2 Screenshoots gemacht
http://www.bsc-birkenheide.de/codemercs.htm
Tasm-Devil
Posts: 38
Joined: Tue Oct 18, 2005 4:52 pm
Contact:

Post by Tasm-Devil »

Eins versteh ich nicht. Mitlerweile funktionieren alle demos (ma ausgeschlossen von den LCD dingern, die ich nicht probieren kann) außer dieses IO-Warrior demo.

Darum hätte ich mal eine Frage:
Ich brauche den Warrior im Grunde genommen nur für einen Zweck. Und zwar möchte ich lediglich 3bit an den ausgängen P0.0 bis P0.2 ausgeben um damit 3 Relais zu schalten. Kann mir jemand ein klize kleines Prog im BCB6 schreiben das in der lage dazu ist? Mit oder ohne HidDeviceControl

Wenn nicht, dann möchte ich um ein klein bisschen hilfe bitten, damit ich das selbst auf die Reihe kriege.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Der Fehler ist ganz schlicht.

Code: Select all

bool __stdcall FindIOWarrior(TJvHidDevice *HidDev)
{
  // the IO-Warrior shows up as two devices
  // we want access to the IO-Warrior device for the IO pins
  // the other one with a InputReportByteLength of 8 is for access to
  // the optional LCD module
  return (HidDev->Attributes.VendorID == cCodeMercenariesVID &&
    HidDev->Attributes.ProductID == cIOWarriorPID &&
    HidDev->Caps.InputReportByteLength == 5);
}
Diese Funktion akzeptiert nur IO-Warror 40. " == 5" durch " == 3" ersetzen und es sollte funktionieren.
Das Programm stammt noch aus der Zeit als es keine IO-Warrior 24 gab.

Bei der HID-Komponente erscheint ein IO-Warrior als zwei getrennte Geraete. "InputReportByteLength == 8" ist das Geraet fuer die Special Modes. Die IO-Pins haben "InputReportByteLength == 5" fuer IO-Warrior 40 und "InputReportByteLength == 3" fuer IO-Warrior 24.
Tasm-Devil
Posts: 38
Joined: Tue Oct 18, 2005 4:52 pm
Contact:

Post by Tasm-Devil »

hast du es getestet? es funktioniert nicht wirklich. Er findet ihn immernoch nicht.
Guido Körber
Site Admin
Posts: 2880
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Ohne mich wirklich mit dem Code auszukennen: Nach ProductID $1500 suchen, statt nach $1500.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Natuerlich. cIOWarriorPID in $1501 aendern.
Tasm-Devil
Posts: 38
Joined: Tue Oct 18, 2005 4:52 pm
Contact:

Post by Tasm-Devil »

Also ich habe jetzt alles so gemacht wie ihr es gesagt habt. es hat sich auch was getan. Mitlerweile zeigt das Programm an es finde den IO Warrior aber wenn ich auf die LED-Buttons drücke passiert nichts.
Ich zeige euch jetzt was ich geändert habe

Code: Select all

#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include "JvHidControllerClass.hpp"
#include <Buttons.hpp>
//---------------------------------------------------------------------------
#define cCodeMercenariesVID 0x07C0
#define cIOWarriorPID       0x1501
#define cLEDByte 
und:

Code: Select all

bool __stdcall FindIOWarrior(TJvHidDevice *HidDev)
{
  // the IO-Warrior shows up as two devices
  // we want access to the IO-Warrior device for the IO pins
  // the other one with a InputReportByteLength of 8 is for access to
  // the optional LCD module
  return (HidDev->Attributes.VendorID == cCodeMercenariesVID &&
    HidDev->Attributes.ProductID == cIOWarriorPID &&
    HidDev->Caps.InputReportByteLength == 3);
}
Funktioniert es bei euch?
Guido Körber
Site Admin
Posts: 2880
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

LED Button?
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Mit den LED-Buttons meint er die Buttons im Programm, auf denen ein Bild einer LED ist.

#define cLEDByte 3

aendern in

#define cLEDByte 0

Beim IOW40 Starter Kit sind die LEDs am Port 3 angeschlossen, waehrend die LED des IOW 24 Starterkits am Pin 3 des Ports 0 haengt.

Ansonsten ist es guenstig das gleichnamige Delphi-Beispiel durchzulesen. Die BCB-Beispiele wurden von einer frueheren Version der Delphi-Beispiele abgeleitet.
Post Reply