Znaleziono 2 wyniki

autor: vegelus
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

są różne darmowe komponenty do obsługi LPT z pod wszystkich WIN ale pomyślałem, że jak praca naukowa to niech będzie naukowo ;)
autor: vegelus
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 :-)

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; 
jest to krotsza wersja :-)
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; 
Prace nad programikiem jednak ustaly po otrzymaniu zadawalajacej oceny z obrony :-) a teraz czekam az ruszy Open Sorsowy projekt :-)

Wróć do „Oprogramowanie LPT w DELPHI - Pomocy”