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

wysłanie hex na rs232 w BascomAVR

robusta 20 Mar 2004 01:40 2791 3
REKLAMA
  • #1 556220
    robusta
    Poziom 15  
    Szanowni koledzy,
    Z mikrokontrolera 90S2313 muszę wysłać w hex-ie ciąg wartości np.: A5 01 19 80 80 55 14.
    Jeśli w BascomieAVR użyje instrukcji PRINT "A5 01 19 80 80 55 14" to podłączając atmela przez maxa232 do kompa i otwierając terminal w momencie ustawienia Receive ASCII otrzymam "A5 01 19 i tak dalej" jednak jeśli zrobię Receive Hex otrzymuję każdą z tych wartości "rozbitą" na hexa (czyli 41 35 20 itd. (A=41,5=35,spacja=20)).

    W związku z tym wpisałem w programie dla próby:
    Dim A as integer
    A=&HA5
    Print Chr(a)

    przekonwertowałem A5 (w hexa) na ascii i pozwoliłem aby bascom przy kompilacji zrobił odwrotnie. Niestety nie jest tak do końca. Teraz odpalając terminal i robiąc Receive ASCII otrzymuję "krzak" ale robiąc Receive HEX otrzymuje: A5 i coś jeszcze - piszę z pamięci ale chyba wyglądało to tak: A5 A0 0d.

    Pomóżcie proszę - jak pozbyć się tego po A5 no i jak najlepiej wysłać cały ciąg A5 01 19 80 80 55 14 aby w terminalu przy odbiorze hexa w ten sam sposób wyglądały.
    Dzień w dzień od ponad tygodnia to męczę i załamany już postanowiłem Was prosić o pomoc.
    Pozdrawiam
    Przemo

    Przeniesiono z Programowanie Ogólne. - arnoldziq
  • REKLAMA
  • #2 557018
    szymtro
    Poziom 30  
    Jak chcesz wysyłać bezpośrednio wartości do portu(tzw tryb binarny) to w bascomie komenda printbin zmienna. Spowoduje to wpisanie wartości zmiennej do bufora a potem jej wysłanie. W standardowej komendzie print jeżeli na końcu linijki nie dasz znaczka";" to do wszystkiego doda enter(LF CR) dlatego ci drukuje dodatkowe rzeczy po prosty daja tak
    print "cos tam"; zamiast
    print "cos tam"

    komenda printbin nie dodaje żadnych dodatkowych znaków.
  • REKLAMA
  • #3 557082
    MMarek17
    Poziom 19  
    Witam
    Dokładnie jak napisał szymtro!
    Samo
    Print Chr$(n)
    wysyła znak zakończony znakami końca linii i powrotu karetki CRLF (0D = chr$(13) i 0A = Chr$(10))
    Powinno być raczej
    Print Chr$(n);

    średnik powoduje, że kolejne znaki nie są rozdzielane CRLF
  • #4 557313
    robusta
    Poziom 15  
    no jasne - jesteście Wielcy przez duże W!
    Jeszcze raz bardzo dziękuję.
    Pozdrawiam
    Przemo
REKLAMA