///////////////////////////////////////////////////////////
//
//	BEISPIEL.EXE
//
//	Dieses Programm zeigt, wie die Funktionen aus der DLL
//	KOLTER.DLL angesprochen werden. Dieses Beispiel ist nur
//	unter Windows 95/98 lauffähig.
//
//	copyright 1999 by Kolter Electronic
//  geprüft am 27.06.1999 / ko.
//
///////////////////////////////////////////////////////////

//
//	Include
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "..\include\kolter.h"

// verwendete Variablen
// Konstante für 1 digit (LSB) in Volt
const double mvd = 0.0003051804379;	
double	volt;

///////////////////////////////////////////////////////////
//
//	M A I N
//
///////////////////////////////////////////////////////////

void __cdecl main (void)
{
UINT16 Adresse = 0x6500L;	// Absolut-Karten I/O-Adresse angeben
							// kann mit PCI-INF.EXE gelesen werden
UINT8 Wert = 1;

//
// Beispiel-Code für PCI1616, OPTO-PCI und PCI-OPTOREL mit KOLTER.DLL
//
// Ausgabe über DLL
Wert = 0;
Out_KOLTER(Adresse+0, Wert);		// bit 0..7  schreiben
Wert = 255;
Out_KOLTER(Adresse+1, Wert);		// bit 8..15 schreiben
//
// Einlesen über DLL
Wert = Inp_KOLTER(Adresse+4);		// bit 0..7  lesen
printf("I/O-Adresse 0x%x enthaelt den Wert 0x%x\n", Adresse+4, Wert);
//
Wert = Inp_KOLTER(Adresse+5);		// bit 8..15 lesen
printf("I/O-Adresse 0x%x enthaelt den Wert 0x%x\n", Adresse+5, Wert);
Sleep(2000);
//

//
// Beispiel-Code für pci-ad und pci-adda Wandlerkarte:
//
// TTL-Digital-bit von pci-ad setzen
set_pcido (Adresse,0x01);

// TTL-Digital-bit von pci-ad lesen
Wert = get_pcidi (Adresse);
printf("Wert von TTL-Input = 0x%x \n", Wert);
Sleep(2000);

// D/A-Wandler auf pci-adda programmieren
// --------------------------------
//	DATA :   D15................D0
// +10 Volt = xxxx 1111 1111 1111
//   0 Volt = xxxx 1000 0000 0000
// -10 Volt = xxxx 0000 0000 0000
//            high-byte  low-byte
// --------------------------------
// set DAC auf + 10.000 Volt
set_pcidac1 (Adresse, 255, 15);
// set DAC auf + 5.000 Volt
set_pcidac2 (Adresse,   0, 12);
// set DAC auf - 5.000 Volt
set_pcidac3 (Adresse,   0,  4);
// set DAC auf - 10.000 Volt
set_pcidac4 (Adresse,   0,  0);

//
// A/D-Wandler lesen:
while (!kbhit()) {
	printf("\n\n");
	
	// I/O-Adresse anzeigen
	printf("I/O-Adresse = 0x%x \n", Adresse);
	
	// jetzt pci-ad auslesen
	// berechne für +/- 10 Volt
	volt= (get_pciad1(Adresse, 0)* mvd) -10; printf("Kanal  0 = %3.3f Volt \n",volt);
	volt= (get_pciad1(Adresse, 1)* mvd) -10; printf("Kanal  1 = %3.3f Volt \n",volt);
	volt= (get_pciad1(Adresse, 2)* mvd) -10; printf("Kanal  2 = %3.3f Volt \n",volt);
	volt= (get_pciad1(0x6500L, 3)* mvd) -10; printf("Kanal  3 = %3.3f Volt \n",volt);
	volt= (get_pciad1(0x6500L, 4)* mvd) -10; printf("Kanal  4 = %3.3f Volt \n",volt);
	volt= (get_pciad1(Adresse, 5)* mvd) -10; printf("Kanal  5 = %3.3f Volt \n",volt);
	volt= (get_pciad1(Adresse, 6)* mvd) -10; printf("Kanal  6 = %3.3f Volt \n",volt);
	volt= (get_pciad1(Adresse, 7)* mvd) -10; printf("Kanal  7 = %3.3f Volt \n",volt);
	volt= (get_pciad1(0x6500L, 8)* mvd) -10; printf("Kanal  8 = %3.3f Volt \n",volt);
	volt= (get_pciad1(0x6500L, 9)* mvd) -10; printf("Kanal  9 = %3.3f Volt \n",volt);
	volt= (get_pciad1(Adresse,10)* mvd) -10; printf("Kanal 10 = %3.3f Volt \n",volt);
	volt= (get_pciad1(Adresse,11)* mvd) -10; printf("Kanal 11 = %3.3f Volt \n",volt);
	volt= (get_pciad1(Adresse,12)* mvd) -10; printf("Kanal 12 = %3.3f Volt \n",volt);
	volt= (get_pciad1(0x6500L,13)* mvd) -10; printf("Kanal 13 = %3.3f Volt \n",volt);
	volt= (get_pciad1(0x6500L,14)* mvd) -10; printf("Kanal 14 = %3.3f Volt \n",volt);
	volt= (get_pciad1(0x6500L,15)* mvd) -10; printf("Kanal 15 = %3.3f Volt \n",volt);
	
	// warten
	Sleep(2000);
	}
}

