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

[AVR][BASCOM]Niepotrzebne znaki z RS485

Maciek4141 08 Sie 2008 20:13 1544 2
REKLAMA
  • #1 5421420
    Maciek4141
    Poziom 22  
    Drodzy koledzy. Mam poprawnie skonfigurowane połączenie pomiędzy dwoma Atmegami8 przez RS485. Nie ma problemu z komunikacją wszystkie znaki odbieram, niestety pojawia się przed każdym ciągiem danych znak prawdopodobnie "spacji".
    Na razie robię proste testy na RS485, ale później muszę użyć tego do komunikacji między ruchomą głową a sterownikiem.

    1. Najpierw próbowałem zapisywać otrzymane ciągi znaków(tylko liczby) do zmiennej tybu BYTE, ale udawała się tylko pierwsza komunikacja, następnym razem LCD wyświetla "0".
    2. Potem spróbowałem otrzymane znaki zapisać do zmiennej typu String*3, wszystko pięknie ładnie ale pojawia mi się znak spacji, i zamiast wyświetlać "123", wyświetla mi " 123", co chyba nei umożliwia "przekopiowanie" jej do zmiennej typu BYTE.

    Co mam zrobić aby usunąć tę spacje i jak następnie otrzymane dane "wrzucić" do zmiennej typu BYTE lub Integer (potrzebne jest mi to ponieważ będą wykonywane na nich operacje liczbowe)?


    Zamieszczam listening nadajnika i odbiornika.

    Odbiornik:

    
    $crystal = 1000000
    $baud = 600
    
    Dim A1 As String * 3
    Dim B1 As String * 3
    Cursor Off
    
    Config Pind.2 = Output
    Config Pind.7 = Output
    
    Enable Interrupts
    Reset Portd.2
    
    Do
    Cls
    Lcd "CZEKAM NA DANE"
    
    Input A1
    Input B1
    
    Cls
    Lcd A1
    Locate 2 , 1
    Lcd B1
    Wait 2
    Loop
    End
    
    


    Nadajnik:
    
    $crystal = 1000000
    $baud = 600
    
    Dim A As Byte
    Dim B As Byte
    
    
    Declare Sub Wyslij
    A = 0
    B = 0
    Config Pind.2 = Output
    Config Pind.7 = Input
    Config Pinb.0 = Output
    
    
    Enable Interrupts
    
    Set Portd.2
    
    
    Do
    If Pind.7 = 1 Then
    Gosub Wyslij
    End If
    Loop
    End
    
    
    Sub Wyslij:
    Incr A
    Incr B
    Incr B
    
    Print A
    Waitms 10
    Print B
    
    Waitms 500
    
    Return
    End Sub
    


    Pozdrawiam i z góry dziękuje za pomoc.
  • REKLAMA
  • #2 5421493
    Dareks
    Poziom 20  
    Zamiast 'Print' użyj 'Printbin'
  • #3 5421527
    Maciek4141
    Poziom 22  
    Dareks, dziękuje serdecznie. Printbin i Inputbin rozwiązał problem.

    Pozdrawiam
REKLAMA