Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Zlecę] napisanie programu w VISUAL BASICU obsługa RS232

guest666 15 Jun 2012 10:15 2204 12
  • #1
    guest666
    Level 12  
    Witam
    Zlecę napisanie prościutkiego programu w Visual Basic 2010
    Odbiór danych z rs232 (ramka 32 znakowa zawsze)
    Zapis całego stringu do zmiennej i wyłowienie z niego potrzebnych danych.
    napisałem coś takiego w BascomAVR na Atmega32 i oczywiście działa, ale teraz muszę coś takiego mieć na windowsie.
    Pozdrawiam
    Contact the author of the topic by Private Message (PM icon).
  • #3
    guest666
    Level 12  
    mickpr wrote:


    Witam
    Zgadza się... prawie gotowiec, udało mi się uruchomić odbiór danych, ale mam pytanie...
    Jak odebrać ramkę w postaci bajtów a nie w postaci kodów ascii w visual basicu?
    W bascomavr odbierałem poprzez INPUTBIN, a w visual basicu odbiera w kodach ASCII poleceniem
    ReceivedText(SerialPort1.ReadExisting())

    Ktoś pomoże?
  • #4
    MArSTER_1
    Level 19  
    Mogę Ci pomóc. Ile oferujesz? Sam przesyłam ramkę 512 bajtową. Czyste bajty.
  • #5
    guest666
    Level 12  
    MArSTER_1 wrote:
    Mogę Ci pomóc. Ile oferujesz? Sam przesyłam ramkę 512 bajtową. Czyste bajty.

    Nie wiem ila taka usługa jest warta...
    Zaproponuj coś
  • #6
    MArSTER_1
    Level 19  
    Za mało danych. Chcesz mieś program do odbioru :"Odbiór danych z rs232 (ramka 32 znakowa zawsze). Zapis całego stringu do zmiennej i wyłowienie z niego potrzebnych danych."
    Napiszę jak to rozumiem.
    Port w PC pod Windows czeka na napływ 32 bajtów wysyłanych z określonymi parametrami (baudrate, ilość bitów danych, ilość bitów stopu, parzystość bądź nie). Gdy ATmega wyśle te 32 bajty, program napisany pod Windows odbiera te 32 bajty (nazwane przez ciebie Stringiem-czy to jakiś napis czy dane?) i "wyławia" z tych 32 bajtów jakiś wzorzec. Ten wzorzec musi jak rozumiem być wprowadzony do programu działającego pod Windows. Co się dzieje po wyłowieniu wzorca? Jak często ATmega wysyła dane?
    Tyle na początek.
    Pozdrawiam.
  • #7
    guest666
    Level 12  
    urządzenie wysyła te dane co ~400ms albo "na żądanie" W danych zawarte są liczby które trzeba według wzorca pomnożyć, dodać i podzielić. W trybie automatycznym uradzenie wysyła dane co 400ms i ramka 12znaków, a w trybie na żądanie 32znaki
  • #8
    MArSTER_1
    Level 19  
    "trzeba według wzorca pomnożyć, dodać i podzielić." Czy ten wzorzec jest NA STAŁE w programie Windowsowym? I następuje wyświetlenie obrobionych danych? Przekazanie powrotne do ATmegi? Jeśli wyświetlenie to co około 400 milisekund ma sie zmieniać wyswietlanie w PC?Czy może dane mają być archiwizowane w pliku tekstowym albo binarnym do późniejszego odczytu?
  • #9
    guest666
    Level 12  
    Wzorzec to tylko taki: np (1 bajt *256 + 2 bajt) / 10 - ogólnie banał
    Nic nie przekazuje z powrotem, jedynie w trybie na żądanie wysyłamy zapytanie do urządzenia o wartości, a trybie automatycznym też wysyłamy zapytanie raz na minimum 10sekund. przez te 10 sekund urządzenie śle co 400ms wyniki
  • #10
    MArSTER_1
    Level 19  
    No dobrze. Te dane wysyłane co 400 milisekund to temperatury.Wyświetlanie z dokładnością do jednego miejsca po przecinku.Jest ich sześć. Co 10 sekund wysyłane są dodatkowe dane jak rozumiem kolejne temperatury (jeśli wzorzec dla każdej pary bajtów jest ten sam).Mamy więc temperatury szybciej i wolniej zmienne. No i w programie Windowsowym potrzebny jest przycisk , którego naciśnięcie spowoduje wysłanie z ATmegi WSZYSTKICH 16 temperatur czyli 32 bajtów, obrobienie ich ( pomnożenie) i wyświetlenie. Czy tak?
  • #11
    guest666
    Level 12  
    Ramka wygląda tak: '
    'Y'
    's'
    T1_byteH
    T1_byteL
    T2_byteH
    T2_byteL
    T3_byteH
    T3_byteL
    T4_byteH
    T4_byteL

    Status 1Byte
    Suma kontrolna 1Byte

    Wzór ta T = (T_byteH * 256 + T_byteL) / 10

    Suma kontrolna = T1_byteH +T1_byteL+T2_byteH +T2_byteL+T3_byteH +T3_byteL+T4_byteH +T4_byteL + Status

    Jeśli wyślemy zapytanie "Ys" to przez 10 sekund urządzenie będzie słało nam wartości na RS, a więc np co 5 sekund z automatu mamy pytać poleceniem YS o wartości, aby się nie wyłączyło
  • #12
    MArSTER_1
    Level 19  
    "Ramka wygląda tak: '
    'Y'
    's'"
    "Jeśli wyślemy zapytanie "Ys"
    Czy to to samo?Dwa bajty jeden "Y", drugi "s" i zapytanie "Ys"?
    Bo do zapytania z programu Windowsowego nie potrzeba dwóch bajtów. No chyba, że w ATmedze już masz oprogramowane, że ATmega czeka na DWA BAJTY zapytania.
  • #13
    ANUBIS
    Level 32  
    Temat zamykam.
    Dalsze dyskusje proszę prowadzić za pomocą komunikatorów lub PW na forum.

    ANUBIS



    Przypominam, że to dział ogłoszeń.

    Porady , podpowiedzi i konsultacje prowadzimy w innych działach forum.