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

wysyłanie hexa w bascom - gdzie skaszaniłem?

robusta 01 Cze 2004 17:49 2166 4
REKLAMA
  • #1 670362
    robusta
    Poziom 15  
    Witam,
    Kiedy wysyłam do urządzenia zewnętrznego z atmela '2313 używając bascoma ciąg znaków 2D567F7E2B00 w hexadecymalu wszystko jest ok.
    Jednak kiedy muszę wysłać ciąg 2D567FBF1500 to brak reakcji urządzenia. Komenda oczywiście poprawna.
    Poniżej prosty programik:

    $crystal = 4000000
    $baud = 9600
    $regfile = "2313def.dat"
    Config Kbd = Portb
    Dim A As Byte , C As Integer , D As Integer , E As Integer , F As Integer , G As Integer, I As Integer , J As Integer , K As Integer , L As Integer

    C = &H2D
    D = &H56
    E = &H7F
    F = &HBF
    G = &H2A
    I = &H00
    J = &H15
    K = &H7E
    L = &H2B

    Do
    A = Getkbd()
    Select Case A

    Case 0 : Print Chr(c);
    Print Chr(d);
    Print Chr(e);
    Print Chr(e);
    Print Chr(g);
    Print Chr(i);

    Case 1 : Print Chr(c);
    Print Chr(d);
    Print Chr(e);
    Print Chr(f);
    Print Chr(j);
    Print Chr(i);

    Case 2 : Print Chr(c);
    Print Chr(d);
    Print Chr(e);
    Print Chr(k);
    Print Chr(l);
    Print Chr(i);

    End Select
    Loop
    End

    Zauważyłem, że nie działa tylko pod guzikiem 2 - czyli tylko przy zmiennej "f" gdzie jest wartość hex BF.
    Czy należało by ustawić zmienną f jako long? czy jeszcze rozbić?

    Pomóżcie proszę.
    Dzięi i pozdrawiam
    Przemo

    Przeniesiono z Programowanie Ogólne. - arnoldziq
  • REKLAMA
  • #2 670486
    LesterG
    Poziom 2  
    Miau
    Jak F nie robi to tak ze k nie bedzie
    Chyba te zmienne powinny byc Dim As Byte czyli bez znaku
    odpowiednik C Unsigned Char Bascom ma problemy z conversja
    Lepiej to use GNU WinAvr C ale jak to porawisz to powinno robic mysle.
    Procesor tez Dziadoski u nas uz go nie ma - uzywaj Tiny2313
    zamiast tego. chyba ze aby zrobic bo jak skonczysz to CPU bedzie w dostepne tylko na Ukrainie.
    Ja preferuje ATMega8 do swoich zabaweczek u nas kosztuje jakie 3.5 Dolca

    Psia Morda Lesio
    Mozesz do mnie napisac na DogiLester(_at_)aol.com
    To sie moze podziele z toba jakimi Kosteczkami jak psiak z psiakiem
    Kostek mam sporo
    8O
  • REKLAMA
  • #3 670598
    robusta
    Poziom 15  
    dzięki - kosteczki to nie problem - na '2313 mam złożoną taką część testową - a do tego wystarczy.
    Niestety na C puki co się nie znam na tyle aby sobie z tym poradzić.
    Jak myślicie? Działa bezproblemowo z guzikami 1 i 3 a w drugim gdzie wystąpiła wartość hex BF nie chce funkcjonować.
    Pozdrawiam
    Przemo
  • REKLAMA
  • #4 675856
    euromatic
    Poziom 21  
    Nie gniewaj się , ale moim zdaniem zakręciłeś to jak "kogel mogel"
    jeżeli chodzi ci o wysyłanie tekstu to prosciej będzie tak>>>

    najpierw ustal jaka jest wartość zmiennej <A> po naciśnięciu różnego klawisza, ( 0...15)
    po to żebyś wiedział gdzie wpisać wymaganą literę w tabeli "teksty".

    PS:
    zamiast kombinować zacznij używać gotowych funkcji, twoja funkcja wysyła ciąg tych wartości w kółko dopuki trzymasz guzik, myślę , że może to przeszkadzać odbiornikowi który dostaje dane nonstop.
    ja wprowadziłem "WAIT 1"
    cp znaczy że jak będziesz trzymał klawisz to wysle co 1 sekundę
    powinieneś dodać flagę która zapobiegłaby takiej sytuacji( jeszcze ją dopiszę)
    pozdrawiam




    $crystal = 4000000
    $baud = 9600
    $regfile = "2313def.dat"
    Config Kbd = Portb
    Dim A As Byte
    Dim flaga as bit

    Do

    A = Getkbd()
    if a = 16 then flaga = 0
    If A < 16 and flaga = 0 Then
    flaga = 1
    Print Lookupstr(a , Teksty );
    'wait 1
    End If
    Loop

    End

    Teksty:
    Data " " , "A" , "ABC" , "2D567F7E2B00" , "2D567FBF1500" , "E" , "itd"
  • #5 675950
    robusta
    Poziom 15  
    dzięki wielkie - naturalnie Twoja uwaga jest słuszna i to zmienię jednak rozwiązanie było bardziej prozaiczne - aż wstyd się przyznać ale obrócone były przewody do rs485 :oops:
    pozdrawiam
    Przemo
REKLAMA