Napisz własny program


Napisz własny program

Opiszę jak wysłać i odebrać sygnał z LPT (oraz innych portów) w Visual Basic używając biblioteki inpout32.dll [ściągnij].
Postaram się zrobić to w przystępny sposób, ale mimo tego jest wymagana chociaż niewielka umiejętność programowania w Visual Basic. (Jeśli chcesz umieć programować porty, to najpierw naucz się w ogóle programować...) Z własnego doświadczenia wiem, że początki są najtrudniejsze, więc nie będę opisywał tworzenia skomplikowanego programu, tylko pokażę jak po naciśnięciu przycisku zapalić lub zgasić diodę oraz jak odpowiednio łącząc styki na LPT wykonać procedurę przez program.

Na samym dole są kody źródłowe innych języków programowania.

Visual Basic

Oczywiście najpierw skopiuj plik inpout32.dll do katalogu systemowego.
Po otwarciu nowego projektu (Standard EXE) dodaj nowy moduł (Project => Add Module). Wpisz do nowootwartego okna poniższy kod, który umożliwi "komunikację" z inpout32.dll:

Public Declare Function Inp Lib "inpout32.dll" _
Alias "Inp32" (ByVal PortAddress As Integer) As Integer
Public Declare Sub Out Lib "inpout32.dll" _
Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

Możesz teraz w programie korzystać z funkcji Out do wysłania danych i Inp do odebrania danych z portu.

Teraz warto zdeklarować stałą, która będzie zawierała adres naszego portu, który będzie potrzebny podczas każdego wywołania procedury Inp lub Out. Przejdź do podglądu kodu Form1 (lub jak tam nazwałeś program). W General Declarations wpisz:

Option Explicit
Const PORT = &H378 'NUMER TWOJEGO PORTU (przed numerem trzeba podać "&H")


Dalszy opis dotyczy tylko LPT, ale w przypadku innych portów robi się analogicznie.

Wysłanie sygnału

Teraz dodaj pole tekstowe (Text1) i przycisk (Command1). Będziesz wpisywać liczbę z przedziału 0-255 i po naciśnięciu przycisku zostanie wysłana do LPT. Procedura wygląda tak:

Private Sub Command1_Click()
Out PORT, Text1.Text
End Sub

Możesz teraz pokombinować z liczbami 0-255 i sprawdzić, czy diody zapalają się i gasną.

Zakładam, że diody są podłączone do D0-D7 (czyli piny 2-9) - tak jest zdecydowanie łatwiej niż jakkolwiek inaczej. Jeśli nie wiesz, jaka liczba odpowiada jakiej kombinacji, jest prosty sposób, żeby to sprawdzić:
Kombinacja diód D0-D7 (system dwójkowy) odpowiada liczbie wpisanej do pola Text1. Już tłumaczę ... Załóżmy, że podłączyłeś diodę do pinu 4 (dioda na trzecim miejscu). Chcesz, żeby dioda na 3. miejscu zapaliła się, a pozostałe nie. Taka kombinacja odpowiada liczbie 00000100 w systemie binarnym (1-dioda świeci się, 0-nie świeci się), ale ...
UWAGA: Liczbę w systemie dwójkowym trzeba odwrócić. U nas jedynka ma być na 3. miejscu od lewej, więc kod binarny pownien mieć jedynką na pozycji trzeciej od końca (pamiętaj, że koniec jest na ósmej pozycji). Na przykład dla diody na 1. i 5. pozycji otrzymamy 10001000, a odwracając to: 00010001. Z pomocą przychodzi czasem niedoceniany Windowsowy Kalkulator. Wybierz Widok Zaawansowany (lub Naukowy - zależy od wersji), zaznacz pole Bin i wpisz liczbę 100 (zera na początku można pominąć). Potem zmień na Dec i odczytaną liczbę (tu 4) wpisz do programu. Zapali się trzecia dioda.

Odebranie sygnału

Do tego samego formularza dodaj kolejne pole tekstowe (Text2) i przycisk (Command2). Procedura jest następująca:

Private Sub Command2_Click()
Text2.Text = Inp(PORT + 1) 'PORT+1, bo dane odbieramy z adresu
                           'o 1 większego niż zdeklarowany na początku (to wynika z budowy LPT)

End Sub

Jeśli teraz klikniesz na Przycisk2 to w drugim polu tekstowym pojawi się liczba 120 (tak jest u mnie, ale wydaje mi się, że raczej inna nie będzie). Jeśli teraz połączysz metalową obudowę wtyczki LPT (minus), to pinem wejścia (plus), na przykład 10 (może być również 11, 12, 13, 32) i znowu wciśniesz przycisk, to liczba zmieni się na 88. Możesz teraz połączyć inny pin - pojawi się inna liczba. Można stosować rożne kombinacje - np. 12 i 13 - za każdym razem liczba jest inna. Teraz wystarczy napisać procedurę, która będzie wykonywała jakieś polecenie w przypadku pojawienia się danej liczby. Warto użyć do tego Timera - program cały czas będzie monitorował stan potru.

Jak widać kodu jest niewiele. Teraz wystarczy uruchomić swoją wyobraźnię i napisać dowolny program do obsługi dowolnego urządzenia sterowanego dowolnym portem.

Jeśli nie umiesz programować i nie rozumiesz tego tekstu, to odsyłam do stron temu poświęconych. Wystarczy w Google.pl wpisać "Visual Basic".

Kod źródłowy testowego programu (tego co opisałem) znajduje się tu: [ściągnij - 2 KB]

Na koniec powiem jeszcze jaka jest różnica między opisanym programowaniem LPT, a innymi portami:
- Jest inny adres portu i cały czas jest taki sam (nie ma przesunięcia typu &H378 + 1)
- Wysyłamy na port inne liczby (jest ich mniej).
- Nie można obliczyć jaką liczbę trzeba wysłać, żeby zapalić daną diodę - po prostu trzeba pokombinować.
[na górę strony]

Pozostałe języki programowania

Borland Delphi
Pod Windows 98 (czyli pewnie 95, 98SE, Me też) wszystko działa. Aplikacja przeze mnie napisana nie działa pod WinXP. W Win98 użyłem do wysyłania danych do LPT modułu WinLpt. [ściągnij | zobacz]
Możesz również pobrać ten kod źródłowy programu w Delphi. To jest bardzo prosta aplikacja, która wykorzystując moduł WinLpt zapisuje dane lub odczytuje z LPT. [ściągnij - 185 KB]

Visual C++
Nie zajmowałem się jeszcze programowaniem w C i VC++.
Mimo tego możesz ściągnąć kod źródłowy programu w VC++ [ściągnij - 4 KB] oraz kod w C do obsługi modułu inpout32.dll [zobacz] - czyli zapewne nie będzie problemów pod Windows XP.

C++ Builder



Wyszukiwarka

Podobne podstrony:
Własny program (2)
JAK UŁOŻYĆ WŁASNY PROGRAM TRENINGOWY, KULTURYSTYKA
Własny program
Stwórz swój własny program treningowy
Program własny ścieżki edukacyjnej Edukacja ekologiczna, Przyroda i ekologia
CLAB 9 2009-2010, Napisz program zwiększający parametry a=1 i b=1 o stałe wartości (np
PROGRAM WŁASNY KOŁA BIBLIJNEGO, PROGRAM WŁASNY KOŁA BIBLIJNEGO
Program własny- plastyka, PRZEDSZKOLE
PROGRAM WŁASNY - W krainie bajek i baśni, Do teatru
CLAB 7-1 2008-2009, Napisz program zwiększający parametry a=1 i b=1 o stałe wartości (np
oswiadczenia, mocne i slabe strony w okresie stażu, ANALIZA WŁASNYCH SILNYCH I SŁABYCH STRON I OKREŚ
Program własny ścieżki edukacyjnej Edukacja ekologiczna, Przyroda i ekologia
Program Własny Edukacji Z Piłki Nożnej Dla chłopców klasy III Gimnazjum Sławomir Kopczewski, Jacek R
program własny aktywność ruchowa
Program własny informatyki
program wlasny A Jaworska program adaptacyjno integracyjny
program wlasny koło języka angielskiego

więcej podobnych podstron