Hier mein programm:

Code:
// Impulsgeber für CNC-Fräse, Version Alpha 1.2, ACHTUNG: UNGETESTET!!!

// by AlKi ausm RN


#include <iostream>
#include <stdio.h> // required for printf, getch
#include <conio.h> // required for _outp, _inp
#include <dos.h>
#include <windows.h>
#include <time.h>
// viel zu viele header, aber die stören ja nicht.....

#define Data 0x378
#define loadlib


typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

void lib_laden();
void lib_schliessen();

HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;


using namespace std;

long int _a=0, _b=0, _c=0, _x=0, _y=0, _z=0;  // Variablen eingeführt
int i=378;

void lib_laden () 
{
hLib = LoadLibrary("inpout32.dll");
inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (hLib == NULL || inp32 == NULL || oup32 == NULL)  { cout << " Fehler beim Laden von inpout32.dll " << '\n'; }/*** ERROR ***/
}


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

int main()

{
    
    while(true)
    {

        
        cout << " Zuerst wird in der X, dann in der Y und dann in der Z-Achse verfahren " << '\n';
        cout << " X ist die Bewegung in die Tiefe " << '\n';
        cout << " Y ist die vertikale Bewegung " << '\n';
        cout << " Z ist die horizontale Bewegung " << '\n' << '\n';
        
        cout << " Versatz in Richtung der X-Achse eingeben (in die Tiefe) " << '\n';
        cout << " Wenn nach hinten, dann negative Zahl eingeben " << '\n' ;
        cout << " (falls nicht vorhanden 0 eingeben) " << '\n';
        cin  >> _x;
        cout << '\n' << '\n' << '\n';
        
        cout << " Versatz in Richtung der Y-Achse eingeben (Horizontal) " << '\n';
        cout << " Wenn nach links (Rechts, kA) dann negative Zahl eingeben " << '\n';
        cout << " (falls nicht vorhanden 0 eingeben) " << '\n';
        cin  >> _y;
        cout << '\n' << '\n' << '\n';
               
        cout << " Versatz in Richtung der Z-Achse eingeben (Vertikal) "  << '\n';
        cout << " Wenn nach unten, negative Zahl eingeben " <<'\n';
        cout << " (falls nicht vorhanden 0 eingeben) " << '\n';
        cin  >>  _z;
        cout << '\n' << '\n' << '\n';
        
        // jetzt haben wir schonmal die Daten zum Bearbeiten
        
        
        if (_x>0)
        {
            if (_x<2147483640)
            {
                
                while (_a<_x)
                   {
                       (oup32)(i,0x1); // 1 = pin D0 an ( 1 = 1 )
                       Sleep(2);
                       (oup32)(i,0x0); // 0 = alle Pins aus
                       Sleep(2);
                       _a++;
                   }    
        
        
            }        
            if (_x>2147483640)
            {
                cout << " !!! Zahl fuer X zu groß !!! " << '\n';
            }    
           
        }
        
        
        if ( _x < 0 )
        {
            
            if (_x > -2147483640)
            {          
                while (_x<_a)
                {
                    (oup32)(i,0x3); // 3 = pin D0 + Pin D1 an ( 3 = 1 + 2)
                    Sleep(2);
                    (oup32)(i,0x0); // 0 = alle Pins aus
                    Sleep(2);
                    _a--;
                }    
            
            } 
             
            
            
            
            if (_x < -2147483640)
            {
                cout << " !!! Zahl fuer X zu klein !!! " << '\n';
            }    
        }         
        
        if ( _x = 0 )
        { }
        
               
        cout << " X-Achse bearbeitet " << '\n';
                
    // nun zur Y-Achse
    
    
        if (_y > 0 )
        {
            if (_y < 2147483640)
            {
                
                while (_b < _y)
                   {
                       (oup32)(i,0x4); // 4 = Pin D2 an ( 4 = 4 )
                       Sleep(2);
                       (oup32)(i,0x0); // 0 = alle Pins aus
                       Sleep(2);
                       (_b) = (_b+1);
                   }    
            }    
        
            
            if (_y > 2147483640)
            {
                cout << " !!! Zahl fuer Y zu groß !!! " << '\n';
            }    
           
        }
        
        
        if (_y < 0)
        {
            
            if (_y > -2147483640)
            {           
                while (_y < _b)
                {
                    (oup32)(i,0x12); // 12 = Pin D2 + D3 ( 12 = 4 + 8)
                    Sleep(2);
                    (oup32)(i,0x0); // 0 = alle Pins aus
                    Sleep(2);
                    (_b) = (_b-1);
                }    
            
            }    
            
            
            
            if (_y < -2147483640)
            {
                cout << " !!! Zahl fuer Y zu klein !!! " << '\n';
            }    
        }
               
        if (_y = 0)
        {
        }
                
        cout << " Y-Achse bearbeitet " << '\n';
                
    // nun zur Z-Achse
        
        
        if (_z > 0 )
        {
            if (_z < 2147483640)
            {
                
                while (_c < _z)
                   {
                    (oup32)(i,0x16); // 16 = Pin D4 an ( 16 = 16 )
                    Sleep(2);
                    (oup32)(i,0x0); // 0 = alle Pins aus
                    Sleep(2);
                       (_c) = (_c+1);
                   }    
        
            }    
            
            if (_z > 2147483640)
            {
                cout << " !!! Zahl fuer Z zu groß !!! " << '\n';
            }    
           
        }
        
        
        if (_z < 0)
        {
            
            if (_z > -2147483640)
            {            
                while (_z < _c)
                {
                    (oup32)(i,0x48); // 48 = Pin D4 + D5 ( 48 = 16 + 32)
                    Sleep(2);
                    (oup32)(i,0x0); // 0 = alle Pins aus
                    Sleep(2);
                    (_c) = (_c-1);
                }    
            
            }    
            
            
            
            if (_z < -2147483640)
            {
                cout << " !!! Zahl fuer Z zu klein !!! " << '\n';
            }
            
        } 
        
       
        
        if (_z = 0)
        {
        }
        
         
        // jetzt wurde Z bearbeitet
                   
        
           cout << " Z-Achse bearbeitet " << '\n' << '\n';                 
           cout << " Jetzt sollten sämtliche Operationen ausgeführt worden sein ";
           cout << '\n' << '\n' << '\n' << '\n' << '\n';
           
           _a=0;
           _b=0;
           _c=0;
           
                
    }
}    

    //-------------------------------------------------------------------------
    
void lib_schliessen()
{
FreeLibrary(hLib);
}
und des hier is nommal verbessert, der compiler muckt zumindest nicht mehr...........