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

[BASCOM] [UART1] [ATMEGA128] Opróżnianie bufora

Jacek Rutkowski 16 Maj 2009 11:41 1493 1
REKLAMA
  • #1 6536252
    Jacek Rutkowski
    Poziom 28  
    Witam,
    próbuję wykorzystać UART1 do odbioru danych przy użyciu bufora ponieważ w docelowym układzie nie mogę czekać na odbiór przez input. Zmienna _rs_tail_ptr1 określa gdzie znajduje się ostatni znak w buforze. Postanowiłem ją wykorzystać, po odebraniu mojej ramki chciałem wyczyścić bufor. Według helpa można do tego wykorzystać komendy inkey lub input, mi jednak nie udaje się wyczyścić bufora. Czy coś robię źle?
    
    $regfile = "m128def.dat"
    $crystal = 9216000
    Dim Ramka As String * 18 At 1120 , R_(18) As Byte At 1120 overlay
    Dim X As byte  
    $baud1 = 19200
    Echo Off
    Config Serialin1 = Buffered , Size = 18
    Open "com2:" For Binary As #1
    do
    If _rs_tail_ptr1 > 17 Then
     For X = 1 To 18
     R_(x) = _rs232inbuf1(x)
     Next X
    print ramka;"  |  ";_rs_tail_ptr1
    Input #1 , Ramka
    print ramka;"  |  ";_rs_tail_ptr1
    loop
    
  • REKLAMA
  • Pomocny post
    #2 6536544
    ZbeeGin
    Poziom 39  
    INKEY i INPUT stricte nie czyszczą bufora. Od tego jest CLEAR SERIALIN. Jednak korzystanie z INKEY i INPUT pobierają dane z bufora i przesuwają wskaźniki, co także powoduje, że bufor jest "opróżniany" - choć dane w pamięci dalej są.
REKLAMA