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

[atmega8535][BASCOM] Złe wyświetlanie dnaych z rs232 na lcd

mały naukowiec 30 Wrz 2008 20:52 2011 10
REKLAMA
  • #1 5586476
    mały naukowiec
    Poziom 20  
    Mam czytnik komunikujący się po rs232 z komputerem
    Postanowiłem podpiąć go do mojego komputerka PECEL-a, ale po napisaniu prostego programiku:
    
    $crystal = 8000000
    $baud = 9600
    Dim A As String * 10
    
    Cls
    Cursor Off
    Lcd "Czytnik"
    Wait 1
    Cls
    
    Do
    Lcd "Przesun karte"
    Input A
    Cls
    If A = "*" Then
    Locate 1 , 1
    Lcd "Error!"
    Locate 2 , 1
    Lcd "Sproboj ponownie"
    Wait 1
    Else
    Locate 1 , 1
    Lcd "Numer tej karty"
    Locate 2 , 1
    Lcd A
    Wait 1
    Cls
    End If
    Cls
    Loop
    

    Wszytko po wgraniu dziła pięknie, wyświetla się, odczytuje dane z czytnika, ale po drugim i następnych przesunięciach karty (za pierwszym razem jest OK) przed jej numerem pojawia się w jednym kwadraciku jakiś krzak
    Wieci jak temu zaradzić??
    Połączenia są na 100% OK
    Z góry thnx
  • REKLAMA
  • #2 5587704
    Maciek4141
    Poziom 22  
    Też miałem z tym problem i kolega z Elektrody doradził mi żebym zastosował zamiast Input to Inputbin. I tak samo zamiast Print to Printbin, tyle, że ja to robiłem na RS485.

    Pozdrawiam
  • REKLAMA
  • #3 5588449
    mały naukowiec
    Poziom 20  
    Po wykorzystaniu inputbin za pierwszym razem jest ok, ale za drugim, trzecim i czwartym pojawiają się też krzaki, tylko że tym razem po drugim przesunięciu pojawiają się krzaki w 1 i 2 kwadraciku, za drugim w 3 i 4, a za trzecim najpierw 5 i 6, a potem przesuwają się automatycznie na 7 i 8.
    Po piątym przejechaniu zaczyna się to od nowa, czyli na początku jest OK, a potem źle. Nie wiem co może być przyczyną, bo czytnik po podpięciu do komputera wysyła mi np. *5951991, z tym że * dodaje zawsze do numeru karty, a sam PECEL bez problemu odbiera dane z kompa przy tym samym programie...
    Może jest to wina kwarcu 8Mhz, co przy prędkości 9600b/s daje wg BASCOM-a 0.16% błędu. Sprawdziłem i w czytniku jest kwarc 11.059200 wraz z at89c2051 chyba a u mnie w avr ma kwarc 8Mhz
  • REKLAMA
  • #4 5588563
    BoskiDialer
    Poziom 34  
    Sprawdź, czy w odbieranych danych nie pojawiają się znaki o kodach mniejszych od 32 lub większych od 127. Możesz pobierać znaki pojedynczo po czym wypisywać ich kody rozdzielając spacjami (lub hex i bez spacji). Jeśli pojawią się znaki inne niż 13 i 10, to mogą one zostać źle zinterpretowane przez funkcję Input (chociaż nie wiem jak jest ona zaimplementowana dokładnie).
  • #5 5589367
    mały naukowiec
    Poziom 20  
    Wg tego programu za pierwszym razem podaje mi numer karty, potem jest już tylko error ://
    
    $crystal = 8000000
    $baud = 9600
    Dim T As String * 10
    Enable Interrupts
    Cursor Off
    Locate 1 , 1
    Lcd "test1"
    Wait 1
    Cls
    Do
    Input T
    If T <> "*5951991" Then
    Locate 1 , 1
    Lcd "Error"
    Wait 1
    Cls
    Else
    Lcd T
    Wait 2
    Cls
    End If
    Loop
    

    Jak sprawdzic numery tych znaków??
  • REKLAMA
  • #7 5597027
    teedd
    Poziom 19  
    Witaj.
    Jeśli poradziłeś sobie z problemem, to podziel się swoimi doświadczeniem z innymi. Może ktoś będzie miał podobny problem?
    teedd
  • #8 5597778
    mały naukowiec
    Poziom 20  
    Ten czytnik wysyła poza znakiem końca linii o kodzie 13 kod następnego wiersza o numerze 10
    Dane dalej pobieram za pomocą funkcji input, ale po niej w buforze zostaje znak 10, następnego wiersza, który pobieram za pomocą inkey :D
    Teraz jest już wszystko OK
  • #9 5598011
    zumek
    Poziom 39  
    mały naukowiec napisał:
    .. , ale po niej w buforze zostaje znak 10, następnego wiersza, który pobieram za pomocą inkey :D
    Teraz jest już wszystko OK

    No ... nie za bardzo jest OK.
    Czyżby kolega nie wiedział o istnieniu CONFIG INPUT :?:

    Piotrek
  • #11 5600391
    mały naukowiec
    Poziom 20  
    Nie, nie wiedziałem o poleceniu config input, Korzystałem z polskiego helpa, a tam nic nie ma o tym poleceniu, ale w angielskim już jest :D i już wiem jak tego używać.
    Dzięki wszystkim za pomoc
REKLAMA