Jump to content

    
Sign in to follow this  
ДЕЙЛ

Обмен данными между GSM-модулями

Recommended Posts

//перезапуск
AT+CFUN=1,1 
yyyy

//проверка регистрации в сети
Send: AT+CREG?<cr><lf>	   
AT+CREG?

+CREG: 1,1				 

OK

//проверка GPRS
Send: AT+CGATT?<cr><lf>	
AT+CGATT?

+CGATT: 1

OK

//закрытие всех соединений
Send: AT+CIPSHUT<cr><lf>  
AT+CIPSHUT

SHUT OK

//проверка инициализации модуля IP
Send: AT+CIPSTATUS<cr><lf>  
AT+CIPSTATUS

OK

STATE: IP INITIAL

//устанавливаем только одно соединение
Send: AT+CIPMUX=0<cr><lf>  
AT+CIPMUX=0

OK

//настройки GPRS
Send: AT+CSTT="internet.mts.ru","mts","mts"<cr><lf> 
AT+CSTT="internet.mts.ru","mts","mts"

OK

//соединяемся с заданными настройками 
Send: AT+CIICR<cr><lf> 
AT+CIICR

OK

//смотрим свой IP
Send: AT+CIFSR<cr><lf> 
AT+CIFSR

10.49.180.250

//включаем TCP-соединение
Send: AT+CIPSTART="TCP","yandex.ru",80<cr><lf>  
AT+CIPSTART="TCP","yandex.ru",80

OK

CONNECT OK

//после этой команды должно появиться приглашение для записи отправляемых данных
Send: AT+CIPSEND<cr><lf> 
AT+CIPSEND

 

и в этом месте всё виснет, никаких признаков жизни

Share this post


Link to post
Share on other sites
а ножка RTS в каком состоянии ? Включено ли управление Flow Control ?

Я использую только TX-RX, остальные ножки не трогаю. Это принципиально для работы с TCP/IP?

 

А как вы получаете лог? Может оно буферизует символы (до символа конца строки)?

скопировал как текст из окна программы

Share this post


Link to post
Share on other sites
Тогда показывайте текст программы (ту часть, что читает данные с модуля)

Вкратце вот так:

procedure TForm1.RxTimerTimer(Sender: TObject);
var
     Errors : Dword;
LenReceive : DWord;
          i : integer;
RxData, Log, NumStr : string;

begin
RxData := '';
ClearCommError(hCom, Errors ,@Stat);//?????????? ????
LenReceive := Stat.cbInQue;
If LenReceive>0 Then
   Begin  {1}
     ReadFile(hCom,RXBUF,LenReceive,LenReceive,nil);
     For i:=0 to LenReceive-1 Do
       Begin
         if (RXBUF[i]<>$A) and (RXBUF[i]<>$D) then
           begin
            RxData := RxData + Chr(RXBUF[i]);
           end
         else
           begin
               ListBox1.Items.Strings[ListBox1.ItemIndex] :='       '+RxData;
               RxData := '';
               ListBox1.TopIndex := ListBox1.Items.Count - 1;
           end;

       End;
   End; {1}

end;

Данные он отправляет без приглашения, смски тоже. В прикреплённом файле только что дописанная программа для работы с SIM900. В инете не нашёл, поэтому сам сочинил. До этого ковырялся в программе от другова модуля.

SIM900_DIALOG.rar

Edited by ДЕЙЛ

Share this post


Link to post
Share on other sites

Ну вот же -

         if (RXBUF[i]<>$A) and (RXBUF[i]<>$D) then

По тексту программы видно, что пока она не примет символ конца строки или перевода каретки (CR или LF) она ничего никуда не выводит, а тихо и молча накапливает принятые символы в RxData

 

А модуль после приглашения '>' никаких CR/LF не добавляет (в отличие от остальных команд)

Share this post


Link to post
Share on other sites
Ну вот же -

         if (RXBUF[i]<>$A) and (RXBUF[i]<>$D) then

По тексту программы видно, что пока она не примет символ конца строки или перевода каретки (CR или LF) она ничего никуда не выводит, а тихо и молча накапливает принятые символы в RxData

 

А модуль после приглашения '>' никаких CR/LF не добавляет (в отличие от остальных команд)

Есть такое дело, неподумавши накодил :rolleyes:

Подправил свою программу ещё в некоторых местах и добавил функцию сниффера(для него ещё нужно железо).

SIM900_DIALOG.rar

Share this post


Link to post
Share on other sites

Альтернативный и более оптимальный вариант увязки двух точек по GSM - GPRS.

Но тут без договора с провайдером не обойтись (если достаточно передача даных в рамках одной сети-провайдера).

Получаем 2 стат. IP в интрасети провайдера. И нет необходимости работать с DNS, лезть во внешнюю сеть.

Не надо проходить стадию "установить соединение".

IP-пакет влетел в терминал на одной стороне, и вылетел на другой.

Для такой связи оптимально и по простоте и по быстродействию использовать не TCP а UDP - можешь сам реализовать протокол обмена.

Платежные терминалы кажется так работают. ( креснтое знамение 3 перстами - блокировка "кажется" )

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this