Перейти к содержанию
    

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

//перезапуск
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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

а ножка RTS в каком состоянии ? Включено ли управление Flow Control ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а ножка RTS в каком состоянии ? Включено ли управление Flow Control ?

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скопировал как текст из окна программы
Тогда показывайте текст программы (ту часть, что читает данные с модуля)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тогда показывайте текст программы (ту часть, что читает данные с модуля)

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

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

Изменено пользователем ДЕЙЛ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот же -

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот же -

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

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

 

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

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

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

SIM900_DIALOG.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://alex-exe.ru/programm/terminal-sim900-dialog/ здесь последняя версия терминала и статья на эту тему

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...