Erfahrungen mit SMC 800???
Erfahrungen mit SMC 800???
Hallo,
ich habe mir bei einem Freund die Stepper-Karte SMC 800 ausgeliehen. Habe 2 Tandon KP4M2-203 Stepper und 24V bei 300mA drangeklemmt, aber nix geht.
Habt Ihr Erfahrungen mit der Karte gemacht???
Grüße Moritz
ich habe mir bei einem Freund die Stepper-Karte SMC 800 ausgeliehen. Habe 2 Tandon KP4M2-203 Stepper und 24V bei 300mA drangeklemmt, aber nix geht.
Habt Ihr Erfahrungen mit der Karte gemacht???
Grüße Moritz
- guido
- Beiträge: 6439
- Registriert: Do 20 Dez, 2001 12:00 pm
- Do you already have Laser-Equipment?: Easylase, Netlase, Laser von 1..15W.
Entwickler von Dynamics + Mamba X4 .
Lasershow Hard / Software . - Wohnort: 32469 Petershagen
- Kontaktdaten:
smc 800
hatte so ein teil mal vor einem jahr oder mehr..Kerschr....
Ansteuerung mit nix kompatibel , musst du selber was proggen.
Standartfreeware geht nicht. gehört aber ne DOS-Software dazu
(lag bei meiner mit bei )
vieleicht gibts die ja bei conrad noch
Ansteuerung mit nix kompatibel , musst du selber was proggen.
Standartfreeware geht nicht. gehört aber ne DOS-Software dazu
(lag bei meiner mit bei )
vieleicht gibts die ja bei conrad noch
Gruss
Guido
www.mylaserpage.de Dynamics Lasershowsoftware Dynamics Phototour
- Gewerbliches Mitglied -
Guido
www.mylaserpage.de Dynamics Lasershowsoftware Dynamics Phototour
- Gewerbliches Mitglied -
Hi Guido,
ich habe die Soft installiert (allerdings Dos-Box unter WinXP) und alles angeschlossen, aber das *** Ding geht nicht. Kann es sein, dass man das Tool wirklich unter real DOS laufen lassen muss? Also alten Rechner in den Keller schleppen?
Zur Kompatibilität: Die Treiber sind in C und in TurboPascal mit auf der Diskette(!). Hab aber von beiden Sprachen keine Ahnung
ich habe die Soft installiert (allerdings Dos-Box unter WinXP) und alles angeschlossen, aber das *** Ding geht nicht. Kann es sein, dass man das Tool wirklich unter real DOS laufen lassen muss? Also alten Rechner in den Keller schleppen?
Zur Kompatibilität: Die Treiber sind in C und in TurboPascal mit auf der Diskette(!). Hab aber von beiden Sprachen keine Ahnung

- tracky
- Beiträge: 4869
- Registriert: Di 11 Mär, 2003 1:51 pm
- Do you already have Laser-Equipment?: Hat sich im Laufe der Jahre doch einiges angesammelt
- Wohnort: Germany, Seefeld bei Werneuchen
- Kontaktdaten:
unter XP wird es wohl nicht gehen, da XP keine Hardwarezugriffe aus der "DOS Ebene" zulässt. Also bis ME sollte es aber noch gehen, ohne Garantie. Besorge Dir mal nen Emulator für 95/98 und führe den auf XP aus, das sollte auch gehen. Eventuell lassen sich die Adressen mit dem Patch von Guidos Popelscan überlisten. Frag mal bei ihm direkt an.
Gruß Sven
Laser? Was ist das? Licht aus super erschwinglichen Restbeständen
Laser? Was ist das? Licht aus super erschwinglichen Restbeständen
- guido
- Beiträge: 6439
- Registriert: Do 20 Dez, 2001 12:00 pm
- Do you already have Laser-Equipment?: Easylase, Netlase, Laser von 1..15W.
Entwickler von Dynamics + Mamba X4 .
Lasershow Hard / Software . - Wohnort: 32469 Petershagen
- Kontaktdaten:
unter dos
ich hab mal was geproggt aber noch zu "läuft nicht unter XP" zeiten.
war auch ziemlich simpel, nur bewegen, keine rampen, keine endschalter..
war der eigenbauversuch einer cnc fräse...endete als ebayartikel
war auch ziemlich simpel, nur bewegen, keine rampen, keine endschalter..
war der eigenbauversuch einer cnc fräse...endete als ebayartikel
Gruss
Guido
www.mylaserpage.de Dynamics Lasershowsoftware Dynamics Phototour
- Gewerbliches Mitglied -
Guido
www.mylaserpage.de Dynamics Lasershowsoftware Dynamics Phototour
- Gewerbliches Mitglied -
Guido, kennst Du Dich mit C++ aus?

Habe die kompletten Treiber für die Karte da. Müsste nur noch eine Oberfläche haben, mit der ich einfache Muster in das Format der Karte bringen kann. Vielleicht kannst Du mir ein paar Tipps geben??? Das wäre echt super
Übringens: Mit Win95 klappt die Karte hervorragend.


Habe die kompletten Treiber für die Karte da. Müsste nur noch eine Oberfläche haben, mit der ich einfache Muster in das Format der Karte bringen kann. Vielleicht kannst Du mir ein paar Tipps geben??? Das wäre echt super

Übringens: Mit Win95 klappt die Karte hervorragend.
- eiergeier
- Beiträge: 453
- Registriert: Mi 08 Nov, 2000 12:00 pm
- Do you already have Laser-Equipment?: ALLES UND NICHTS
- Wohnort: Österreich / Wien / Wien
- Kontaktdaten:
Hi
Habe die SMC 1500 mit der software PC-NC auf einem alten Laptop laufen (unter DOS) und betreibe damit meine CNC. bin eigentlich vom können der software und der karte sehr zufrieden.
es ist aber sinnvoll die karte auf 36 Volt umzubauen um die geschwindigkeit zu erhöhen (der hersteller sendet euch die daten auf anfrage)
Grüsse
Andi

Habe die SMC 1500 mit der software PC-NC auf einem alten Laptop laufen (unter DOS) und betreibe damit meine CNC. bin eigentlich vom können der software und der karte sehr zufrieden.
es ist aber sinnvoll die karte auf 36 Volt umzubauen um die geschwindigkeit zu erhöhen (der hersteller sendet euch die daten auf anfrage)

Grüsse
Andi

Gratis Downloads für ALLE -> http://www.derschatz.eu
-
- Beiträge: 2
- Registriert: Di 10 Jan, 2012 10:32 pm
- Do you already have Laser-Equipment?: no comment
Re: Erfahrungen mit SMC 800???
Hi
Ich habe auch die SMC 800 bestellt gehabt und wollte das Programm ändern, aber das geht ja nicht, weil es DOS-Befehle drin hat, die man nicht mehr compilen kann. Deswegen habe ich ein Programm erstellt. Es hat ganz einfach Befehle und damit geht es auf XP wunderbar =) Hier der Code (dll nicht vergessen im gleichen Ordner zu haben, wie die exe Datei):
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <sys/time.h>
#include <unistd.h>
#include <math.h>
// Definition der Veralteten inp() und outp() funktionen
typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
HINSTANCE hLib;
inpfuncPtr inp;
oupfuncPtr outp;
unsigned int _LPT;
unsigned char MptrX, MptrY;
int AbsPosX, AbsPosY;
unsigned char MOTTAB[8] = {0x27, 0x2D, 0x1C, 0x0D, 0x03, 0x09, 0x38, 0x29};
unsigned char STANDBY[8] = {0x37, 0x36, 0x1E, 0x16, 0x13, 0x12, 0x3A, 0x32};
unsigned char Next_Value;
bool pendown;
void SMC800setPort(unsigned int INport)
{
_LPT = INport;
}
void SMC800Delay(unsigned int steps)
{
unsigned int i = 0;
while (i < steps)
++i;
}
void SMC800Mout(unsigned char Out_Val) /* Portausgabe */
{
unsigned int _STB;
_STB = _LPT + 2;
outp(_LPT, Out_Val);
SMC800Delay(500000);
outp(_STB, 1);
outp(_STB, 0);
return;
}
void SMC800Pen_down(void)
{
if (!pendown)
{
unsigned char Next_Value;
Next_Value = 0x87;
Sleep(100);
SMC800Mout(Next_Value);
pendown = true;
Sleep(100);
}
return;
}
void SMC800Pen_up(void)
{
if (pendown)
{
unsigned char Next_Value;
Next_Value = 0x9B;
Sleep(100);
SMC800Mout(Next_Value);
pendown = false;
Sleep(100); /* Zeit: 196897 = 165 msec. */
return;
}
}
void SMC800MoveX(int steps)
{
if (steps != 0)
{
if (steps > 0)
{
for (int i = 0; i<steps;i++)
{
MptrX++;
if (MptrX > 7)
MptrX = 0;
Next_Value = MOTTAB[MptrX];
SMC800Mout(Next_Value);
AbsPosX++;
}
}
else
{
for (int i = 0; i>steps;i--)
{
MptrX--;
if (MptrX > 7)
MptrX = 7;
Next_Value = MOTTAB[MptrX];
SMC800Mout(Next_Value);
AbsPosX--;
}
}
}
}
void SMC800MoveY(int steps)
{
if (steps != 0)
{
if (steps > 0)
{
for (int i = 0; i<steps;i++)
{
MptrY++;
if (MptrY > 7)
MptrY = 0;
Next_Value = MOTTAB[MptrY] + 64;
SMC800Mout(Next_Value);
AbsPosY++;
}
}
else
{
for (int i = 0; i>steps;i--)
{
MptrY--;
if (MptrY > 7)
MptrY = 7;
Next_Value = MOTTAB[MptrY] + 64;
SMC800Mout(Next_Value);
AbsPosY--;
}
}
}
}
void SMC800Standby()
{
Next_Value = STANDBY[MptrX];
SMC800Mout(Next_Value);
Next_Value = STANDBY[MptrY] + 64;
SMC800Mout(Next_Value);
}
int SMC800initialize()
{
MptrX = 0;
MptrY = 0;
// Lade Dll um veraltete Funktionen zu ersetzen
hLib = LoadLibrary("inpout32.dll");
if (hLib == NULL) {
printf("LoadLibrary Failed.\n");
return -1;
}
inp = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if (inp == NULL) {
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}
outp = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (outp == NULL) {
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}
pendown = false;
SMC800Pen_up();
}
void SMC800Ref()
{
SMC800MoveX(-32);
Sleep(200);
SMC800MoveX(32);
SMC800MoveY(-32);
Sleep(200);
SMC800MoveY(32);
AbsPosX = 0;
AbsPosY = 0;
}
double distanceSquare(int x, int y)
{
return sqrt(x*x+y*y);
}
void SMC800GoTo(int absx, int absy)
{
int startx = AbsPosX;
int starty = AbsPosY;
while (absx != AbsPosX || absy != AbsPosY)
{
double tempdist, tempdist2, accdist;
double dist = 9999999;
int dircase = -1;
accdist = distanceSquare(absx-(AbsPosX),absy-AbsPosY);
tempdist2 = distanceSquare(absx-(AbsPosX+1),absy-AbsPosY);
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX+1),starty-AbsPosY);
if (tempdist < dist)
{
dist = tempdist;
dircase = 0;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX-1),absy-AbsPosY);
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX-1),starty-AbsPosY);
if (tempdist < dist)
{
dist = tempdist;
dircase = 1;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX),absy-(AbsPosY+1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX),starty-(AbsPosY+1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 2;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX),absy-(AbsPosY-1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX),starty-(AbsPosY-1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 3;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX+1),absy-(AbsPosY+1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX+1),starty-(AbsPosY+1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 4;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX-1),absy-(AbsPosY+1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX-1),starty-(AbsPosY+1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 5;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX+1),absy-(AbsPosY-1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX+1),starty-(AbsPosY-1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 6;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX-1),absy-(AbsPosY-1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX-1),starty-(AbsPosY-1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 7;
}
}
switch (dircase)
{
case 0:
SMC800MoveX(1);
break;
case 1:
SMC800MoveX(-1);
break;
case 2:
SMC800MoveY(1);
break;
case 3:
SMC800MoveY(-1);
break;
case 4:
SMC800MoveX(1);
SMC800MoveY(1);
break;
case 5:
SMC800MoveX(-1);
SMC800MoveY(1);
break;
case 6:
SMC800MoveX(1);
SMC800MoveY(-1);
break;
case 7:
SMC800MoveX(-1);
SMC800MoveY(-1);
break;
}
}
}
void SMC800GoToZero()
{
SMC800Pen_up();
SMC800GoTo(0,0);
}
Ich habe auch die SMC 800 bestellt gehabt und wollte das Programm ändern, aber das geht ja nicht, weil es DOS-Befehle drin hat, die man nicht mehr compilen kann. Deswegen habe ich ein Programm erstellt. Es hat ganz einfach Befehle und damit geht es auf XP wunderbar =) Hier der Code (dll nicht vergessen im gleichen Ordner zu haben, wie die exe Datei):
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <sys/time.h>
#include <unistd.h>
#include <math.h>
// Definition der Veralteten inp() und outp() funktionen
typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
HINSTANCE hLib;
inpfuncPtr inp;
oupfuncPtr outp;
unsigned int _LPT;
unsigned char MptrX, MptrY;
int AbsPosX, AbsPosY;
unsigned char MOTTAB[8] = {0x27, 0x2D, 0x1C, 0x0D, 0x03, 0x09, 0x38, 0x29};
unsigned char STANDBY[8] = {0x37, 0x36, 0x1E, 0x16, 0x13, 0x12, 0x3A, 0x32};
unsigned char Next_Value;
bool pendown;
void SMC800setPort(unsigned int INport)
{
_LPT = INport;
}
void SMC800Delay(unsigned int steps)
{
unsigned int i = 0;
while (i < steps)
++i;
}
void SMC800Mout(unsigned char Out_Val) /* Portausgabe */
{
unsigned int _STB;
_STB = _LPT + 2;
outp(_LPT, Out_Val);
SMC800Delay(500000);
outp(_STB, 1);
outp(_STB, 0);
return;
}
void SMC800Pen_down(void)
{
if (!pendown)
{
unsigned char Next_Value;
Next_Value = 0x87;
Sleep(100);
SMC800Mout(Next_Value);
pendown = true;
Sleep(100);
}
return;
}
void SMC800Pen_up(void)
{
if (pendown)
{
unsigned char Next_Value;
Next_Value = 0x9B;
Sleep(100);
SMC800Mout(Next_Value);
pendown = false;
Sleep(100); /* Zeit: 196897 = 165 msec. */
return;
}
}
void SMC800MoveX(int steps)
{
if (steps != 0)
{
if (steps > 0)
{
for (int i = 0; i<steps;i++)
{
MptrX++;
if (MptrX > 7)
MptrX = 0;
Next_Value = MOTTAB[MptrX];
SMC800Mout(Next_Value);
AbsPosX++;
}
}
else
{
for (int i = 0; i>steps;i--)
{
MptrX--;
if (MptrX > 7)
MptrX = 7;
Next_Value = MOTTAB[MptrX];
SMC800Mout(Next_Value);
AbsPosX--;
}
}
}
}
void SMC800MoveY(int steps)
{
if (steps != 0)
{
if (steps > 0)
{
for (int i = 0; i<steps;i++)
{
MptrY++;
if (MptrY > 7)
MptrY = 0;
Next_Value = MOTTAB[MptrY] + 64;
SMC800Mout(Next_Value);
AbsPosY++;
}
}
else
{
for (int i = 0; i>steps;i--)
{
MptrY--;
if (MptrY > 7)
MptrY = 7;
Next_Value = MOTTAB[MptrY] + 64;
SMC800Mout(Next_Value);
AbsPosY--;
}
}
}
}
void SMC800Standby()
{
Next_Value = STANDBY[MptrX];
SMC800Mout(Next_Value);
Next_Value = STANDBY[MptrY] + 64;
SMC800Mout(Next_Value);
}
int SMC800initialize()
{
MptrX = 0;
MptrY = 0;
// Lade Dll um veraltete Funktionen zu ersetzen
hLib = LoadLibrary("inpout32.dll");
if (hLib == NULL) {
printf("LoadLibrary Failed.\n");
return -1;
}
inp = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if (inp == NULL) {
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}
outp = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (outp == NULL) {
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}
pendown = false;
SMC800Pen_up();
}
void SMC800Ref()
{
SMC800MoveX(-32);
Sleep(200);
SMC800MoveX(32);
SMC800MoveY(-32);
Sleep(200);
SMC800MoveY(32);
AbsPosX = 0;
AbsPosY = 0;
}
double distanceSquare(int x, int y)
{
return sqrt(x*x+y*y);
}
void SMC800GoTo(int absx, int absy)
{
int startx = AbsPosX;
int starty = AbsPosY;
while (absx != AbsPosX || absy != AbsPosY)
{
double tempdist, tempdist2, accdist;
double dist = 9999999;
int dircase = -1;
accdist = distanceSquare(absx-(AbsPosX),absy-AbsPosY);
tempdist2 = distanceSquare(absx-(AbsPosX+1),absy-AbsPosY);
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX+1),starty-AbsPosY);
if (tempdist < dist)
{
dist = tempdist;
dircase = 0;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX-1),absy-AbsPosY);
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX-1),starty-AbsPosY);
if (tempdist < dist)
{
dist = tempdist;
dircase = 1;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX),absy-(AbsPosY+1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX),starty-(AbsPosY+1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 2;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX),absy-(AbsPosY-1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX),starty-(AbsPosY-1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 3;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX+1),absy-(AbsPosY+1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX+1),starty-(AbsPosY+1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 4;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX-1),absy-(AbsPosY+1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX-1),starty-(AbsPosY+1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 5;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX+1),absy-(AbsPosY-1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX+1),starty-(AbsPosY-1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 6;
}
}
tempdist2 = distanceSquare(absx-(AbsPosX-1),absy-(AbsPosY-1));
if (accdist > tempdist2)
{
tempdist = tempdist2+distanceSquare(startx-(AbsPosX-1),starty-(AbsPosY-1));
if (tempdist < dist)
{
dist = tempdist;
dircase = 7;
}
}
switch (dircase)
{
case 0:
SMC800MoveX(1);
break;
case 1:
SMC800MoveX(-1);
break;
case 2:
SMC800MoveY(1);
break;
case 3:
SMC800MoveY(-1);
break;
case 4:
SMC800MoveX(1);
SMC800MoveY(1);
break;
case 5:
SMC800MoveX(-1);
SMC800MoveY(1);
break;
case 6:
SMC800MoveX(1);
SMC800MoveY(-1);
break;
case 7:
SMC800MoveX(-1);
SMC800MoveY(-1);
break;
}
}
}
void SMC800GoToZero()
{
SMC800Pen_up();
SMC800GoTo(0,0);
}
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
- thomasf
- Beiträge: 1261
- Registriert: So 06 Okt, 2002 12:00 pm
- Do you already have Laser-Equipment?: YES
- Wohnort: Berlin
- Kontaktdaten:
Re: Erfahrungen mit SMC 800???
Hi,
deine bemühen in allen Ehren, aber das wird hier keiner mehr nutzen.
Thomas
deine bemühen in allen Ehren, aber das wird hier keiner mehr nutzen.
Thomas
Re: Erfahrungen mit SMC 800???
Ist das ein neuer Rekord in alte Sachen raus suchen und Antworten,
mit Knapp 8 (ACHT) Jahre ?????
mit Knapp 8 (ACHT) Jahre ?????
Ciao!
Gooseman
Gooseman
-
- Beiträge: 2
- Registriert: Di 10 Jan, 2012 10:32 pm
- Do you already have Laser-Equipment?: no comment
Re: Erfahrungen mit SMC 800???
Hehe, ich musste doch, wenn ich mir die Mühe schon machte, meine Arbeit auch online stellen 

Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast