Hallo ich habe ein Problem mit dem Einlesen der Ports im IO Warrior 40:
Ich habe eine Hardware (Spannungsüberwachung) die Signale an den IO Warrior liefert dieser soll die Signale einlesen und am Computer ausgeben
mein Programm sieht so aus:
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include "iowkit.h"
int main()
{
DWORD report;
report.Value=0;
IOWKIT_HANDLE ioHandle;
ioHandle = IowKitOpenDevice();
IOWKIT40_IO_REPORT report;
ULONG read;
// Read IO pins of IO-Warrior 40
read = IowKitRead(ioHandle, 3, (PCHAR*) &report, sizeof(report));
if (ioHandle == NULL)
{
cout <<"Failed to open device!" << endl;
return 0;
}
printf("Wert = %X\n", report);
IowKitCloseDevice(ioHandle);
return 0;
}
Um ehrlich zu sein verstehe ich die Syntax nicht genau
verstehe das Datasheet nicht
Bitte helft mir bei der Verwirklichung meines Problems
Danke im vorhinein
mfg Poio
Problem mit Lesen
Moderator: Guido Körber
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Besser gleich nach IowKitOpenDevice testen ob es geklappt hat, statt erst nach dem Lesen mit IowKitRead.
Ansonsten ist alles OK. Die Funktion IowKitRead wird aber erst zurueckkehren wenn sich etwas an den IO-Pins aendert, sprich wenn man den Knopf des Starter Kits drueckt oder angeschlossene Elektronik Signale ausgibt.
Ansonsten ist alles OK. Die Funktion IowKitRead wird aber erst zurueckkehren wenn sich etwas an den IO-Pins aendert, sprich wenn man den Knopf des Starter Kits drueckt oder angeschlossene Elektronik Signale ausgibt.
ich hätte dazu noch eine frage
das ist der jetzige code
das einlesen funktioniert jetzt und ein hex wert wird ausgegeben.
ich würde jetzt allerdings gerne den eingelesenen wert, der in der variable "report" gespeichert.
ich würde jetzt gerne diesen wert in einer anderen variable speichern. wie mache ich das?
zusätzlich würde ich diesen Wert gerne mittels cout oder printf binär ausgeben und nicht hexadezimal
wie kann ich das machen?
bitte um hilfe
mfg
poio
das ist der jetzige code
Code: Select all
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include "iowkit.h"
int main()
{
DWORD report;
report.Value=0;
IOWKIT_HANDLE ioHandle;
ioHandle = IowKitOpenDevice();
IOWKIT40_IO_REPORT report;
ULONG read;
if (ioHandle == NULL)
{
cout <<"Failed to open device!" << endl;
return 0;
}
// Read IO pins of IO-Warrior 40
read = IowKitRead(ioHandle, 0, (PCHAR*) &report, sizeof(report));
printf("Wert = %X\n", report);
IowKitCloseDevice(ioHandle);
return 0;
}
ich würde jetzt allerdings gerne den eingelesenen wert, der in der variable "report" gespeichert.
ich würde jetzt gerne diesen wert in einer anderen variable speichern. wie mache ich das?
zusätzlich würde ich diesen Wert gerne mittels cout oder printf binär ausgeben und nicht hexadezimal
wie kann ich das machen?
bitte um hilfe
mfg
poio
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Die binaere Ausgabe muss man selber programmieren, da printf es nicht kann.
Bitte "printf("Wert = %X\n", report.Value);" verwenden. Das es mit report klappt ist nur Zufall und eigentlich klappt es gar nicht.
Es ist ausserdem unweise C++ und c so zu mixen. Besser ist es nur eine ausgabemethode zu verwenden.
BTW ich bin uebrigens unwillig C-Anfaengerschulung zu geben. Das kann nicht Aufgabe dieses Forums sein.
Bitte "printf("Wert = %X\n", report.Value);" verwenden. Das es mit report klappt ist nur Zufall und eigentlich klappt es gar nicht.
Es ist ausserdem unweise C++ und c so zu mixen. Besser ist es nur eine ausgabemethode zu verwenden.
BTW ich bin uebrigens unwillig C-Anfaengerschulung zu geben. Das kann nicht Aufgabe dieses Forums sein.