
Znaleziono 2 wyniki
Wróć do „Oprogramowanie LPT w DELPHI - Pomocy”
- 01 lut 2006, 23:03
- Forum: Ogólne Dyskusje na Temat Systemów Sterowania CNC
- Temat: Oprogramowanie LPT w DELPHI - Pomocy
- Odpowiedzi: 9
- Odsłony: 4391
- 09 wrz 2005, 20:25
- Forum: Ogólne Dyskusje na Temat Systemów Sterowania CNC
- Temat: Oprogramowanie LPT w DELPHI - Pomocy
- Odpowiedzi: 9
- Odsłony: 4391
Pod Delphi przetestowalem i biblioteke IOPort jak i inne ale z czystego lenistwa i niecheci do WIN XP napisalem w pracy magisterskiej ze wymaganym systemem jest win98 i sterowanie zrobilem na wstawkach ASM
jest to krotsza wersja 
a samo obracanie silnikami w moim programie wygladalo tak
Prace nad programikiem jednak ustaly po otrzymaniu zadawalajacej oceny z obrony
a teraz czekam az ruszy Open Sorsowy projekt 

Kod: Zaznacz cały
function PortWe(Adres : Word) : Byte;
Asm
mov DX,AX {ustawienie danych we właściwym miejscu}
in AL,DX {odczyt portu, w AL pojawi sie czytany bajt}
End;
procedure PortWy( Dane : Byte; Adres : Word);
//procedura wysyla na port o adresie ADRES dane zawarte w zmiennej DANE
Asm
out DX,AL
End;

a samo obracanie silnikami w moim programie wygladalo tak

Kod: Zaznacz cały
procedure Obracanie(kierunek_1 : Byte; kierunek_2 : Byte);
Var
DaneSilnik1, DaneSilnik2 : Word;
begin
DaneSilnik1 := 0;//sekwencja z pierwszego silnika
DaneSilnik2 := 0;//sekwencja z drugiego silnika
Dane := 0;//suma sekwencji wysylane na lpt
Silnik_1[1]:=1;
Silnik_1[2]:=3;
Silnik_1[3]:=2;
Silnik_1[4]:=6;
Silnik_1[5]:=4;
Silnik_1[6]:=12;
Silnik_1[7]:=8;
Silnik_1[8]:=9;
Silnik_2[1]:=16;
Silnik_2[2]:=48;
Silnik_2[3]:=32;
Silnik_2[4]:=96;
Silnik_2[5]:=64;
Silnik_2[6]:=192;
Silnik_2[7]:=128;
Silnik_2[8]:=144;
Case kierunek_1 of
0: Begin //zatrzymuje
DaneSilnik1 := 0;
End;
1: Begin //kreci w prawo
I_s1 := I_s1 + 1;
If (I_s1 > 8) then I_s1 := 1;
DaneSilnik1 := Silnik_1[I_s1];
End;
2: Begin //kreci w lewo
I_s1 := I_s1 - 1;
If (I_s1 < 1) then I_s1 := 8;
DaneSilnik1 := Silnik_1[I_s1];
End;
End;
Case kierunek_2 of
0: Begin //zatrzymuje
DaneSilnik2 := 0;
End;
1: Begin //kreci w prawo
I_s2 := I_s2 + 1;
If (I_s2 > 8) then I_s2 := 1;
DaneSilnik2 := Silnik_2[I_s2];
End;
2: Begin //kreci w lewo
I_s2 := I_s2 - 1;
If (I_s2 < 1) then I_s2 := 8;
DaneSilnik2 := Silnik_2[I_s2];
End;
End;
Dane := DaneSilnik1 + DaneSilnik2;
PortWy(Dane,888);
Delay(30);
end;

