Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Visual Basic - USB i bibliteka inpout32.dll

automatykon 25 Lut 2010 13:17 3066 10
  • #1 25 Lut 2010 13:17
    automatykon
    Poziom 11  

    Witam wszystkich
    Zwracam sie z zapytaniem czy jest możliwość obsługi virtualnego portu COM ( układ FTDI ) za pomocą biblioteki inpout32.dll.
    Próbuje juz jakiś czas i ciężko idzie. Jaki ustawić adres np: dla portu com3.

    0 10
  • #2 25 Lut 2010 14:06
    arnoldziq
    Moderator Programowanie

    Wspomniana biblioteka, z tego co wiem, służy do bezpośredniego sterowania portem równoległym LPT, z pominięciem mechanizmów Windows.
    Nie możesz tego zrobić z wirtualnym portem COM. Jest on nazwany 'wirtualnym' ze względu na to, że tak na prawdę ten port 'fizycznie' nie istnieje.
    Użyj zwykłych Windows-owych mechanizmów dostępu do portu i sprawa sama się rozwiąże.

    0
  • #3 25 Lut 2010 14:20
    automatykon
    Poziom 11  

    to kicha, a miała to być moja ostatnia deska ratunku. Może rozwinę temat.
    potrzebuje wysyłać i odbierać dane w VB z prędkościami 10200 i 9600. nie chcę stosować dodatkowych procesorów gdyż to tylko dodatkowo komplikuje sprawę.

    0
  • #4 25 Lut 2010 14:26
    arnoldziq
    Moderator Programowanie

    Uprośćmy :
    - Masz przejściówkę USB<->COM.
    - Chcesz wysyłać/odbierać dane przez wirtualny COM.
    - Wspomniana przez ciebie biblioteka służy do obsługi portu LPT a nie COM.

    W czy tkwi problem ? O jakich dodatkowych procesorach mówisz ?

    0
  • #5 25 Lut 2010 14:42
    automatykon
    Poziom 11  

    to tak to jest jak człowiek nie zna angielskiego, a na polskich stronach nie doczytałem albo niema nic o tym.

    Padł też pomysł aby użyć jakiejś atmegi i z niej wypychać i odbierać dane w prędkości 10200 i 9600 ale temat umarł raczej z niewiedzy, gdyż potrzebne sa dwa porty komunikacyjne, jeden do urządzenia drugi do PC i tu kłania sie wykrywanie transmisji na portach, komputer swoje i urządzenie swoje. Pytałem parę razy na różnych forach , zwracałem sie z prośbą ale przeważnie odpowiedzi padały typu : poszukaj, jest w sieci, jest na forum, temat wałkowany.

    Co bys proponował: potrzebuje wysyłać dane na wirualnym porcie( prędkość 10200), potrzebne będzie także postawienie stanu logicznego na TX ( inicjacja komunikacji)

    0
  • #6 25 Lut 2010 15:00
    arnoldziq
    Moderator Programowanie

    Drogi kolego !
    Zaczyna mnie już męczyć chaos który zapanował w tym temacie.
    Proszę poprawić pisownię we wszystkich postach!
    Proszę dokładnie opisać swój problem, bo na razie to co post, to ma kolega inny pomysł, podaje jakieś opinie ludzi którzy się tu nie wypowiadali itd.
    Proszę uściślić :
    - Co chce kolega odczytywać przez ten port ?
    - Co to za urządzenie znajduje się po drugiej stronie ?
    - Parametry transmisji/portu COM potrzebne do komunikacji.
    - Jakie dane będą wysyłane / odbierane z wzmiankowanego urządzenia ?

    0
  • #7 25 Lut 2010 18:51
    automatykon
    Poziom 11  

    - Potrzebuje wysyłać i odbierać dane z urządzenia.
    - Urządzenie to taki sterownik maszyny przypominającej CNC z reszta funkcja urządzenia jest mało znacząca.
    - parametry transmisji 10200,N,8,1
    - dane np: 00 81 7A F1 81 6D to wywołanie urządzenia, 83 F1 7A 61 80 Urządzenie odpowiada.

    przed wywołaniem urządzenia musimy postawić stan wysoki na 200 ms i następnie stan niski na 20 ms i rozpocząć wywołanie "00 81 7A F1 81 6D ". Protokół przypomina trochę protokół KWP2000 stosowany w motoryzacji.

    Dodano po 3 [godziny] 35 [minuty]:

    Zamykam temat, problem rozwiązany.

    0
  • #8 26 Lut 2010 10:08
    arnoldziq
    Moderator Programowanie

    Może byłby kolega łaskaw podzielić się z nami rozwiązaniem ?

    0
  • #9 26 Lut 2010 12:01
    automatykon
    Poziom 11  

    Ależ proszę bardzo, chociaż nikt mi jak na razie z tego forum nie pomógł znacząco, ale może się to w zmieni.

    Kod do visual basica, co prawa nie mojego autorstwa, ale działa.

    aa, bibliteka inpout32.dll nie służy tylko do portu równoległego, można także port szeregowy tym, obsłużyć. poniżej dowód.

    Code:
    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)

    Private Sub Init()
    Dim Baud As String
    Dim LCR As Integer '                         
    Dim Port As Integer

    Baud = Combo_Baud.Text                         
    Port = &H3F8                   
    MSComm1.CommPort = 1
    MSComm1.PortOpen = True

    If Baud = "10400" Then
        MSComm1.Settings = "9600,N,8,1"
        LCR = Inp(Port + 3)
        Out (Port + 3),(LCR Or &H80)
        Out Port, 11
        Out (Port + 1),0
        Out (Port + 3), LCR
    Else
        MSComm1.Settings = Baud & ",N,8,1"
    End If
    MSComm1.InputMode = comInputModeBinary
    End Sub

    0
  • #10 26 Lut 2010 12:41
    arnoldziq
    Moderator Programowanie

    automatykon napisał:
    Ależ proszę bardzo, chociaż nikt mi jak na razie z tego forum nie pomógł znacząco, ale może się to w zmieni.

    No mam taką nadzieję ! Tylko dla tego, zachęcam ludzi do dzielenia się swoimi rozwiązaniami.
    automatykon napisał:
    aa, bibliteka inpout32.dll nie służy tylko do portu równoległego, można także port szeregowy tym, obsłużyć.

    Człowiek uczy się całe życie. Jednak na swoją obronę powiem, że odwołuje się kolega do fizycznego portu, a nie jak było powiedziane wcześniej, do wirtualnego portu COM (USB).
    Gdy odkryje kolega sposób na obsługę portu wirtualnego, również serdecznie zapraszam do podzielenia się z nami tą wiedzą.

    0