Sterowniem LPT a wątpliwej klasy programista ? (delphi)

0

Siema,
Potrzebuję zrobić 8 portowy sterownik LPT... Czes elektroniczna N/P [diabel]

Ale programistyczna... Chlip.... Chlip

Pomóżcie... chodzi o pocje wlaczy wylacz... byt 1 wlacz napiecie wylacz....

I tak 8 bitami...
Znaczy pinami...

Delphi Windows XP... Mam gdzieś na jakimś CDku albo DVD kraka który umożliwia sterowanie LPT w XP... bo trzeba go odblokować...

Pomóżcie... Biblioteke oraz opcje jak tam zmienic stan...
Pomocy... Toważysze Ratujcie.....

0

Witam.

Problem raczej lenistwa niz bycia watpliwej klasy programista :) W serwisie 4P mozna znalezc kilka artykulow o sterowaniu LPT
Zerknij tez tutaj:
http://www.specosoft.com/en/zlportio.html

Pozdrawiam.

0

I dalej G***o wiem :/

Na VB umiałem to...

0

Ale w czym problem? .. Szukałeś w ogóle jakieś komponenty do sterowania LPT? .. zainstalować coś chociaż? .. nie wydaje mi się.

0

Oczywiście że nie zainstalowałem... a co miałęm zainstalować... Painta ?
Bez jaj ludzie trzeba wytlumaczyć...

Gosciu mi kiedys tlumaczyl dla VB..

4 linijki textu + biblioteka bo tak tam dla VB to wygladalo taki pliczek...
I po przeczytaniu tego... po 2 minutach bez zadnych komentarzy pomijajac dziekuje napisalem sterownik dla 8 pinów....

Tyle ze wytlumaczyl prosze weź zainstaluj to...
TAk sie nadaje do 1 analogicznie do reszty...
Tak sei gasi... analogicznie do reszty..
I dziekuje... 4 linijki textu wyszly + zalacnzik...

0

Sterowanie portem LPT w windows 95/98 nie jest wielkim problemem. Kilka linijek w asemblerze. Problem jednak pojawia sie w windows 2000/XP. Ponieważ systemy te blokują dostęp do portów LPT i COM. Oczywiście można to obejść, ale jest to bardziej skomplikowane i potrzeba więcej czasu. W necie jest masa przyklądowych programików do sterowania portem LPT z windowsa 95/98

0

czy za pomoca LPT daloby rade jakos serowac wiecej niz 8 portów? tzn ktoryś jeszce jakos dodatkowo użyć?

0

Możesz użyc jeszcze min. 4 wyprowadzeń (m.in. STROBE, AUTO F). Możesz zastosować rejestr zatrzaskowy typu 74HCT373 i jakiś demultiplekser i w prosty sposób sterować 8*(2^4) wyprowadzeń I/O

0

Jak zwykle kupa odpowiedzi, każdy swoje mądrości dokłada, na stęka się, ale założę się, że żaden początkujący programista lub też autor tego tematu nic z tego nie zrobi. Teraz i w przyszłości siada sobie jakiś koleś i szuka na forum. Załużmy, że trafia na ten temat, idealnie pasujący do jego problemu. I co się naczyta ? "Szukaj na forum", albo że "już było", albo że "szkoda słów" i tak z 10 postów. Ja jak czegoś szukam, to 99% takich postów znajduję. Aż się szukać odechciewa. Więc proponuję albo od razu wywalać takie tematy, żeby wyszukiwarka później nie znajdowała pare tysięcy odpowiedzi a wśród nich z jednej może dwóch można się czegoś dowiedzieć, bo pozostałe są albo niczym, albo tak tajemnicze, że tylko profesjonalista może coś z tego się dowiedzieć, a tacy z kolei, to sami wiedzą i nie szukają na forum. Pisanie odpowiedzi, że "było już", "szujak na forum albo google" wg mnie jest śmieszne i tylko na darmo zajmuje tylko KB serwera tego forum. Jak wiesz, to pisz, jak nie, albo Ci się nie chce, to w ogóle się nie odzywaj. Już chyba wszystko było na tym forum, także nie trzeba pisać, że było, bo każdy o tym doskonale wie. Tak jak ten temat był, ale nic w nim nie ma. Starczy tych wypocin i konkretnie:

  1. Na początek odpalasz Delphi np. 7 - Otworzy Ci się Formatka i okno tekstowe.
  2. Deklarujesz port, którym chcesz sterować w tym celu np. na końcu programu w oknie takstowym tuż nad
end. 

wstawiasz:

initialization
  LPT:=$378;
  1. Jeżeli chcesz sterować pod XP, to nad słowem
var

wstawiasz taką procedurę:

procedure ZapiszLPT(Addr: Word; Value:Byte); stdcall;
external 'inpout32.dll' name 'Out32';
  1. Następnie pod
implementation

i tymi zielonymi znaczkami wklejasz coś takiego:

///##### Wysylanie danych portem danych #####///
procedure LptData(a:byte);
  begin
    ZapiszLPT(LPT,a);
  end;

///##### Wysylanie danych portem sterujacym #####///
procedure LptControl(b:byte);
  begin
    ZapiszLPT(LPT+2,b);
  end;
  1. Na formatkę wrzucasz jakiś przycisk Button
  2. Klikasz na nim dwa razy i wpisujesz taki kod:

pomiędzy

procedure TForm1.Button1Click(Sender: TObject);
begin

a <delph>end;</delphi>

  
LptData(x);
LptControl(y);

gdzie x i y są to wartości od 0 do 255. Wpisujesz wartości dziesiętne, a na porcie pojawiają się binarne. Wpisanie np. LptData(32) spowoduje zaświecenie 5 bitu na porcie danych, czyli 00100000. Podobnie jest z portem kontrolnym, tyle że bity 0, 2 i 3 są zanegowane.

Na temat gdzie, co i jak podłączać możesz znaleźć tu: http://www.lpt.strona.pl/#download Przed uruchomieniem programu do katalogu w którym zapiszesz go musisz wrzucić ten plik dll. Potrzebny jest do komunikacji pod XP. Możesz se go szarpnąć stąd: http://www.lpt.strona.pl/inpout32.dll

Jeżeli ktoś chce sterować więcej niż 8 linii, mozna w taki sposób rozbudować układ:

Opis ten dotyczy połączenie 16 układów po 8 linii każdy, czyli daje to możliwośc niezależnego sterowania 128 urządzeniami. Oczywiście można bez problemu zmniejszyć ilość układów i wyjść (zmniejszy to koszty). Można też zwiękrzyć, (kwestia demultiplekserów - gdyby udało się kupić gotowy demult. 8we i 256wy, to możnaby było sterować 256 układami po 8 linii każdy, czyli 2048 urządzeń, ale zawsze można zmontować z kilku taki demultip.)

Bierzesz 16 układy 74HCT573 (w hurtowni około 59gr sztuka), lub też jak kolega Qyon wsponiał 74HC373, oraz demultiplekser np. 74HC4514, które maja 4we i 16wy, (nie wiem tylko, czy nie trzebby było wyjścia zanegować) łączysz odpowiednio wszystkow wejścia ukł. 573 ze sobą i podłączasz je do LPT D0...D7. Następnie wejścia LE (Latch Enabled) układów 573 łączymy kolejno do 16 wyjsć układów 514. Potrzebny jest jeszcze jeden układ 573, którego wejście również łączymy do LPT, a wyjście do 4 wejść demultipleksera. Wykorzystujemy dodatkowo 2 linie sterujące portu LPT, z czego jedna załącza pojedynczy układ 573, a druga pozostałe 16 układów. (Całosć wygląda tak jak sterowanie kilkoma wyświetlaczami LED za pomocą mikroprocesora.)
Pisząc program odpalamy linie sterującą i podajemy wartość na port danych (z zakresu 0 do 15 - 4 linie) np.12 , czyli uruchom urządenie układ 573 nr 12, a następnie przełączamy linie strującą na pozostałe układy i linią danych wysyłamy informacje na układ nr 12. Całość działa w pętli i odbywa się błyskawicznie.

Jeżeli coś jest nie jasne, albo nie tak, to piszcie. Mogę podesłać schematy jak to podłaczyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1