Das CompuLAB-USB mit C++

(23.2.05)

Dr.-Ing. Rudolf Polzer schrieb: Ich möchte Ihnen C++ Code zur Veröffentlichung auf Ihren Internet- Seiten zur Verfügung stellen. Dieser C++ Code ist mit Compulab USB und dem C++ Builder von Borland/Inprise verwendbar.

Herzlichen Dank!

Download des kompletten Codes: clusbc.zip (2 KB)

Internetseite von Rudof Polzer: www.i-r-p.de

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "compulab_usb.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

unsigned char Ausgabe[4], Eingabe[8];
unsigned char DigitalAusgang = 0;
HANDLE Datei;
unsigned long n;

//---------------------------------------------------------------------------
bool _fastcall USB_existiert(void) // testet, ob CompulabUSB angeschlossen ist
 {
 Datei = CreateFile(USB_Dateiname, GENERIC_WRITE, FILE_SHARE_WRITE,
  NULL, OPEN_EXISTING, 0, 0);
 if(Datei != INVALID_HANDLE_VALUE)
  {
  Ausgabe[0] = 23; // AD Startkanal festlegen
  Ausgabe[1] = 0x34;
  Ausgabe[2] = 0x80;
  DeviceIoControl((void*)Datei, 0x04,
   Ausgabe, sizeof(Ausgabe), Eingabe, sizeof(Eingabe), &n, NULL);
  CloseHandle(Datei);
  return ja;
  }
 return nein;
 }
//---------------------------------------------------------------------------
double _fastcall USB_A_lesen(void) // liest Analogeingang A (von 0 bis 1)
 {
 Datei = CreateFile(USB_Dateiname, GENERIC_WRITE, FILE_SHARE_WRITE,
  NULL, OPEN_EXISTING, 0, 0);
 if(Datei != INVALID_HANDLE_VALUE)
  {
  Ausgabe[0] = 6;
  Ausgabe[1] = DigitalAusgang;
  DeviceIoControl((void*)Datei, 0x08,
   Ausgabe, sizeof(Ausgabe), Eingabe, sizeof(Eingabe), &n, NULL);
  CloseHandle(Datei);
  return ((double)((Eingabe[2] << 2) + (Eingabe[4] & 3))) / 1023.;
  }
 return 0.;
 }
//---------------------------------------------------------------------------
double _fastcall USB_B_lesen(void) // liest Analogeingang B (von 0 bis 1)
 {
 Datei = CreateFile(USB_Dateiname, GENERIC_WRITE, FILE_SHARE_WRITE,
  NULL, OPEN_EXISTING, 0, 0);
 if(Datei != INVALID_HANDLE_VALUE)
  {
  Ausgabe[0] = 6;
  Ausgabe[1] = DigitalAusgang;
  DeviceIoControl((void*)Datei, 0x08,
   Ausgabe, sizeof(Ausgabe), Eingabe, sizeof(Eingabe), &n, NULL);
  CloseHandle(Datei);
  return ((double)((Eingabe[3] << 2) + (Eingabe[4] >> 4 & 3))) / 1023.;
  }
 return 0.;
 }
//---------------------------------------------------------------------------
unsigned char _fastcall USB_D_lesen(void) // liest 8 bit vom Digitaleingang
 {
 Datei = CreateFile(USB_Dateiname, GENERIC_WRITE, FILE_SHARE_WRITE,
  NULL, OPEN_EXISTING, 0, 0);
 if(Datei != INVALID_HANDLE_VALUE)
  {
  Ausgabe[0] = 6;
  Ausgabe[1] = DigitalAusgang;
  DeviceIoControl((void*)Datei, 0x08,
   Ausgabe, sizeof(Ausgabe), Eingabe, sizeof(Eingabe), &n, NULL);
  CloseHandle(Datei);
  return Eingabe[1];
  }
 return 0;
 }
//---------------------------------------------------------------------------
void _fastcall USB_D_schreiben(unsigned char Daten) // schreibt 8 bit
 // zum Digitalausgang
 {
 Datei = CreateFile(USB_Dateiname, GENERIC_WRITE, FILE_SHARE_WRITE,
  NULL, OPEN_EXISTING, 0, 0);
 if(Datei != INVALID_HANDLE_VALUE)
  {
  Ausgabe[0] = 6;
  Ausgabe[1] = DigitalAusgang = Daten;
  DeviceIoControl((void*)Datei, 0x08,
   Ausgabe, sizeof(Ausgabe), Eingabe, sizeof(Eingabe), &n, NULL);
  CloseHandle(Datei);
  }
 }
//---------------------------------------------------------------------------


Zurück zur Startseite der MB-News
Zurück zur Startseite AK-Modul-Bus