logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Sterowanie pojazdem przez LPT w Visual Basic 2005 - dodatkowe wyjścia?

dezmontnikus 28 Paź 2007 20:32 3901 21
REKLAMA
  • #1 4424579
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Pisze już drugi raz ale teraz zmieniłem trochę projekt chciałem żeby ktoś pomógł mi w dokończeniu programu który by miał za zadanie sterowanie portem LPT. Port ma 8 wyjść czy jest możliwe żeby jeszcze wyciągnąć 4 wyjścia z niego gdzieś czytałem że jeszcze można ale nie było napisane jak. bardzo bym prosił o pomoc. Wróćmy do programu napisałem albo lepiej zrobiłem go w Microsoft Visual Basic 2005 Express Edition i wygląda on tak

    Sterowanie pojazdem przez LPT w Visual Basic 2005 - dodatkowe wyjścia?

    miał by sterować pojazdem i kamerką na nim umieszczona tylko nie wiem jak go dokończyć. Musiał by wysyłać na port LPT prąd tak długo aż nie puszczę strzałki.


    Sterowanie pojazdem przez LPT w Visual Basic 2005 - dodatkowe wyjścia?

    te strzałki które są w czarnym kółku to po naciśnięciu jej jak wspomniałem wcześnie ma pójść prąd na LPT. Chciał bym żeby te ]strzałki były przypisane do przycisków na klawiaturze czyli tak jak tam jest na tych przyciskach napisane góra =przycisk "W" dół = "S" itd. Musiały by też wysyłać na LPT tak by to wyglądało:
    przycisk
    góra- 2 pin na LPT
    dół - 3 pin na LPT
    lewo- 4 pin na LPT
    prawo - 5 pin na LPT

    ------------------------------------------

    Sterowanie pojazdem przez LPT w Visual Basic 2005 - dodatkowe wyjścia?

    Te strzałki co są zaznaczone po wyżej miały by spełniać to samo zadanie ale troszkę inaczej. Miały by być przypisane do przycisków kierunku na klawiaturze czyli góra to strzałka do góry na klawiaturze dół to strzałka dół itd. ale na LPT wysyłać by miały tak samo jak poprzednia ale w inne piny
    góra - 6 pin na LPT
    ]dół - 7 pin na LPT
    lewo - 8 pin na LPT
    prawo - 9 pin na LPT
    ----------------------------------------
    W tym programie widać pola z napisem Diody włącz wyłącz to tak jak wspomniałem wcześniej jeżeli z portu LPT pójdzie wyciągnąć jeszcze 4 piny to bardzo bym prosił żeby to włącz wyłącz też działało a jak nie pójdzie to można to wywalić. To włącz wyłącz to też na te piny miało by działać na zasadzie ze jak kliknie sie włącz to na odpowiedni pin pójdzie prąd i będzie na nim tak długo aż nie zaznaczę wyłącz. Ale sie napisałem z góry dzięki za pomoc na pewno "pomógł" dostanie ktoś.

    Zamieszczam mój projekt programu który zrobiłem w VB jako aplikacje ale jakoś sie dziwnie zapisał nie wiem ale w VB działa
    Załączniki:
    • LPT i RS232.rar (196.55 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 4424751
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Witaj
    W porcie LPT masz do dyspozycji 3 rejestry z których możesz korzystać. Bazowy (danych) 378h WE/WY - możesz czytać lub pisać 8 bitów danych, rejestr stanów 379h dostępny tylko do odczytu i tylko 5 bitów od 3-7 oraz sterujący 37Ah dostępny do odczytu jak i zapisu ale tylko bity od 0-4, i tu uwaga bit 4 spowoduje żądanie obsłubi przerwania w momencie zmiany stanu bitu 6 w rejestrze stanów. Najlepiej korzystać tylko z D0 - D3. I jeszcze jedno bity D0,1,3 w rejestrze sterującym mają odwróconą polaryzacje na złączu LPT.
    Pozdrawiam.
  • #3 4424775
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Wiesz za bardzo nie wie o co chodzi z tym ale powiedz czy pójdzie zrobić tak jak z tymi pinami od 2 do 9
  • #4 4424823
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Krótko - da rade
    Możesz z rejestru sterującego sterować cztery diody a z rejestru stanów odczytać np. stan czujników położenia kamery, max- góra, min-dół, max-lewo max-prawo itp. I zerknij tu -https://www.elektroda.pl/rtvforum/topic328008.html
  • #5 4424866
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Mógł byś zamieścić kod do VB żebym wy kombinował coś z tym programem albo edytował być go ale jak tam wolisz
  • REKLAMA
  • #6 4424881
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Szczerze to na takowe zabawy to mogę mieć czas tylko w niedzielne wieczory i to nie zawiele. Ale na stronce powyżej masz rozwiązanie. Powodzenia
  • REKLAMA
  • #7 4424949
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Zdzicho pomóż proszę chociaż podrzuć jakiegoś linka :/
  • #9 4426973
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    próbowałem coś zrobić w Vb ale nie pasuje mi jedna cześć kodu która jest tam napisana a mianowicie ta:

    -----------------------------------

    OFFSET = 00h (0378)
    bit 7 6 5 4 3 2 1 0
    pin 9 8 7 6 5 4 3 2

    Niech sobie zostana jako wyjscia.
    w VB bedziemy nimi sterowac w ten sposob:

    Dim Wyjscie as Byte
    Out &H378, Wyjsie


    Gdzie wyjscie rowna sie sumie:
    bit0 = 1
    bit1 = 2
    bit2 = 4
    bit3 = 8
    bit4 = 16
    bit5 = 32
    bit6 = 64
    bit7 = 128

    Czyli zeby wystawic na pinie 8 (bit6) i 2 (bit0) +5V trzeba wyslac na port wartosc 64+1 = 65 itp

    ----------------------------------------

    nie pasuje mi ten kod co jest na niebiesko wpisuje go do klawisza tam do kodu i wpisuje wartość 65 zamiast słowa wyjście

    Dim Wyjscie as Byte <---- tu zamiast wyjście wpisałem 65 i mi to 65 podkreśla i nie działa
    Out &H378, Wyjsie<---- w tej części wpisałem 65 to działa i jest ok
  • #10 4427172
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    A wpisz bez deklaracji zmiennej
    Out &H378,65
    Tylko nie podłączaj silniczków bezpośrednio do portu !!
  • #11 4427262
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    No dzięki działa kurcze nie wpadłem na pomysł że przed liczba jaka ma iść na wyjście nie ma byś spacji ko próbowałem kilka możliwości z tym kodem. Już masz "pomógł" ale mógł byś mi powiedzieć jaki kod dać na te 4 piny co wspomniałeś wcześniej

    Dodano po 16 [minuty]:

    Powiedz mi zaraz jaki kod dać żeby odpowiedni przycisk w programie reagował na klawisz na klawiaturze
  • #12 4427587
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Out &H37A, a tu 1,2,4,8 i ich kombinacje czyli max 15
  • #13 4427642
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Zdzicho dzienx po ty jak wpisze ten kod to na którym pinie pojawi mi się napięcie ? bo tam ich bodajże oprócz tych 8 i tych 8 na uziemienie jest 9 :D Napisz na pewno przyda się komuś to a szczególnie mnie...

    Sterowanie pojazdem przez LPT w Visual Basic 2005 - dodatkowe wyjścia?

    Dodano po 13 [minuty]:

    Mógł byś napisać mi kod do przypisywania przycisków w programie do przycisków na klawiaturze... i jeszcze jeden kod na takie nie wiem jak to nazwać po fachowemu ale coś takiego grupowanie znaczy popatrz na mój program chodzi mi o to jeżeli zaznaczę w kółko włącz w jednym kwadracie gdzie w nim DIODY pisze to mogą zaznaczyć w drugim kwadracie DIODY też włącz i 2 diody będą się świecić. Bardzo proszę pomóż mi to dla mnie ważne...
  • #14 4427778
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Dostęp do pinów 1,14,16,17 portu Lpt
    Te piny dostepne są po offsecie 02h. Czyli jeżeli twój adres LPT to &H378 po offsecie bedzie &H37A.
    I tak:
    bit 0 = pin1 (zanegowany)
    bit 1 = pin14 (zanegowany)
    bit 2 = pin16
    bit 3 = pin17 (zanegowany)

    Sterowanie diodami - kliknij na formatce na RadioButton1 i wpisz linijkę kodu "Out(&H37A, 1)" natępnie na RadioButton2 i wpisz "Out(&H37A, 0)"
    Wygląda to tak
    Private Sub RadioButton8_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton8.CheckedChanged
    Out(&H37A, 1)
    End Sub

    Oczywiście należałoby przeczytać stan portu, załadować do zmiennej, porównać z bitem którego chcemy zmienić i dopiero wpisać ponownie do poru. Taka operacja zmieni tylko stan jednego pinu nie modyfikując innych ! Ale jeśli sam do tego dojdziesz to napewno będziesz miał większą satysfakcjie, prawda ?
  • #15 4427846
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Zdzicho oświeć mnie co to znaczy to "zanegowany" kurcze dopiero ja wchodzę w te wszystkie pojęcia i układy
  • REKLAMA
  • #16 4427854
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    zanegowany tzn. jak ustawisz 1 (5V) to na pinie będzie 0 (0V), jak 0 (0V) to na pinie będzie 1 (5V)

    Tylko czy aby takimi postami nie zaniżamy poziomu elektrody ?
  • #17 4427909
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Nie nie zaniżamy bo jest wiele osób które chcą sie dowiedzieć co i jak jest z tymi dodatkowymi pinami w LPT
  • Pomocny post
    #18 4427947
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Ok, a tu http://www.codeguru.pl/article-642.aspx masz gotowca jak przypisać klawisze do przycisków na Twojej formatce.

    Dodano po 2 [minuty]:

    Jak coś już stwożysz to pokaż, może coś dodamy - poprawimy i nauczymy się wszyscy.
  • #19 4427979
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Ok nie ma problemu. Może dodam jeszcze dzisiaj a jak nie zdążę to jutro koło osiemnastej..

    31 Paź 2007 22:27:33

    Zdzicho nie działa mi kod w VB nie wiem dla czego ten kod:

    "Ostatnią rzeczą przy konfiguracji będzie dopisanie poniższego kodu do pliku *.vb naszej formy"

    Imports Microsoft.DirectX

    Imports Microsoft.DirectX.DirectInput.CooperativeLevelFlags

    Imports Microsoft.DirectX.DirectInput

    tak kazali i tak zrobiłem ale error wyskakuje i na wszystkie sposoby próbowałem z tym kodem ale nie działa pomóż...

    Dodano po 35 [minuty]:

    Wydaje mi się że nie zrobię tego bez twojej pomocy ja dopiero co z tym zaczynam....

    Posty scaliłem - krzychoocpp
  • #20 4438139
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Zrobiłem coś takiego, ale nie potrafię przypisać tych klawiszy do aplikacji. Zdzicho pomógłbyś mi? W załączniku dam cały program z projektem tylko w VB otworzyć i kod przerobić dla ciebie to jest pestka a ja się mecze z tym 5 dni. Przypisz mi te klawisze do przycisków bardzo cię proszę i jakieś punkty odpalę ci, ale tobie i tak nie zależy, bo masz ich dużo :)
    Załączniki:
    • LPT i RS232.rar (234.63 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #21 4442128
    Zdzicho
    Poziom 25  
    Posty: 551
    Pomógł: 77
    Ocena: 71
    Jeśli zrobisz tak jak jest opisane w linku w poprzednim moim poście to będzie chodzić na pewno. Zainstalowałeś DirectX9 SDK i dodałeś referencje Microsoft.DirectX, Microsoft.DirectX.DirectInput. Dodaje się w menu "Project/Add Reference/.net", kolejno Microsoft.DirectX i Microsoft.DirectX.DirectInput. Powodzenia
    Załączniki:
    • WindowsApplication1.exe (252 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #22 4442759
    dezmontnikus
    Poziom 21  
    Posty: 590
    Pomógł: 3
    Ocena: 16
    Zdzicho nie rozumiesz mnie referencje działają tylko ten kod który muszę wpisać w kod pliku .vb tak kazali zrobić. ;)

    "Ostatnią rzeczą przy konfiguracji będzie dopisanie poniższego kodu do pliku *.vb naszej formy"

    Imports Microsoft.DirectX

    Imports Microsoft.DirectX.DirectInput.CooperativeLevelFlags

    Imports Microsoft.DirectX.DirectInput

    tak kazali i tak zrobiłem ale error wyskakuje i na wszystkie sposoby próbowałem z tym kodem ale nie działa pomóż...

Podsumowanie tematu

✨ Dyskusja dotyczy sterowania pojazdem i kamerą za pomocą portu LPT w środowisku Microsoft Visual Basic 2005 Express Edition. Port LPT oferuje 8 wyjść danych (adres bazowy 0x378) oraz dodatkowe 4 wyjścia dostępne przez rejestr sterujący (adres 0x37A), które można wykorzystać do sterowania dodatkowymi diodami lub urządzeniami. Wskazano, że bity w rejestrze sterującym mają odwróconą polaryzację (zanegowane sygnały), co należy uwzględnić przy programowaniu. Przykłady kodu pokazują, jak ustawiać poszczególne bity portu, np. wysyłając wartość 65 na port 0x378, aby ustawić piny 2 i 8 na stan wysoki. Poruszono także temat przypisywania klawiszy klawiatury (np. W, S) do przycisków w aplikacji VB, z wykorzystaniem biblioteki Microsoft.DirectX.DirectInput, jednak pojawiły się problemy z importem i konfiguracją tej biblioteki. Podano linki do przykładów i poradników dotyczących obsługi portu LPT oraz przypisywania klawiszy w VB. Zwrócono uwagę na konieczność stosowania odpowiednich układów pośredniczących przy podłączaniu silników do portu LPT, aby nie uszkodzić sprzętu. Omówiono także sposób odczytu i modyfikacji pojedynczych bitów portu, aby umożliwić jednoczesne sterowanie wieloma wyjściami bez zakłócania innych sygnałów.
Wygenerowane przez model językowy.
REKLAMA