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...........
Lesezeichen