|
Обмен данными между GSM-модулями |
|
|
|
Nov 21 2014, 01:48
|

Профессионал
    
Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226

|
Цитата(Aner @ Nov 21 2014, 02:00)  x893 вы забросили вашу разработку трекера, та что на гит-хабе? Забросил - не до этого Хотя и сервер есть и люди пользуются. Просто надоело Сейчас новый трекер делаю - 25х14 мм (без антен и батарейки) - вот где раздолье !
Сообщение отредактировал x893 - Nov 21 2014, 01:51
|
|
|
|
|
Nov 21 2014, 07:30
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(Aner @ Nov 21 2014, 00:34)  А чем не устраивают те, что продаются? Самому освоить разработку непросто, проще купить готовый. Проще у китайцев всё покупать, а самим лес валить японскими бензопилам  Цитата(x893 @ Nov 21 2014, 02:12)  Особенно при таком багаже знаний Так ведь надо когда-то начинать  Вот я и хочу понять, насколько это сложно, что нужно освоить и как в общих чертах организовать передачу данных с мопеда на комп.
|
|
|
|
|
Nov 25 2014, 00:35
|
Местный
  
Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491

|
Цитата(ДЕЙЛ @ Nov 21 2014, 11:30)  Так ведь надо когда-то начинать  Вот я и хочу понять, насколько это сложно, что нужно освоить и как в общих чертах организовать передачу данных с мопеда на комп. Как вариант, можно использовать CSD-вызов - это вообще сверх элементарно  Установка соединения с сервером по гпрс - это, грубо говоря, одна ат-комманда  Ничего сверхъестественного в этом нету. Все описано миллионы раз в инете и тысячи - конкретно на этом форуме.
|
|
|
|
|
Nov 25 2014, 13:57
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(SpyBot @ Nov 25 2014, 04:35)  Как вариант, можно использовать CSD-вызов - это вообще сверх элементарно  Установка соединения с сервером по гпрс - это, грубо говоря, одна ат-комманда  Ничего сверхъестественного в этом нету. Все описано миллионы раз в инете и тысячи - конкретно на этом форуме. пока вроде соединился с интернетом, увидел свой айпишник. Каков сам принцип передачи файла с одного модуля на другой? Кто и как учавствует в этой передаче? Какую теорию почитать надо? Скачал книгу Попова про GSM - там всякие ячейки интерференции, скачал про GPRS - там услуги связи и перспективы роста скорости мобильного интернета.  Цитата(ДЕЙЛ @ Nov 20 2014, 17:33)  написано, что модуль не поддерживает FTP и HTTP. на что это может повлиять? Для чего его можно применить?
|
|
|
|
|
Nov 26 2014, 08:03
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Читаю вот тут: http://habrahabr.ru/post/119030/не совсем понятна строка Цитата "AT+CDNSCFG="8.8.8.8","8.8.4.4"" Этой командой устанавливаются сервера DNS, которые будет использовать модуль в мануале пишут, что это первый и второй домен. Т.е. айпишник первого модуля и второго?
|
|
|
|
|
Nov 26 2014, 10:39
|
Частый гость
 
Группа: Участник
Сообщений: 168
Регистрация: 14-02-10
Пользователь №: 55 490

|
Цитата(ДЕЙЛ @ Nov 26 2014, 12:03)  Т.е. айпишник первого модуля и второго? Нет, это айпишники специальных серверов, которые преобразуют буквенные адреса в "айпишники" по запросу вашего модуля. Второй адрес -- дублер на случай выхода из строя первого. Что такое ДНС? Объясните, DNS-сервер — как это работаетdns сервер что этоУспехов!
--------------------
#define TRUE (4==(2*2))
|
|
|
|
|
Nov 27 2014, 00:12
|
Местный
  
Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491

|
Цитата(ДЕЙЛ @ Nov 26 2014, 12:03)  Читаю вот тут: http://habrahabr.ru/post/119030/не совсем понятна строка в мануале пишут, что это первый и второй домен. Т.е. айпишник первого модуля и второго? Это скорее всего не понадобится. Обычно можно сразу давать команду AT+CIPSTART, которая и установит соединение.
|
|
|
|
|
Nov 27 2014, 09:13
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(Владивольт @ Nov 26 2014, 14:39)  Нет, это айпишники специальных серверов, которые преобразуют буквенные адреса в "айпишники" по запросу вашего модуля. Второй адрес -- дублер на случай выхода из строя первого. Что такое ДНС? Объясните, DNS-сервер — как это работаетdns сервер что этоУспехов! дошло вчера Вечером получалось соединиться с интернетом. Писал что-то вроде AT+CIPSTART="TCP","ya.ru",80 затем указал число передаваемых байт и от балды набранные с клавиатуры символы. В ответ пришёл текст в HTML-тегах, где было написано, что запрос некорректный. Т.е. получается, что связь с интернетом настроена, данные от меня доходят до удалённого сервера. Теперь крутится вопрос - а нельзя ли вместо "ya.ru" указать айпишник второго GSM-модуля и точно так же отправить данные? Проверить пока руки не дошли.
|
|
|
|
|
Nov 27 2014, 12:19
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(x893 @ Nov 27 2014, 13:59)  А почему нельзя прочитать руководство к модулю с примерами установки соединения и приема.отправки ? Гораздо быстрее и понятнее будет. там нет такого описания, только в общих чертах сказано, какими командами отпралять данные по какому-либо адресу, щас просто интересуюсь, попробовать руки пока не дошли Цитата(rx3apf @ Nov 27 2014, 14:30)  А теперь самое время погуглить и узнать про "серые" и "белые" ip-адреса. И про NAT. погуглил. Но ведь я отправляю в интернет байты, в ответ ругательства, но тоже с какого-то сервера приходят. Значит этот сервер может мои байты переслать другому такому же модулю. Т.е. для передачи данных между GSM-модулями с серыми адресами обязательно нужен промежуточный сервер? А если у меня серый адрес, то в пределах одной соты можно общаться?
|
|
|
|
|
Nov 27 2014, 15:22
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(ДЕЙЛ @ Nov 27 2014, 15:19)  Т.е. для передачи данных между GSM-модулями с серыми адресами обязательно нужен промежуточный сервер? Да. Цитата А если у меня серый адрес, то в пределах одной соты можно общаться? Вопрос интересный... Но хотя бы надо знать номер порта, а они тоже все время меняются.
|
|
|
|
|
Mar 12 2015, 10:51
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(SpyBot) Обычно можно сразу давать команду AT+CIPSTART, которая и установит соединение. Допустим, что соединение установилось с каким-то сервером. Дальше я хочу записать данные в конкретный файл на удалённом сервере. Какими командами нужно пользоваться? Где их найти? Как будет выглядеть AT-команда для запроса страницы yandex.ru? Т.е. в ответ на эту команду должен прийти текст вроде этого: Цитата <!DOCTYPE html> <html class="i-ua_js_yes i-ua_css_standart i-ua_browser_firefox i-ua_pseudo_yes js m-border-radius i-ua_inlinesvg_yes m-svg i-ua_animation_yes" lang="ru"><head xmlns:og="http://ogp.me/ns#"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>Яндекс</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="apple-touch-icon" href="http://yastatic.net/morda-logo/i/apple-touch-icon/ru-76x76.png" sizes="76x76"><link rel="apple-touch-icon" href="http://yastatic.net/morda-logo/i/apple-touch-icon/ru-120x120.png" sizes="120x120"><link rel="apple-touch-icon" href="http://yastatic.net/morda-logo/i/apple-touch-icon/ru-152x152.png" sizes="152x152"><link rel="apple-touch-icon" href="http://yastatic.net/morda-logo/i/apple-touch-icon/ru-180x180.png" sizes="180x180"><link rel="alternate" type="application/rss+xml" title="Новости Яндекса" href="http://company.yandex.ru/news/news.rss"><link rel="alternate" type="application/rss+xml" title="Блог Яндекса" href="http://company.yandex.ru/blog/index.rss"><link rel="search" href="http://yandex.ru/opensearch.xml" title="Яндекс" type="application/opensearchdescription+xml"><link rel="shortcut icon" href="http://yastatic.net/morda-logo/i/favicon_islands.ico"><meta property="og:title" content="Яндекс"><meta property="og:type" content="website"><meta property="og:image" content="//yastatic.net/morda-logo/i/share-logo-ru.png"><meta ..................... .....................
></div><i class="b-counter" style="background: url(//www.tns-counter.ru/V13a**5cd4d635da5c3fdb9cf9f5a4e2b6e7da**yandex_ru/ru/CP1251/tmsec=yandex_main/0);"></i><div style="display:none" class="page-info">{"static":"2.264","skins":"1.79"}</div><!--s54.wfront.yandex.net--><div style="height:0;overflow:hidden;"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="fco" height="1" width="1"><param name="movie" value="//yastatic.net/browser-cookie/flash-cookie.swf"><param name="allowScriptAccess" value="Always"><embed src="%D0%AF%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_files/flash-cookie.swf" allowscriptaccess="Always" id="fce" height="1" width="1"></object></div><object style="position:absolute;left:-500px;top:0;visibility:hidden" data="%D0%AF%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_files/_search.js"></object><object style="position:absolute;left:-500px;top:0;visibility:hidden" data="%D0%AF%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_files/jquery.js"></object></body></html>
|
|
|
|
|
Mar 12 2015, 11:54
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(ДЕЙЛ @ Mar 12 2015, 13:51)  Допустим, что соединение установилось с каким-то сервером. Дальше я хочу записать данные в конкретный файл на удалённом сервере. Что у вас крутится на этом 'удаленном сервере'? Для ftp это будут одни команды, для WEB сервера (http) - другие Цитата Какими командами нужно пользоваться? Где их найти? В описаниях соответствующих протоколов, вестимо: ftp - RFC959http - RFC7231Цитата Как будет выглядеть AT-команда для запроса страницы yandex.ru? Как то так: Код AT+CIPSTART="TCP","ya.ru",80 GET /index.html HTTP/1.1 (Не забудьте про пустую строку в конце! Ее форум съел, а без нее работать не будет  )
|
|
|
|
|
Mar 12 2015, 13:32
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(XVR @ Mar 12 2015, 15:54)  Как то так: Код AT+CIPSTART="TCP","ya.ru",80 GET /index.html HTTP/1.1 (Не забудьте про пустую строку в конце! Ее форум съел, а без нее работать не будет  ) Что за пустая строка в конце? Можно скрин, если форум съедает? http://badembed.ru/sim900-tcp-soedinenie-s-serverom/Цитата -> AT+CIPSEND — запрос на посылку сообщения серверу
<- > — в ответе символ готовности, после его получения можно вводить данные, которые надо передать
-> data — данные которые необходимо передать. После ввода данных необходимо указать модему, что сообщение окончено и его надо передавать серверу — для этого передают следующую команду
-> 26 — команда конца сообщения (0x1A) после нее модем передает серверу данные data
-< SEND OK
-> AT+CIPCLOSE — закрытие соединения с сервером или можно вызвать AT+CIPSHUT Правильно я понимаю, что команды серверу нужно формировать и отправлять в виде данных data? Или для этого нужны какие-то AT-команды?
|
|
|
|
|
Mar 12 2015, 16:18
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(ДЕЙЛ @ Mar 12 2015, 16:32)  Что за пустая строка в конце? Можно скрин, если форум съедает? Имелось в виду, что "HTTP/1.1" надо завершить окончанием строки (CR,LF) и сделать это дважды (т.е. послать CR,LF,CR,LF - не помню, правда, есть ли необходимость в LF, но я лично для удобства отладки вседа делаю так, чтобы на терминале видно было сразу). Цитата Правильно я понимаю, что команды серверу нужно формировать и отправлять в виде данных data? Или для этого нужны какие-то AT-команды? Либо после промптера на +CIPSEND (т.е. data), либо перевести модем в "прозрачный" режим, и затем передавать и получать без использования AT-команд.
Сообщение отредактировал rx3apf - Mar 12 2015, 16:18
|
|
|
|
|
Mar 13 2015, 10:37
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(rx3apf @ Mar 12 2015, 19:18)  Имелось в виду, что "HTTP/1.1" надо завершить окончанием строки (CR,LF) и сделать это дважды (т.е. послать CR,LF,CR,LF - не помню, правда, есть ли необходимость в LF, но я лично для удобства отладки вседа делаю так, чтобы на терминале видно было сразу). Угу, и LF тоже надо посылать - в HTTP спецификации это явно требуется.
|
|
|
|
|
Mar 14 2015, 15:29
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
делаю по шагам, как написано вот тут http://badembed.ru/sim900-tcp-soedinenie-s-serverom/Дохожу вот до этой строки Цитата -> AT+CIPSEND — запрос на посылку сообщения серверу
<- > — в ответе символ готовности, после его получения можно вводить данные, которые надо передать Символ готовности никак не хочет появляться даже посли 20минутного ожидания.
|
|
|
|
|
Mar 16 2015, 12:57
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(XVR @ Mar 16 2015, 16:05)  Точно не появляется? Это просто символ '>' безо всяких переводов строк после него. Не появляется этот символ. Попробую сегодня вечером или в ближайшее время скопировать сюда файл лога.
|
|
|
|
|
Mar 16 2015, 19:32
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
CODE //перезапуск 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 и в этом месте всё виснет, никаких признаков жизни
|
|
|
|
|
Mar 17 2015, 12:18
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(megajohn @ Mar 17 2015, 14:14)  а ножка RTS в каком состоянии ? Включено ли управление Flow Control ? Я использую только TX-RX, остальные ножки не трогаю. Это принципиально для работы с TCP/IP? Цитата(XVR @ Mar 17 2015, 14:07)  А как вы получаете лог? Может оно буферизует символы (до символа конца строки)? скопировал как текст из окна программы
|
|
|
|
|
Mar 24 2015, 13:57
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(XVR @ Mar 18 2015, 17:01)  Тогда показывайте текст программы (ту часть, что читает данные с модуля) Вкратце вот так: Код 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. В инете не нашёл, поэтому сам сочинил. До этого ковырялся в программе от другова модуля.
Сообщение отредактировал ДЕЙЛ - Mar 24 2015, 22:01
|
|
|
|
|
Mar 25 2015, 14:45
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Ну вот же - Код if (RXBUF[i]<>$A) and (RXBUF[i]<>$D) then По тексту программы видно, что пока она не примет символ конца строки или перевода каретки (CR или LF) она ничего никуда не выводит, а тихо и молча накапливает принятые символы в RxData А модуль после приглашения '>' никаких CR/LF не добавляет (в отличие от остальных команд)
|
|
|
|
|
Mar 30 2015, 21:47
|
Местный
  
Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085

|
Цитата(XVR @ Mar 25 2015, 18:45)  Ну вот же - Код if (RXBUF[i]<>$A) and (RXBUF[i]<>$D) then По тексту программы видно, что пока она не примет символ конца строки или перевода каретки (CR или LF) она ничего никуда не выводит, а тихо и молча накапливает принятые символы в RxData А модуль после приглашения '>' никаких CR/LF не добавляет (в отличие от остальных команд) Есть такое дело, неподумавши накодил Подправил свою программу ещё в некоторых местах и добавил функцию сниффера(для него ещё нужно железо).
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|