- Установка утилиты INPAS DualConnector
- Подключение терминала по USB
- Подключение терминала по TCP/IP
- Работа терминала INPAS с Кассой МойСклад
- Возврат
- Сверка итогов
- Развитие Интернета вещей с помощью микроконтроллеров Microchip
- IoT и его применения
- Технология связи для IoT
- Микроконтроллеры Microchip
- Применение 8-разрядного микроконтроллера PIC18F97J60
- Программно-аппаратные решения Microchip
- Применение технологии PoE
- Программный стек TCP/IP
- Применение библиотеки Microchip TCP/IP Lite Stack library
- Многоуровневая модель стека TCP/IP
- Работа стека TCP/IP
- Структура библиотеки
- Конфигурирование стека
- Управление буфером стека TCP/IP
- Буферы, используемые протоколом UDP
- Буферы, используемые протоколами TCP/IP
- Особенности и ограничения стека TCP/IP
- Запуск демоприложений со стеком TCP/IP
- Настройки аппаратуры
- Простое демоприложение TCP-клиента
- Программные настройки для демо-TCP-клиента
- Прошивка для демоприложения TCP-клиента
- Применение TCP-клиента
- Исходный код приложения для TCP-клиента
- Демоприложение TCP-сервера
- Демопрошивка TCP-сервера
- Применение TCP-сервера
- Исходный код приложения TCP-сервера
- Демоприложение протокола UDP
- Приложение для отправки данных по UDP-протоколу
- Приложение для приема данных по UDP-протоколу
- Исходные коды для приложений UDP-сервера/UDP-клиента
Установка утилиты INPAS DualConnector
Для работы с терминалом необходимо предварительно установить утилиту от INPAS DualConnector.
Для корректной работы утилиты DualConnector установка должна быть выполнена с правами администратора и в автоматическом режиме.
Подключение терминала по USB
Для подключения платежного терминала:
- Вставьте USB-кабель в порт терминала.
- Подключите другой конец к USB-порту вашего компьютера.
Подключение терминала по TCP/IP
- Введите IP адрес терминала и порт в настройках программы MoiSklad.
- Проверьте соединение с терминалом.
- Подключить терминал к Кассе МойСклад получится только в случае успешной проверки.
Работа терминала INPAS с Кассой МойСклад
При продаже и при возврате с помощью платежного терминала печатаются слип-чеки, поэтому необходимо подключение ККТ.
После оплаты появляется сообщение о завершенной продаже.
Оплата по QR-коду доступна на терминале Inpas для банков: Тинькофф, Альфа-банк, Райфайзенбанк, Открытие и другие.
Возврат
Возвраты реализуются в терминале через операцию Отмена. Если эта операция невозможна, терминал автоматически производит операцию Возврат. Для этого поставщик оборудования (чаще всего банк) должен включить в настройках терминала соответствующую опцию.
При использовании терминала в Кассе для Windows можно оформить как полный, так и частичный возврат.
При успешном возврате будет совершена отмена транзакции и появится сообщение об успешном оформлении возврата.
Сверка итогов
Сверка итогов — процесс передачи данных обо всех финансовых операциях с банковского терминала в банк.
Если терминал подключен, сверка итогов происходит автоматически после закрытия смены. По результатам сверки выручка за смену перечисляется на расчетный счет компании. На терминале или ККТ печатается отчет об операциях.
Если автоматическая сверка итогов не произошла по какой-либо причине, например терминал не был подключен, проведите сверку вручную.
Развитие Интернета вещей с помощью микроконтроллеров Microchip
Тенденция повсеместного внедрения Интернета вещей (IoT, или Internet of Things) постепенно набирает обороты. Интенсивно развивающийся рынок требует технологий связи, которые могут быть легко интегрированы в электронные устройства, не обладающие большими вычислительными ресурсами.
IoT и его применения
Сам термин Интернет вещей подразумевает добавление функции связи и обработки данных даже в самые простые бытовые приборы. Спектр применений IoT предполагает такие типовые задачи, как дистанционное управление шлагбаумами и автоматическими воротами, бытовой техникой, системами вентиляции и кондиционирования, системами освещения и т. д.
Технология связи для IoT
Технология связи, используемая для Интернета вещей, должна быть гибкой, чтобы легко адаптироваться под любую задачу, и нетребовательной к ресурсам микроконтроллера, чтобы иметь возможность эффективно работать даже на самых низкопроизводительных вычислительных системах и оставаться максимально доступной для массового потребителя.
Микроконтроллеры Microchip
Компания Microchip давно известна на рынке полупроводниковой техники своими 8-разрядными микроконтроллерами. Они отличаются простотой освоения и достаточно большим набором периферийных расширений, способных работать без участия вычислительного ядра.
Применение 8-разрядного микроконтроллера PIC18F97J60
Среди широкого спектра микроконтроллеров от Microchip особенно хочется отметить 8-разрядный микроконтроллер PIC18F97J60. Он обладает встроенным Ethernet MAC + PHY, что делает его отличным выбором для создания устройств мониторинга и/или управления с подключением к сети Ethernet.
Программно-аппаратные решения Microchip
Компания Microchip не только производит полупроводниковые компоненты, но и разрабатывает программно-аппаратные решения для ускорения процесса внедрения и выпуска готовых устройств.
Применение технологии PoE
Интересное программно-аппаратное решение от Microchip позволяет создавать простые устройства с применением 8-битного микроконтроллера, соединенные в одну сеть по проводному интерфейсу Ethernet. Используя технологию PoE (Power over Ethernet), устройства легко интегрируются в существующую инфраструктуру сетей Ethernet внутри здания, без дополнительных затрат на кабели.
Программный стек TCP/IP
Важной особенностью решений Microchip является легковесный программный стек протоколов TCP/IP, способный работать на простейших микроконтроллерах с минимальным объемом памяти. Это делает передачу данных более эффективной и удобной для пользователей.
Статья предоставлена с целью информационного ознакомления и не является рекламой продукции компании Microchip.
Применение библиотеки Microchip TCP/IP Lite Stack library
Применение библиотеки Microchip TCP/IP Lite Stack library основано на модели взаимодействия протоколов TCP/IP, как показано на рис. 1.

Многоуровневая модель стека TCP/IP
Рис. 1. Многоуровневая модель стека TCP/IP
Стек TCP/IP разделен на несколько уровней, как можно видеть на рис. 1. Каждый уровень в программной библиотеке Microchip TCP/IP Lite Stack library открыт для прямого доступа с одного или нескольких уровней выше или ниже него.
Работа стека TCP/IP
Работа стека TCP/IP основана на взаимодействии с фоновыми задачами, периодически запускаемыми пользователем и генерирующими различные события — управление тайм-аутами, проверка статуса контроллера Ethernet, разбор принятых данных.
Структура библиотеки
Библиотека включает несколько протоколов, программный код каждого из них расположен в отдельном исходном файле, в то время как API-интерфейс описан в заголовочных файлах и подключаемых модулях.
Конфигурирование стека
Microchip TCP/IP Lite Stack является масштабируемым. То есть пользователь может самостоятельно изменять состав стека в зависимости от требований приложения. Среда разработки MCC предоставляет возможность собирать код из нескольких фрагментов, чтобы добиться необходимой комбинации протоколов для работы в составе приложения пользователя. В среде MCC также можно настраивать параметры выбранных протоколов. Параметры содержатся в конфигурационном файле tcpip_config.h, который является частью среды MCC. Среди наиболее значимых параметров, доступных для конфигурирования, находятся:
- Параметр 1
- Параметр 2
- Параметр 3
Управление буфером стека TCP/IP
По умолчанию стек TCP/IP занимает минимальный возможный объем памяти, чтобы оставить как можно больше памяти для пользовательского приложения.
Для того чтобы максимально использовать возможность оптимального распределения памяти, нужно задействовать все необходимые буферы для обмена данными между TCP/IP-соединениями.
Ethernet-контроллер принимает и хранит данные до тех пор, пока стек TCP/IP в состоянии их обработать. Буфер для каждого принятого пакета данных управляется автоматически Ethernet-контроллером, а дескриптор буфера доступен для редактирования пользователем.
Ethernet-контроллер начинает автоматически удалять ранее принятые, не обработанные стеком данные из буфера, если памяти буфера становится недостаточно для хранения вновь поступающих пакетов.
Пакеты данных Ethernet, подготовленные для передачи, также помещаются в специально отведенную память контроллера.
Буферы, используемые протоколом UDP
Стек позволяет напрямую передавать пакеты payload в RAM-память Ethernet-контроллера. Для пользователя доступны API-функции по управлению формированием payload-пакетов UDP, их передачей между областями памяти и их отправкой в среду передачи.
Когда данные поступают по протоколу UDP, Ethernet-контроллер автоматически помещает их в буфер. Если пакеты успешно приняты и зарегистрирован вызов от пользователя для входящего порта, стек запускает назначенную пользователем функцию и предоставляет возможность прямого доступа к payload-данным прямо в памяти Ethernet-контроллера. Такой подход исключает необходимость многократного копирования и сохранения payload-данных, позволяет экономить время и память контроллера.
Буферы, используемые протоколами TCP/IP
В случае применения протокола TCP пользователь должен специально отвести определенное количество памяти для каждого TCP-соединения. Есть несколько типов буферов, используемых TCP-протоколом:
- Память сокета (socket memory). Память, отведенная для каждого сокета, распределяется пользователем. Задача управления памятью решается с помощью специального набора API-функций. Такой подход актуален для тех случаев, когда информация о всех TCP-соединениях полностью известна.
- Буферы приема (Rx) и передачи (Tx). Оба вида буферов для каждого TCP-соединения должны быть созданы пользователем и переданы стеку с помощью специальных API-функций. Каждый сокет может иметь единовременно только один буфер приема (Rx) и один — передачи (Tx). Стек всегда должен иметь свободный буфер Rx для принятия данных от удаленного хоста. Стек способен функционировать без Rx-буфера в течение очень ограниченного интервала времени перед тем, как поступит запрос на повторную передачу пакета.
Особенности и ограничения стека TCP/IP
Стек TCP/IP имеет некоторые ограничения, связанные с небольшим объемом памяти RAM и Flash, доступной для функционирования малопроизводительных устройств, таких как 8‑битные микроконтроллеры. Чтобы получить исчерпывающую информацию обо всех актуальных особенностях и ограничениях, следует обратиться к соответствующим документам release notes, относящимся к среде MCC и библиотеке TCP/IP Lite library.
Запуск демоприложений со стеком TCP/IP
Перечень необходимого программного и аппаратного обеспечения для запуска демоприложений:
Настройки аппаратуры
Для создания и запуска приложения, использующего TCP, пользователь должен настроить программный модуль TCP/IP Lite, доступный в среде MCC, как показано далее:
Выбор библиотеки TCP/IP Lite

Конфигурирование стека

Вкладка уведомлений (Notifications)

Выбор модулей MAC и TMR1

- Окно настройки модуля TMR1 (Рис. 6)
- Окно настройки модуля MAC (Рис. 7)
Выбор модуля MSSP1

- Настройки модуля MSSP1 (Рис. 9)
- Выбор модуля ADC (Рис. 10)

Рис. 11. Настройки модуля ADC

Рис. 12. Настройка конфигурации выводов
Простое демоприложение TCP-клиента
В демоприложении используется только одно активное TCP-под-ключение. На самом деле стек TCP/IP поддерживает множественные подключения через TCP-протокол на одной плате. Для каждого нового подключения пользователь должен создать отдельный сокет, буфер приема Rx и попытаться подключиться к серверу. Демоприложение настроено для запуска на отладочной плате Curiosity board.
Демо-TCP-клиент будет автоматически пытаться подключиться к серверу каждые 2 с. Это сделано, чтобы пользователю было проще перехватывать и анализировать пакеты с помощью приложения Wireshark protocol analyzer.
Программные настройки для демо-TCP-клиента
remoteSocket.addr.s_addr = MAKE_IPV4_ADDRESS(192,168,0,3); remoteSocket.port = 60;

Рис. 13. Окно демоприложения для персонального компьютера
Листинг 2. Сообщение в поле Sent/Received Data
Прошивка для демоприложения TCP-клиента
Прежде чем начинать работу с клиентской станцией, пользователь должен создать по меньшей мере сокет и приемный Rx-буфер, как показано в листинге 3.
Листинг 3. Сокет и приемный Rx-буфер
Буфер передачи Tx должен создаваться и передаваться TCP-стеку пользователем в момент готовности данных к передаче.
Применение TCP-клиента
Для создания и применения TCP-клиента требуются следующие шаги.
socket_state = TCP_SocketPoll(&port7TCB);
Функция проверяет, что указатель, переданный в качестве параметра, зарегистрирован внутри TCP/IP-стека как сокет. Если указатель является валидным сокетом, то функция возвращает его статус. Возможные состояния статуса перечислены в заголовочном файле tcpv4.h.
TCP_InsertRxBuffer(&port60TCB, rxdat aPort60, sizeof(rxdataPort60));
Следующая функция автоматически закроет неудавшееся или аварийное TCP-подключение. Параллельно пользователь должен периодически проверять состояние TCP-подключения до тех пор, пока он не убедится в его закрытии. После успешного закрытия соединения приемный Rх- и передающий Tx-буферы могут быть безопасно использованы повторно:
rxLen = TCP_GetReceivedData(&port60TCB);
TCP_Send(&port60TCB, txdataPort60, txLen);
TCP_Update(); // handle timeouts.
Исходный код приложения для TCP-клиента
Демокод приложения TCP-клиента (исходный код и скомпилированный бинарный файл) доступен для загрузки с сайта www.microchip.com. Исходный код приведен в листинге 4. Блок-схема кода показана на рис. 14.

Рис. 14. Блок-схема демопрограммы TCP-клиента
Листинг 4. Исходный код для приложения TCP-клиента
Демоприложение TCP-сервера
Простое приложение TCP — эхо сервера, прослушивающего данные на порте № 7. Сервер запускается на отладочной плате Curiosity board и ожидает любых входящих подключений. Сервер возвращает эхо-ответ для всех входящих данных сразу, как только устанавливается соединение с клиентом. Для данного демоприложения возможна единовременная установка только одного активного соединения. Однако стек TCP/IP поддерживает возможность множественных подключений на одной отладочной плате. Пользователь должен создавать новый сервер (создание Rх/Tx-буферов, инициализация и запуск прослушивания данных) для каждого нового соединения.
Настройки программного демоприложения TCP-сервера

Рис. 15. Вкладка TCP Client Demo в окне тестового приложения для компьютера
Connected to 192.168.0.21 Port: 7
Листинг 5. Сообщение о подключении к плате Curiosity board
Демопрошивка TCP-сервера
Перед запуском сервера пользователь должен создать по меньшей мере сокет и буфер приема Rx. Буфер передачи пользователю надо создать и передать TCP-стеку, когда появятся данные, готовые для передачи.
Применение TCP-сервера
Далее приведены шаги, необходимые для запуска и применения TCP-сервера.
Инициализация выполняется автоматически функцией Network_Init(), вызываемой внутри функции SYSTEM_Initialize() среды MCC.
Если сокет является валидным, то функция возвращает его статус. Возможные значения статуса приведены в заголовочном файле tcpv4.h.
Сервер будет прослушивать входящие соединения на данном порте. TCP-стек автоматически выделит номер порта, если он не предоставлен пользователем.
TCP_InsertRxBuffer(&port7TCB, rxdataPort7, sizeof(rxdataPort7));
Если TCP-соединение успешно устанавливается, то пользователь получает возможность обмениваться данными с удаленным узлом. Только один запрос на подключение может быть принят единовременно в рамках действующего демоприложения. Однако TCP-стек способен работать с множественными подключениями для одного порта. Но для каждого подключения пользователь должен создавать отдельный сокет, Rx-буфер и экземпляр TCP-сервера на том же порте.
Эта функция должна вызываться каждый раз перед попыткой отправить что-либо, потому что сокет способен оперировать только одним буфером в каждый момент времени.
rxLen = TCP_GetRxLength(&port7TCB);
rxLen = TCP_GetReceivedData (&port7TCB);
После вызова данной функции пользователь может получить безопасный доступ к буферу. Сразу после вызова данной функции буфер становится недоступен для принятия вновь поступающих данных. Чтобы избежать повторов передачи от удаленного узла, пользователь должен предоставить стеку новый свободный буфер.
TCP_Send(&port7TCB, txdataPort7, txLen);
Невозможно передать данные, если предварительно не было установлено активное соединение между локальной машиной и удаленным хостом.
Закрытие соединения произойдет только после обмена дружественным рукопожатием между участниками соединения. Пользователю следует периодически проверять состояние сокета до тех пор, пока сокет не окажется закрыт. После закрытия сокета буферы приема и передачи могут быть безопасно использованы снова.
TCP_Update();// handle timeouts
Исходный код приложения TCP-сервера
Демокод TCP-сервера (исходный код и откомпилированный бинарный файл) доступен для загрузки по адресу www.microchip.com. Исходный код приложения приведен в листинге 7. Блок-схема кода показана на рис. 16.

Рис. 16. Блок-схема демопрограммы TCP-сервера
Листинг 7. Исходный код приложения TCP-сервера
Демоприложение протокола UDP
В данном примере рассмотрено применение клиента и сервера, работающих по протоколу UDP. Пример состоит из части UDP Send (UDP Client) и UDP Receive (UDP Server). В качестве части UDP Send отладочная плата Curiosity Development отправляет значения встроенного потенциометра в пакетах UDP-протокола. В качестве части UDP Receive отладочная плата Curiosity Development board слушает входящие UDP-подсоединения, включая команды управления светодиодными LED-индикаторами, на порте № 65531. Номер порта может быть любым в диапазоне 0–65535. Но некоторые номера зарезервированы или уже зарегистрированы для использования по умолчанию. Поэтому рекомендуется выбирать номер порта в диапазоне 49152–65535, поскольку все они гарантированно свободны.
Установка программного обеспечения для демоприложений UDP Send/UDP Receive:

Рис. 17. Окно демоприложения Packet Sender

Рис. 18. Дистанционное управление светодиодами с помощью демоприложения Packet Sender
Приложение для отправки данных по UDP-протоколу
Для того чтобы начать отправлять данные по UDP-протоколу, необходимо выполнить следующие шаги.
Приложение для приема данных по UDP-протоколу
Для приема данных по протоколу UDP необходимо выполнить следующие действия.
Исходные коды для приложений UDP-сервера/UDP-клиента
Исходные коды UDP-демоприложений (исходники и скомпилированные бинарные файлы) могут быть загружены по адресу www.microchip.com.
Исходный код UDP-клиента приведен в листинге 9. Блок-схема кода изображена на рис. 19.

Рис. 19. Блок-схема демопрограммы для обмена данными по UDP-протоколу
Листинг 9. Исходный код UDP-клиента
Исходный код UDP-сервера приведен в листинге 10.
