(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