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

RS 232 w VB. Odebranie danych i wyświetlenie w kontrolce text z uC.

romantv 03 Maj 2006 12:44 3213 11
REKLAMA
  • #1 2587134
    romantv
    Poziom 17  
    Posty: 328
    Pomógł: 11
    Ocena: 8
    Witam jak mogę odebrać dane po RS 232 i wyświetlić je w kontrolce text z uC

    napisałem coś takiego i nie działa pewnie bzdura :)
    Proszę o pomoc.

    Private Sub Form_Load()


    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.RThreshold = 1
    MSComm1.InputLen = 0
    MSComm1.PortOpen = True

    End Sub

    Private Sub Text1_Change()

    Text1.Text = MSComm1.Input

    End Sub




    to jest tylko test programu.

    Dodano po 4 [minuty]:

    To jeszcze ja

    poprawiłem ale program ale jeszcze są przekłamania

    Private Sub Form_Load()


    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.RThreshold = 1
    MSComm1.InputLen = 0
    MSComm1.PortOpen = True
    Text1.Text = MSComm1.Input

    End Sub


    Private Sub MSComm1_OnComm()
    Text1.Text = MSComm1.Input
    End Sub


    proszę o pomoc
    papa
  • REKLAMA
  • #2 2587984
    pepson
    Poziom 18  
    Posty: 171
    Pomógł: 26
    Ocena: 30
    Dawno sie tym nie bawiłem, ale dane odebrane
    z potru przepisywałem w obsłudze zdarzenia RECEIVE
    kontrolki MSComm

    
    Static Sub MSComm1_OnComm ()
    
       'obsługa zdarzeń od portu COM
        If MSComm1.CommEvent = 2 Then '2 to kod zdarzenia oznaczającego
                                      'odebranie znaku z postu RS
            odebrane$ = odebrane$ + MSComm1.Input
    'lub text1.text = text1.text + MSComm1.Input
    
  • #3 2599528
    romantv
    Poziom 17  
    Posty: 328
    Pomógł: 11
    Ocena: 8
    Witaj program odbiera dane przez RS232
    teraz potrzebuje tylko by program wykonał jakąś czynność po pojawieniu
    się txt-tu np. A=1

    to mam to tak zapisać ?? jak Ty napisałeś :

    text1.text = text1.text + MSComm1.Input

    ??

    dzięki papa
  • REKLAMA
  • #4 3557594
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    romantv jesli Ci dziala program mozesz podeslac mi go ??
  • #5 3557816
    romantv
    Poziom 17  
    Posty: 328
    Pomógł: 11
    Ocena: 8
    Witaj temat jest już bardzo stary przypomnij mi co chcesz.
    Ten program jest bardzo złożony chętnie ci wyślę coś tylko napisz co chcesz.
  • #6 3557857
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    interesuje mnie cos prostego program ktory ma tylko za zadanie czytac z portu - zrobilem uklad z mikrokontrolerem ktory wysyla dane na rs232 jest to jedna dana zmienna typu string i chce napisac program ktory by to odczytywal - chcialbym zobaczyc najprostrzy programik w vb jak to wyglada

    czy ten programik dziala na tyle ze cos odbieral ( czy odbierze np zmienna string pwiedzny 17,6 ?? )
    Private Sub Form_Load()
    
    
    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.RThreshold = 1
    MSComm1.InputLen = 0
    MSComm1.PortOpen = True
    Text1.Text = MSComm1.Input
    
    End Sub
    
    
    Private Sub MSComm1_OnComm()
    Text1.Text = MSComm1.Input
    End Sub
    
  • REKLAMA
  • #7 3561029
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    juz program dziala tylko nieraz wyskakuje blad Run-time error '13' Type mismatch --- co to moze byc i czym spowodowane
  • REKLAMA
  • #8 3561462
    szymtro
    Poziom 30  
    Posty: 1421
    Pomógł: 101
    Ocena: 59
    to znaczy że coś do czego zapisujesz ma inny format niż to co jest źródłem. np gdy do label zapisze się bezpośrednio zmienną bo label przyjmuje tylko text i czasami trzeba zrobić konwersję funkcją string: label1.text:=str(zmienna).
    Przy degugowaniu pokazuje dokładnie w której linijce programu jest problem.
  • #9 3561652
    grabek_radek
    Poziom 21  
    Posty: 579
    Pomógł: 2
    Ocena: 37
    ok juz dziala dopisalem

    c = Val(c)
    c = c / 10

    bo mialem tak
    Dim c As String
    Dim k As String
    Dim f As String
    c = MSComm1.Input
    c = c / 10
    Text1.Text = c


    Dodano po 2 [godziny] 27 [minuty]:

    a jak zrobic by informowalo mnie ze nie ma komunikacji miedzy mikrokontrolerem a pc , np. po odlaczeniu przewodu ?? oczywiscie w programie na pc
  • #10 3610944
    pepson
    Poziom 18  
    Posty: 171
    Pomógł: 26
    Ocena: 30
    Ja użyłem kontrolki Timer
    z ustawionym czasem trochę dłuższym od czasu
    pomiędzy danymi przesyłanymi przez mikrokontroler
    Każde zdarzenie (odebranie danych) resetuje ten
    timer. Jeżeli dane w spodziewanym czasie nie nadejdą, to timer doliczy ten ustalony odcinek czasu
    do końca i wyświetla odpowiedni komunikat.
  • #11 7210929
    Gieha
    Poziom 11  
    Posty: 29
    Coś jest nie tak . Tylko gdy w programie chce użyć kontrolki mscomm choćby tak :
    Private Sub Form_Load()
    MSComm1.CommPort = 1
    MSComm1.Settings = "1200,N,8,1"
    End Sub

    odpalając program dostaje "runtime error 424 Object required " . Doczytałem że mscomm.ocx trzeba dodać w referencjach zrobiłem to ale nic nie pomogło . Przypuszczam że jest to wina konfiguracji mojego VB .Proszę o pomoc
  • #12 7211010
    jestam
    Specjalista Automatyk
    Posty: 1794
    Pomógł: 210
    Ocena: 144
    Używasz VB 6 czy VB.NET ?

Podsumowanie tematu

✨ Dyskusja dotyczy odbioru danych przez port RS-232 w Visual Basic (VB) z mikrokontrolera i wyświetlania ich w kontrolce Text. Użytkownik początkowo stosował prosty kod inicjujący port COM z kontrolką MSComm, jednak dane nie były poprawnie odbierane ani wyświetlane. Zalecane jest użycie obsługi zdarzenia MSComm_OnComm, które reaguje na zdarzenie odbioru danych (CommEvent = 2), gdzie odebrane dane należy dopisywać do kontrolki Text, np. text1.text = text1.text + MSComm1.Input. Występowały błędy typu "Run-time error '13' Type mismatch" spowodowane próbą przypisania danych w nieodpowiednim formacie, co można rozwiązać konwersją typów (np. funkcją Val lub konwersją na String). W celu wykrywania braku komunikacji między mikrokontrolerem a PC sugerowano zastosowanie kontrolki Timer, która resetuje się przy odbiorze danych, a po przekroczeniu określonego czasu bez danych wyświetla komunikat o braku połączenia. Pojawiły się także problemy z konfiguracją MSComm w VB, takie jak błąd "runtime error 424 Object required", który może wynikać z braku poprawnego dodania kontrolki mscomm.ocx do referencji projektu lub niezgodności wersji VB (VB6 vs VB.NET). Przykładowa konfiguracja portu to 9600 baud, 8 bitów danych, brak parzystości, 1 bit stopu ("9600,N,8,1").
Wygenerowane przez model językowy.
REKLAMA