Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ builder - komendy AT - brak odpowiedzi

bodziopiwoni 16 Maj 2013 23:46 1362 2
  • #1 16 Maj 2013 23:46
    bodziopiwoni
    Poziom 9  

    Witam
    Piszę program do komunikacji z modemem AT z wykorzystaniem portu szeregowego. Otwieram port poprawnie, wpisuje komendę "AT\r" i niestety program się zawiesza a modem nie daje żadnej odpowiedzi. Wykorzystuje sniffer portu com i oto co jest przesyłane przez mój program:


    Code:
    000086: Write Request (DOWN), 16.05.2013 23:16:08.214 [b]+0.0[/b]
    
    Buffer size: 0x3 bytes [i]//at<CR>[/i]


    Natomiast przez chociażby putty jest coś takiego:
    Code:
    000129: Write Request (DOWN), 16.05.2013 23:18:18.084 [b]+7.191[/b]
    
    Buffer size: 0x2 bytes[i] // at[/i]
    000137: Read Request (UP), 16.05.2013 23:18:18.084 [b]+0.0[/b]
    Buffer size: 0x2 bytes [i]//at[/i]
    Status: 0x00000000
    000145: Write Request (DOWN), 16.05.2013 23:18:24.340 [b]+5.881[/b]
    Buffer size: 0x1 bytes[i]// <CR> czyli 0D[/i]

    000153: Read Request (UP), 16.05.2013 23:18:24.340 [b]+0.0[/b]
    Buffer size: 0x7 bytes [i]// OK[/i]
    Status: 0x00000000


    W programie pod buttonem mam:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    natomiast funkcja:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Próbowałem wpisywać komendy w następujących zestawieniach:
    at
    at/r
    at/r/n
    Za każdym razem program się wiesza a na snifferze nie widzę żadnej odpowiedzi. Gdzie popełniłem błąd ?

    0 2
  • #2 19 Maj 2013 16:40
    Dżyszla
    Poziom 42  

    Generalnie komunikacja powinna wyglądać tak, że wysyłasz jakiś tekst i to wątek lub obsługa zdarzenia powinna odebrać to, co przychodzi. Próbowałeś poszukać gotowych komponentów do komunikacji po COM? Myślę, że byłoby łatwiej i pewniej.

    0
  • #3 20 Maj 2013 23:25
    bodziopiwoni
    Poziom 9  

    Odbiór w tej chwili mnie nie tyle interesuje co wysyłanie komend. Mogę obserwować co dzieje się z modemem poprzez wspomniany sniffer portu. Po wysłaniu komendy "AT" modem w żaden sposób nie odpowiada.

    1. Czy w takiej transmisji powinienem zastosować jakieś specjalne warunki (typu oczekiwanie na znak zachęty, czas opóźnienia itp.) ?

    Kiedy wysyłam komendy poprzez np. putty to przy Write Request mam coś w rodzaju opóźnienia (poniżej jest to +5,881). Używając mojego kodu takie "opóźnienie" nigdy nie występuje. W funkcji Write dodaje komendę Sleep(500) ale niestety to nie przynosi efektów.

    Code:
    000137: Read Request (UP), 16.05.2013 23:18:18.084 [b]+0.0[/b]
    
    Buffer size: 0x2 bytes //at
    Status: 0x00000000
    000145: Write Request (DOWN), 16.05.2013 23:18:24.340 +5.881
    Buffer size: 0x1 bytes// <CR> czyli 0D

    0