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

Visual basic i LPT. Program włączający i wyłączający pin.

jeff__ 27 Kwi 2006 22:12 2236 7
REKLAMA
  • #1 2568921
    jeff__
    Poziom 17  
    Posty: 301
    Pomógł: 1
    Ocena: 7
    Witam wszystkich

    Mam problem, chcialbym napisac prosty program (visual basic), ktory ma za zadanie wlaczac i wylaczac pin z okreslona czestotliwoscia. Skorzystalem z biblioteki inpout32.dll, która z odczytywaniem i wysylaniem danych na port radzi sobie doskonale. Program mialby sluzyc do testow, np ewentualne podlaczenie glosniczka przez przekaznik i sprawdzenie czy będzie slychać pisk.




    pozdrawiam wszystkich
    jeff__
  • REKLAMA
  • Pomocny post
    #2 2569379
    Piotrek.pxf
    Poziom 27  
    Posty: 806
    Pomógł: 118
    Ocena: 65
    Nie za bardzo wiem, jak ty chcesz ten przekaźnik zamontować? Czy ma on się przełączać z częstotliwością akustyczną głośnika? Od razu mówię, że nie będzie to działać i upalisz port bez dodatkowego zasilania :P

    A częstotliwość zmian stanu na pinie z LPT możesz zrobić w VB używająć kontrolkę Timera. Wrzucasz ją do programu i piszesz coś, co pozwala zmianiać wartość Interval (im większy odstęp pomiędzy "tyknięciami" zegara, tym mniejsza częstotliwość.
    Jeśli nie umiesz sobie pordzić nadal z VB to napisz, to ci zrobię przykładowy program jakiś.

    Pozdrawiam
  • REKLAMA
  • #3 2569527
    jeff__
    Poziom 17  
    Posty: 301
    Pomógł: 1
    Ocena: 7
    Jak bys mogl rzucic tym kodem to bylbym wdzieczny. :)
    i dzieki za pomoc.



    pozdrawiam
    jeff__
  • REKLAMA
  • #4 2569551
    Piotrek.pxf
    Poziom 27  
    Posty: 806
    Pomógł: 118
    Ocena: 65
    Głośnik podłączyłeś do pinu 4 (D2), więc dla stanu wysokiego wysyłasz na port liczbę 4 (czyli 00000100). Równie dobrze mógłbyś wysłać 100, ale nie ma potrzeby generować danej częstotliwości na pozostałych pinach.
    Dajesz do Form1 kontrolkę Timer1 i ustawiasz jej wartość Interval na ok 10 (wartość 20ms w Timerze wygeneruje na głośniku częstotliwość 25Hz, niżej już może być ciężko coś usłyszeć, więc wartości Interval powinny być 1-20ms).
    To tak uzupełniając naszą rozmowę na gg.

    Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer
    Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
    
    Const hg As Single = 4
    Const lw As Single = 0
    
    Option Explicit
    Const PORT = &H378
    Dim on_off As Boolean
    
    Private Sub Form_Load()
     on_off = False
    End Sub
    
    Private Sub Timer1_Timer()
    If on_off Then
      Out PORT, hg
      on_off = False
    Else
      Out PORT, lw
      on_off = True
    End If
    End Sub
  • #5 2569949
    jeff__
    Poziom 17  
    Posty: 301
    Pomógł: 1
    Ocena: 7
    Ciesze sie bardzo, ze umiesciles kod źródłowy programu, niech inni tez skorzystaja. :) Tylko zauwazylm ze nie dziala za dobrze, glosniczek pyrka przy 1 ms, nie wiem co jest grane moze kwestia podlaczenia (kondensator ??).


    73!
    jeff__
  • REKLAMA
  • Pomocny post
    #6 2570752
    Piotrek.pxf
    Poziom 27  
    Posty: 806
    Pomógł: 118
    Ocena: 65
    Wstaw jakiś kondensator pomiędzy bazę tranzystora i masę. Około 100nF-1µF.
    Przy 1ms na Timerze częstotliwość na tranzystorze będzie wynosiła około 500Hz, więc nie za wiele. Timer w VB nie jest dokładnym czasomierzem, więc nie wytworzysz nim idealnego sygnału.
    Port LPT nie jest dobrym generatorem dźwięku. Lepiej zbudować osobne urządzenie.
  • #8 2578996
    jeff__
    Poziom 17  
    Posty: 301
    Pomógł: 1
    Ocena: 7
    Sprobuje z tym kondkiem miedzy baza a masa, jak pomoze to dam znac, zreszta jak nie to tez ;). Sivex dzieki za porady.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy stworzenia prostego programu w Visual Basic wykorzystującego bibliotekę inpout32.dll do sterowania pinem portu LPT z określoną częstotliwością w celu testowania, np. generowania dźwięku na głośniczku przez przekaźnik. Zalecane jest użycie kontrolki Timer w VB do zmiany stanu pinu z regulowanym interwałem (1-20 ms) odpowiadającym częstotliwości sygnału. Przykładowy kod pokazuje wysyłanie sygnału na pin 4 (D2) portu LPT o adresie 0x378. Zwrócono uwagę, że port LPT nie jest przystosowany do generowania dźwięku o wysokiej częstotliwości i może ulec uszkodzeniu bez odpowiedniego zasilania i zabezpieczeń. Sugerowano zastosowanie kondensatora (100nF-1µF) między bazą tranzystora a masą, aby poprawić stabilność sygnału i uniknąć zakłóceń. Timer w VB nie zapewnia precyzyjnego taktowania, co ogranicza jakość generowanego sygnału. Wskazano również alternatywne metody generowania częstotliwości, np. pętlę programu. Podsumowując, do testów dźwiękowych z wykorzystaniem portu LPT i Visual Basic należy stosować odpowiednie elementy elektroniczne i mieć świadomość ograniczeń sprzętowych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA