Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Schrittmotor und LCD ansteuern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
11.03.2008, 15:27 Uhr
dorfkind



Hallo,

ich bin Anfänger in Sachen C bzw C++. Allerdings habe ich mir als Aufgabe gesetzt, einen Schrittmotor (SM 42051) und Ein LC-Display ansteuern.
Ich programmiere mit Dev-Cpp 4.9.9.2 und Windows 98.
Hat jemand funktionierende Quellcodes für mich?
Bin für jede Hilfe dankbar.

Gruß Dorfkind
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.03.2008, 16:29 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Hat jemand funktionierende Quellcodes für mich?


Nein


Zitat:

Bin für jede Hilfe dankbar.


An welcher Stelle genau hakt es denn?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
11.03.2008, 16:54 Uhr
dorfkind



#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MSG msg;
HWND hWnd;
WNDCLASS wc;

const char szAppName[] = "Windows Buttons";

wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hInstance = hInstance;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = szAppName;
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW;

RegisterClass(&wc);

hWnd = CreateWindow( szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);

ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);

while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{



static HWND Button1;


switch (message)
{
case WM_CREATE:
{

Button1 = CreateWindow( "button",
"Schrittmotor",
WS_CHILD | WS_VISIBLE,
0, 0, 0, 0,
hWnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
return 0;
}
case WM_SIZE:
{


MoveWindow(Button1, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 30,
160, 22, TRUE);

return 0;
}


case WM_COMMAND:
{
if (lParam == (LPARAM)Button1)
{
if (HIWORD(wParam) == BN_CLICKED)

system("cls");
gotoxy(30,5);
printf("Schrittmotor-Steuerung");
b[1]=9;b[2]=5;b[3]=6;b[4]=10;
i=0;
while(1)
{
gotoxy(15,7);
printf("Gewünschte Drehrichtung:r(echts),(l)inks eingeben:");
char Richtig;
gotoxy(25,8);
printf("Gewünschte Drehzahl: ");
scanf("%i",&Drehz);
if(Richtig=='r')
for (j=1;j<=48*Drehz;j++)
{
i++;
if(i==5)
i=1;
_outp(Par_Sst, b[i]);
sleep(10);
}
if(Richtig=='l')
for (j=1;j<=48*Drehz;j++)
{
i--;
if(i<=0)
i=4;
_outp(Par_Sst,b[i]);
sleep(10);
}

return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
}

Fehlermeldungen:
CDev-Cpp\Templates\schrittmotor.c In function `WndProc':
94 CDev-Cpp\Templates\schrittmotor.c `b' undeclared (first use in this function)
(Each undeclared identifier is reported only once
for each function it appears in.)
95 CDev-Cpp\Templates\schrittmotor.c `i' undeclared (first use in this function)
103 CDev-Cpp\Templates\schrittmotor.c `Drehz' undeclared (first use in this function)
105 CDev-Cpp\Templates\schrittmotor.c `j' undeclared (first use in this function)
110 CDev-Cpp\Templates\schrittmotor.c `Par_Sst' undeclared (first use in this function)
132 CDev-Cpp\Templates\schrittmotor.c syntax error at end of input


-------

Beim LCD wäre ich fürn denkanstoß dankbar. Habe keine Ahnung wie ich anfangen soll
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
11.03.2008, 17:03 Uhr
xXx
Devil


Tja das passiert bei Copy & Past. Du hast Consolen-Teile mit Fenster-Teilen vermischt. Das heut nich hin. Dann sind da undefininierte Variablen usw.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
11.03.2008, 17:52 Uhr
dorfkind



Welche habe ich denn vertauscht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.03.2008, 19:40 Uhr
xXx
Devil


z.B. wo öffnest du die Console um per printf etwas darin auszugeben? Nirgendwo. gotoxy gibt es demnach auch nicht. Nimm statt printf einfach TextOut und für gotoxy wäre MoveTo ein Ersatz. Im Prinzip kannst du den kompletten Teil hier umschreiben:

C++:
system("cls"); /* InvalidateRect(hWnd, NULL, TRUE); */
gotoxy(30,5); /* TextOut(hDC, 30, 4, "Schrittmotor-Steuerung" ...); */
printf("Schrittmotor-Steuerung");
b[1]=9; b[2]=5; b[3]=6; b[4]=10; /* wo defininierst du b? (vllt. unsigned int b[] = {9, 5, 6, 10 }; ) */
i=0; /* und was ist i? Der Typ fehlt! Wahrscheinlich int (da du einmal -1, sonst max +5 hast auch char) */
while(1)
{
    gotoxy(15,7); /* Benutzereingabe per EditBox einlesen */
    printf("Gewünschte Drehrichtung: r(echts), (l)inks eingeben:");
    char Richtig;
    /* musst auch die Richtung einlesen!
    gotoxy(25,8); /* Benutzereingabe per EditBox einlesen */

    printf("Gewünschte Drehzahl: ");
    scanf("%i", &Drehz); /* wo hast du Drehz definiert? */
    if (Richtig == 'r') /* und wo ließt du für Richtig einen Wert ein? */
        for (j = 1; j <= (48 * Drehz); ++j) /* und was ist j? der type fehlt auch hier! */
        {
            if(++i == 5)
                i = 1;
            
            _outp(Par_Sst, b[i]);
            Sleep(10);
        }
    else if (Richtig == 'l')
        for (j = 1; j <= (48*Drehz); ++j)
        {
            if (--i <= 0)
                i = 4;
            _outp(Par_Sst,b[i]);
           Sleep(10);
        }
}
Bist du dir denn sicher, dass du da das richtige machst? mit _outp muss man etwas vorsichtig umgehen...

SM 42051 meint diesen? Sehe da keine direkte Möglichkeit den PC anzusprechen?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.03.2008, 19:59 Uhr
dorfkind



ja, den habe ich. habe allerdings eine platine dazwischen, die smc 800 von conrad.
gibt es denn eine andere möglichkeit einen schrittmotor anzusteuern?
danke schonmal für die tips.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.03.2008, 20:47 Uhr
xXx
Devil


Ich find keinen SMC 800 bei www.conrad.de ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.03.2008, 21:34 Uhr
dorfkind



gibt es wohl bei conrad net mehr...
www.emisgmbh.de/smc800.htm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
11.03.2008, 21:49 Uhr
xXx
Devil


da hast du doch die passenden programme zum ansteuern usw. dabei?!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: