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

[VBA] Jak odczytać dane z portu RS232 w VB 2005 i wyświetlić w TextBox?

arturo1000 12 Lis 2007 21:52 2688 6
REKLAMA
  • #1 4474727
    arturo1000
    Poziom 11  
    Posty: 45
    Witam wszystkich. Zaczynam przygodę z VB 2005. Postanowiłem, że napiszę program który odczytuje wartość napięcia z woltomierza, który ma wyjście na port RS(232). Problem mam następujący, że nie potrafię odczytać bufora i wrzucić dane do np.textbox. Według dokumentacji miernika, ramka zawiera 16 znaków hex, które wyświetlają mi się w oknie MessageBox (porównywałem w terminalu-parametry transmisji-2400 8E1). Wiem, które znaki w ramce odpowiadają za wartość napięcia, ale nie potrafię ich odpowiednio odczytać.
    Proszę o pomoc. Dzięki!

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Moderowany przez Marek_Skalski:

    Poprawiłem temat i pisownię. Dodałem syntax. Zamykam.

  • REKLAMA
  • #2 4780083
    michalmily
    Poziom 13  
    Posty: 139
    Ocena: 4
    Witam, mam ten sam problem, program nie wchodzi do procedury odczytu - po ustawieniu breke'a nic się nie dzieje. Męczę to już kilka godzin. W necie trudno znaleźc cokolwiek o VB 2005. Proszę o pomoc i pozdrawiam....
  • REKLAMA
  • #3 4786742
    michalmily
    Poziom 13  
    Posty: 139
    Ocena: 4
    Znalazłem działający kod w necie, ale jest pewien problem. Wysyłam 7 znaków, ale mogę odebrac tylko 3. Używam instrukcji serialport.readbyte, gdy wywołam ją więcej niż 3 razy program się wiesza, proszę o pomoc i pozdrawiam.....
  • #4 4789479
    KeinXor
    Poziom 24  
    Posty: 511
    Pomógł: 62
    Ocena: 63
    Witam,
    zamieść ten kawałek kodu który znalazłeś, pomyślimy...
    Pozdrawiem
  • REKLAMA
  • #5 4793768
    michalmily
    Poziom 13  
    Posty: 139
    Ocena: 4
    Dzięki za odpowiedź, wrzucam fragment kod
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam....

    Dodano:
    Znalazłem rozwiązanie, kod powyżej jest kodem u mnie działającym. Mam nadzieję, że przyda się innym. Pozdrawiam.

    Moderowany przez Marek_Skalski:

    Dodałem syntax.

  • REKLAMA
  • #6 4833471
    elhomerro
    Poziom 11  
    Posty: 8
    Witam,

    michalmily, dzieki za kod bardzo mi sie przydal! Ale mam jeszcze problem jezeli chodzi o wysylanie :(.

    Potrzebuje wyslac taka ramke [0xBB 0x00 0x00 0x00 0x03 0x00 0x00 0x00 0xAA 0x03]

    probowalem to robic analogicznie do rozwiazania powyzej tzn. zrobilem cos takiego:

    
    Dim p(9) As Byte
    p(0) = 187
    p(1) = 0
    p(2) = 0
    p(3) = 0
    p(4) = 3
    p(5) = 0
    p(6) = 0
    p(7) = 0
    p(8) = 170
    p(9) = 3
    serialPort.Write(p, 0, 10)
    


    Niestety takie rozwiazanie nie dziala :( czy ktos moze wie w jaki sposob wyslac okreslona ramke? Moze zlozyc ja do kupy i wyslac serialPort.WriteLine? Bede bardzo wdzieczny za pomoc!

    Udalo mi sie znalezc rozwiazanie mojego problemu :). Kod powyzej jest poprawy (u mnie dziala) zostawiam gdyby bylo to komus jeszcze potrzebne :)
  • #7 4973486
    Mirek_
    Poziom 2  
    Posty: 3
    Ocena: 1
    Znalazłem ciekawą stronkę na temat komunikacji szeregowej.
    Można z niej ściągnąć przykładowy kod napisany dla Visual B. 2005.
    Mam nadzieję, że komuś się przyda:

    http://www.innovatic.dk/knowledg/SerialCOM/SerialCOM.htm

    Moderowany przez Marek_Skalski:

    Poprawiłem pisownię. Kwiecień 2018: Link nadal aktywny.

Podsumowanie tematu

LABEL_AI_GENERATED
Dyskusja dotyczy problemów z odczytem danych z portu RS232 w Visual Basic 2005, w kontekście odczytu wartości napięcia z woltomierza komunikującego się przez port szeregowy. Użytkownicy zgłaszają trudności z obsługą zdarzenia DataReceived, odczytem bufora oraz poprawnym odczytem i wyświetleniem danych w kontrolce TextBox. Przykładowy kod wykorzystuje klasę System.IO.Ports.SerialPort z obsługą zdarzenia DataReceived, gdzie dane są odczytywane metodą Read i wyświetlane w interfejsie użytkownika za pomocą delegatów i metody BeginInvoke, aby uniknąć problemów z wątkiem GUI. Poruszono także kwestie wysyłania ramki bajtów przez port szeregowy, gdzie poprawne zdefiniowanie tablicy bajtów i użycie metody Write umożliwia transmisję danych. Wskazano parametry transmisji (2400 8E1) oraz przykładowe fragmenty kodu do odczytu i wysyłania danych. Podano również link do zewnętrznego źródła z przykładowym kodem do komunikacji szeregowej w VB 2005.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA