<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2FGSMExamplesTestGPRS</id>
	<title>Arduino:Примеры/GSMExamplesTestGPRS - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2FGSMExamplesTestGPRS"/>
	<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/GSMExamplesTestGPRS&amp;action=history"/>
	<updated>2026-06-09T00:10:56Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/GSMExamplesTestGPRS&amp;diff=8495918&amp;oldid=prev</id>
		<title>EducationBot в 08:35, 8 июля 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/GSMExamplesTestGPRS&amp;diff=8495918&amp;oldid=prev"/>
		<updated>2023-07-08T08:35:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:35, 8 июля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l473&quot;&gt;Строка 473:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 473:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Навигационная таблица/Портал/Arduino}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikihandbkcom:diff::1.12:old-7735721:rev-8495918 --&gt;
&lt;/table&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/GSMExamplesTestGPRS&amp;diff=7735721&amp;oldid=prev</id>
		<title>EducationBot в 08:32, 20 мая 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/GSMExamplesTestGPRS&amp;diff=7735721&amp;oldid=prev"/>
		<updated>2023-05-20T08:32:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/GSMExamplesTestGPRS&amp;amp;diff=7735721&amp;amp;oldid=20955&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/GSMExamplesTestGPRS&amp;diff=20955&amp;oldid=prev</id>
		<title>Myagkij: Замена текста — «&lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot;&gt;» на «&lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot; enclose=&quot;div&quot;&gt;»</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/GSMExamplesTestGPRS&amp;diff=20955&amp;oldid=prev"/>
		<updated>2016-12-13T19:12:33Z</updated>

		<summary type="html">&lt;p&gt;Замена текста — «&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;» на «&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Arduino панель перехода}}&lt;br /&gt;
{{Перевод от Сubewriter}}&lt;br /&gt;
{{Myagkij-редактор}}&lt;br /&gt;
&lt;br /&gt;
==Тест GPRS при помощи GPS Shield&amp;lt;ref&amp;gt;[https://www.arduino.cc/en/Tutorial/GSMToolsTestGPRS Arduino - GSM Test GPRS]&amp;lt;/ref&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Этот скетч тестирует '''GPRS'''-связь на модуле '''GSM Shield'''. Он пытается подключиться к странице '''arduino.cc'''.&lt;br /&gt;
&lt;br /&gt;
Чтобы использовать '''GPRS''' на '''GPS Shield''', вам нужно знать '''APN''' ('''Access Point Name''', т.е. имя точки доступа), логин и пароль. Информацию об этом (включая самые последние обновления) можно узнать у своего оператора связи. На [http://forums.pinstack.com/f24/tcp_apn_wap_gateway_port_carrier_settings-360 этой странице] можно найти настройки для различных операторов, но учтите, что она может быть устаревшей.&lt;br /&gt;
&lt;br /&gt;
==Необходимое оборудование==&lt;br /&gt;
&lt;br /&gt;
* Плата '''Arduino''';&lt;br /&gt;
* Модуль '''Arduino + Telefonica GSM/GPRS Shield''';&lt;br /&gt;
* '''SIM'''-карта с возможностью передачи данных;&lt;br /&gt;
&lt;br /&gt;
==Цепь==&lt;br /&gt;
&lt;br /&gt;
[[Файл:GSMShield ArduinoUno.png|650px]]&lt;br /&gt;
&lt;br /&gt;
Модуль '''Arduino GSM Shield''', установленный поверх '''Arduino Uno'''&lt;br /&gt;
&lt;br /&gt;
==Код==&lt;br /&gt;
&lt;br /&gt;
Для начала импортируем библиотеку '''GSM'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;GSM.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функционал '''SIM'''-карты может быть заблокирован '''PIN'''-кодом. В этом случае его нужно определить в качестве константы, для чего мы воспользуемся директивой #define. Если у вашей '''SIM'''-карты '''PIN'''-кода нет, значит оставляем это место пустым.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
#define PINNUMBER &amp;quot;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем экземпляры классов '''GSM, GPRS и GSMClient'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
GSMClient client;&lt;br /&gt;
GPRS gprsAccess;&lt;br /&gt;
GSM gsmAccess;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем пару статусных сообщений, которые в случае необходимости будем отправлять на '''Serial Monitor'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
String oktext = &amp;quot;OK&amp;quot;;&lt;br /&gt;
String errortext = &amp;quot;ERROR&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем несколько переменных, которые будут содержать информацию о сервере, пути и прокси, к которому вы собираетесь подключиться. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
char url[] = &amp;quot;arduino.cc&amp;quot;;&lt;br /&gt;
char path[] = &amp;quot;/&amp;quot;;&lt;br /&gt;
char urlproxy[] = &amp;quot;http://arduino.cc&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем переменную, в которой будет храниться ответ от сервера, а также еще одну переменную, информирующую о том, будете ли вы использовать прокси или нет.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
String response = &amp;quot;&amp;quot;;&lt;br /&gt;
boolean use_proxy = false;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В секции setup() инициализируем последовательную передачу данных.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
void setup(){&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь создадим пользовательскую функцию, которая будет обрабатывать входящие данные, идущие через последовательный порт. Аргументом у этой функции будет массив типа char.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
int readSerial(char result[])&lt;br /&gt;
{&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем переменную, которая будет работать счетчиком. Если через последовательный порт будет прибывать информация, мы будем считывать ее в char-массив. Если среди входящих данных попадется символ новой строки, удаляем этот массив и возвращаемся к главному циклу программы.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
int i = 0;&lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    while (Serial.available() &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
      char inChar = Serial.read();&lt;br /&gt;
      if (inChar == '\n')&lt;br /&gt;
      {&lt;br /&gt;
        result[i] = '\0';&lt;br /&gt;
        return 0;&lt;br /&gt;
      }&lt;br /&gt;
      if(inChar!='\r')&lt;br /&gt;
      {&lt;br /&gt;
        result[i] = inChar;&lt;br /&gt;
        i++;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В секции loop() устанавливаем «флаг» для прокси в положение false. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  use_proxy = false;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запускаем соединение с сетью '''GSM''', '''«скармливая»''' функции gsmAccess.begin() аргумент в виде '''PIN'''-кода '''SIM'''-карты. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
Serial.print(&amp;quot;Connecting GSM network...&amp;quot;);&lt;br /&gt;
  if(gsmAccess.begin(PINNUMBER)!=GSM_READY)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(errortext);&lt;br /&gt;
    while(true);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(oktext);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем массив типа char, в котором будем держать '''APN'''. Далее используем созданную нами функцию readSerial() для считывания байтов, входящих через последовательный порт.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
char apn[50];&lt;br /&gt;
  Serial.print(&amp;quot;Enter your APN: &amp;quot;);&lt;br /&gt;
  readSerial(apn);&lt;br /&gt;
  Serial.println(apn);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем массив типа char, в котором будем держать логин к '''APN'''. Далее используем созданную нами функцию readSerial() для считывания байтов, входящих через последовательный порт.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
char login[50];&lt;br /&gt;
  Serial.print(&amp;quot;Now, enter your login: &amp;quot;);&lt;br /&gt;
  readSerial(login);&lt;br /&gt;
  Serial.println(login);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем массив типа char, в котором будем держать пароль к '''APN'''. Затем используем созданную нами функцию readSerial() для считывания байтов, входящих через последовательный порт.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
char password[20];&lt;br /&gt;
  Serial.print(&amp;quot;Finally, enter your password: &amp;quot;);&lt;br /&gt;
  readSerial(password);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Подключаемся к '''GPRS''' при помощи функции gprs.attachGPRS(). В качестве аргументов ей требуются как раз введенные вами ранее '''APN''', '''логин''' и '''пароль'''. &lt;br /&gt;
Когда модем подключит себя к '''GPRS''', функция gsmAccess() вернет значение '''GSM_READY'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
Serial.println(&amp;quot;Attaching to GPRS with your APN...&amp;quot;);&lt;br /&gt;
  if(gprsAccess.attachGPRS(apn, login, password)!=GPRS_READY)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(errortext);&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    Serial.println(oktext);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем массив типа char, где будет храниться любая необходимая нам информация о прокси. Далее используем созданную нами функцию readSerial() для считывания байтов, входящих через последовательный порт.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
char proxy[100];&lt;br /&gt;
    Serial.print(&amp;quot;If your carrier uses a proxy, enter it, if not press enter: &amp;quot;);&lt;br /&gt;
    readSerial(proxy);&lt;br /&gt;
    Serial.println(proxy);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если прокси определился, запрашиваем номер порта и выставляем '''«флаг»''' прокси на true.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
int pport;&lt;br /&gt;
    if(proxy[0] != '\0'){&lt;br /&gt;
      // read proxy port introduced by user&lt;br /&gt;
      char proxyport[10];&lt;br /&gt;
      Serial.print(&amp;quot;Enter the proxy port: &amp;quot;);&lt;br /&gt;
      readSerial(proxyport);&lt;br /&gt;
      // cast proxy port introduced to integer&lt;br /&gt;
      pport = (int) proxyport;&lt;br /&gt;
      use_proxy = true;&lt;br /&gt;
      Serial.println(proxyport);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Создаем переменную, которая будет указывать, подключились вы к серверу или нет. Подключаемся к серверу при помощи функции client.connect(). То, каким образом вы создаете соединение, будет зависеть от того, используете вы прокси или нет.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
Serial.print(&amp;quot;Connecting and sending GET request to arduino.cc...&amp;quot;);&lt;br /&gt;
    int res_connect;&lt;br /&gt;
&lt;br /&gt;
    if(use_proxy)&lt;br /&gt;
      res_connect = client.connect(proxy, pport);&lt;br /&gt;
    else&lt;br /&gt;
      res_connect = client.connect(url, 80);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если подключились, делаем запрос '''HTTP GET''' при помощи функции client.print().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
if (res_connect)&lt;br /&gt;
    {&lt;br /&gt;
      client.print(&amp;quot;GET &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      if(use_proxy)&lt;br /&gt;
        client.print(urlproxy);&lt;br /&gt;
      else&lt;br /&gt;
        client.print(path);&lt;br /&gt;
&lt;br /&gt;
      client.println(&amp;quot; HTTP/1.0&amp;quot;);&lt;br /&gt;
      client.println();&lt;br /&gt;
      Serial.println(oktext);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если подключиться не получилось, сообщаем об ошибке.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
else&lt;br /&gt;
    {&lt;br /&gt;
      Serial.println(errortext);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При помощи функции client.available() проверяем, пришли от сервера какие-нибудь байты или нет. Если да, считываем их в строку response, а затем «заливаем» в char-массив. Проверяем массив подстрокой '''«200 OK»''', которая указывает на корректный ответ от '''arduino.cc'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
Serial.print(&amp;quot;Receiving response...&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    boolean test = true;&lt;br /&gt;
    while(test)&lt;br /&gt;
    {&lt;br /&gt;
      if (client.available())&lt;br /&gt;
      {&lt;br /&gt;
        char c = client.read();&lt;br /&gt;
        response += c;&lt;br /&gt;
&lt;br /&gt;
        char responsechar[response.length()+1];&lt;br /&gt;
        response.toCharArray(responsechar, response.length()+1);&lt;br /&gt;
&lt;br /&gt;
        if(strstr(responsechar, &amp;quot;200 OK&amp;quot;) != NULL){&lt;br /&gt;
          Serial.println(oktext);&lt;br /&gt;
          Serial.println(&amp;quot;TEST COMPLETE!&amp;quot;);&lt;br /&gt;
          test = false;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если сервер отключился, останавливаем работу клиента и закрываем блок loop().&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
if (!client.connected())&lt;br /&gt;
      {&lt;br /&gt;
        Serial.println();&lt;br /&gt;
        Serial.println(&amp;quot;disconnecting.&amp;quot;);&lt;br /&gt;
        client.stop();&lt;br /&gt;
        test = false;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итак, чтобы увидеть статус соединения, загрузите код и откройте '''Serial Monitor'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
Этот тест запрашивает данные об APN, а затем при помощи GPRS&lt;br /&gt;
пытается подключиться к arduino.cc.&lt;br /&gt;
&lt;br /&gt;
Цепь:&lt;br /&gt;
* GSM Shield, подключенный к Arduino&lt;br /&gt;
&lt;br /&gt;
Создан 18 июня 2012 Дэвидом дель Пералем (David del Peral).&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// Библиотеки:&lt;br /&gt;
#include &amp;lt;GSM.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// PIN-код:&lt;br /&gt;
#define PINNUMBER &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Создаем экземпляры классов:&lt;br /&gt;
GSM gsmAccess;        // доступ к GSM (включая параметр «true» для активации отладки)&lt;br /&gt;
GPRS gprsAccess;  // доступ к GPRS&lt;br /&gt;
GSMClient client;  // клиентский сервис для соединения по TCP&lt;br /&gt;
&lt;br /&gt;
// Сообщения для ответа через Serial Monitor:&lt;br /&gt;
String oktext = &amp;quot;OK&amp;quot;;  &lt;br /&gt;
String errortext = &amp;quot;ERROR&amp;quot;;  //  &amp;quot;Ошибка&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// URL и путь (например, arduino.cc)&lt;br /&gt;
char url[] = &amp;quot;arduino.cc&amp;quot;;&lt;br /&gt;
char urlproxy[] = &amp;quot;http://arduino.cc&amp;quot;;&lt;br /&gt;
char path[] = &amp;quot;/&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Переменная для хранения принятого ответа:&lt;br /&gt;
String response = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Используем прокси:&lt;br /&gt;
boolean use_proxy = false;&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
    // Инициализируем последовательную передачу данных:&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  use_proxy = false;&lt;br /&gt;
&lt;br /&gt;
  // Запускаем GSM Shield.&lt;br /&gt;
  // Если у вашей SIM-карты есть PIN-код, указываем его параметром в функции begin():&lt;br /&gt;
  Serial.print(&amp;quot;Connecting GSM network...&amp;quot;);  //  &amp;quot;Подключение к сети GSM...&amp;quot;&lt;br /&gt;
  if(gsmAccess.begin(PINNUMBER)!=GSM_READY)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(errortext);&lt;br /&gt;
    while(true);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(oktext);&lt;br /&gt;
&lt;br /&gt;
  // Считываем APN, введенный пользователем:&lt;br /&gt;
  char apn[50];&lt;br /&gt;
  Serial.print(&amp;quot;Enter your APN: &amp;quot;);  //  &amp;quot;Введите ваш APN: &amp;quot;&lt;br /&gt;
  readSerial(apn);&lt;br /&gt;
  Serial.println(apn);&lt;br /&gt;
&lt;br /&gt;
  // Считываем логин к APN, введенный пользователем:&lt;br /&gt;
  char login[50];&lt;br /&gt;
  Serial.print(&amp;quot;Now, enter your login: &amp;quot;);  //  &amp;quot;Теперь введите логин: &amp;quot;&lt;br /&gt;
  readSerial(login);&lt;br /&gt;
  Serial.println(login);&lt;br /&gt;
&lt;br /&gt;
  // Считываем пароль к APN, введенный пользователем:&lt;br /&gt;
  char password[20];&lt;br /&gt;
  Serial.print(&amp;quot;Finally, enter your password: &amp;quot;);  //  &amp;quot;Наконец, введите пароль: &amp;quot;&lt;br /&gt;
  readSerial(password);&lt;br /&gt;
&lt;br /&gt;
  // Подключаемся к GPRS:&lt;br /&gt;
  Serial.println(&amp;quot;Attaching to GPRS with your APN...&amp;quot;);  //  &amp;quot;Подключаемся к GPRS с помощью ваших данных об APN...&amp;quot;&lt;br /&gt;
  if(gprsAccess.attachGPRS(apn, login, password)!=GPRS_READY)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.println(errortext);&lt;br /&gt;
  }&lt;br /&gt;
  else{&lt;br /&gt;
&lt;br /&gt;
    Serial.println(oktext);&lt;br /&gt;
&lt;br /&gt;
    // Считываем данные о прокси, введенные пользователем:&lt;br /&gt;
    char proxy[100];&lt;br /&gt;
    Serial.print(&amp;quot;If your carrier uses a proxy, enter it, if not press enter: &amp;quot;);  //  &amp;quot;Если ваш оператор использует прокси, введите его, если нет – нажмите Enter&amp;quot;&lt;br /&gt;
    readSerial(proxy);&lt;br /&gt;
    Serial.println(proxy);&lt;br /&gt;
&lt;br /&gt;
    // Если пользователь указал прокси, запрашиваем у него прокси-порт:&lt;br /&gt;
    int pport;&lt;br /&gt;
    if(proxy[0] != '\0'){&lt;br /&gt;
      // Считываем прокси-порт, введенный пользователем:&lt;br /&gt;
      char proxyport[10];&lt;br /&gt;
      Serial.print(&amp;quot;Enter the proxy port: &amp;quot;);  //  &amp;quot;Введите прокси-порт: &amp;quot;&lt;br /&gt;
      readSerial(proxyport);&lt;br /&gt;
      // «Заливаем» этот прокси-порт в переменную pport:&lt;br /&gt;
      pport = (int) proxyport;&lt;br /&gt;
      use_proxy = true;&lt;br /&gt;
      Serial.println(proxyport);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Подключаемся к arduino.cc и выполняем HTTP-запрос:&lt;br /&gt;
    Serial.print(&amp;quot;Connecting and sending GET request to arduino.cc...&amp;quot;);  //  &amp;quot;Подключение и отправка GET-запроса на arduino.cc...&amp;quot;&lt;br /&gt;
    int res_connect;&lt;br /&gt;
&lt;br /&gt;
    // Если используется прокси, подключаемся с его помощью:&lt;br /&gt;
    if(use_proxy)&lt;br /&gt;
      res_connect = client.connect(proxy, pport);&lt;br /&gt;
    else&lt;br /&gt;
      res_connect = client.connect(url, 80);&lt;br /&gt;
&lt;br /&gt;
    if (res_connect)&lt;br /&gt;
    {&lt;br /&gt;
      // Далем запрос типа HTTP 1.0 GET («клиент отправляет запрос»)&lt;br /&gt;
      client.print(&amp;quot;GET &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
      // Если используется прокси, то путь – URL-ссылка arduino.cc:&lt;br /&gt;
      if(use_proxy)&lt;br /&gt;
        client.print(urlproxy);&lt;br /&gt;
      else&lt;br /&gt;
        client.print(path);&lt;br /&gt;
&lt;br /&gt;
      client.println(&amp;quot; HTTP/1.0&amp;quot;);&lt;br /&gt;
      client.println();&lt;br /&gt;
      Serial.println(oktext);&lt;br /&gt;
    } &lt;br /&gt;
    else&lt;br /&gt;
{&lt;br /&gt;
      // Если подключиться к серверу не получилось:&lt;br /&gt;
      Serial.println(errortext);&lt;br /&gt;
    }&lt;br /&gt;
    Serial.print(&amp;quot;Receiving response...&amp;quot;);  //  &amp;quot;Отправка ответа...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    boolean test = true;&lt;br /&gt;
    while(test)&lt;br /&gt;
    {&lt;br /&gt;
      // Если от сервера есть входящие байты, считываем их и проверяем:&lt;br /&gt;
      if (client.available())&lt;br /&gt;
      {&lt;br /&gt;
        char c = client.read();&lt;br /&gt;
        response += c;&lt;br /&gt;
&lt;br /&gt;
        // «Выливаем» полученный ответ из строки в char-массив:&lt;br /&gt;
        char responsechar[response.length()+1];&lt;br /&gt;
        response.toCharArray(responsechar, response.length()+1);&lt;br /&gt;
&lt;br /&gt;
        // Если ответ включает подстроку «200 ОК»:&lt;br /&gt;
        if(strstr(responsechar, &amp;quot;200 OK&amp;quot;) != NULL){&lt;br /&gt;
          Serial.println(oktext);&lt;br /&gt;
          Serial.println(&amp;quot;TEST COMPLETE!&amp;quot;);  //  &amp;quot;Тест завершен!&amp;quot;&lt;br /&gt;
          test = false;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Если сервер отключился, останавливаем работу клиента:&lt;br /&gt;
      if (!client.connected())&lt;br /&gt;
      {&lt;br /&gt;
        Serial.println();&lt;br /&gt;
        Serial.println(&amp;quot;disconnecting.&amp;quot;);  //  &amp;quot;Отключение.&amp;quot;&lt;br /&gt;
        client.stop();&lt;br /&gt;
        test = false;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Пользовательская функция для считывания входящих данных&lt;br /&gt;
 */&lt;br /&gt;
int readSerial(char result[])&lt;br /&gt;
{&lt;br /&gt;
  int i = 0;&lt;br /&gt;
  while(1)&lt;br /&gt;
  {&lt;br /&gt;
    while (Serial.available() &amp;gt; 0)&lt;br /&gt;
    {&lt;br /&gt;
      char inChar = Serial.read();&lt;br /&gt;
      if (inChar == '\n')&lt;br /&gt;
      {&lt;br /&gt;
        result[i] = '\0';&lt;br /&gt;
        return 0;&lt;br /&gt;
      }&lt;br /&gt;
      if(inChar!='\r')&lt;br /&gt;
      {&lt;br /&gt;
        result[i] = inChar;&lt;br /&gt;
        i++;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См.также==&lt;br /&gt;
&lt;br /&gt;
# GPRS Constructor&lt;br /&gt;
# GSMClient Constructor&lt;br /&gt;
# attachGPRS()&lt;br /&gt;
&lt;br /&gt;
==Внешние ссылки==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Категория:Пример]]&lt;br /&gt;
[[Категория:Примеры]]&lt;br /&gt;
[[Категория:Пример программирования Arduino]]&lt;br /&gt;
[[Категория:Примеры программирования Arduino]]&lt;/div&gt;</summary>
		<author><name>Myagkij</name></author>
	</entry>
</feed>