Хотя RAiV был разработан как автономное устройство, вы можете захотеть подключить его к другим устройствам. В этом посте мы опишем, как вы можете создавать как клиентские, так и серверные приложения TCP, используя Модуль qCU_Net Python из нашего пакета SDK для Python.

Во время реализации модуля qCU_Net, мы использовали собственный модуль сокета python. Таким образом, вы также можете реализовать свой собственный пользовательский коммуникационный модуль без использования нашего Python SDK.

Введение

Модуль qCU_Net Python был разработан для простоты и гибкости. Он использует прототип сообщения с 4-байтовым заголовком и полезной нагрузкой JSON:

Длина полезной нагрузки в 4 байта
(Беззнаковый int с большим порядковым номером)
JSON Полезная нагрузка
(в кодировке UTF-8)

Для ваших пользовательских приложений вы можете преобразовать ваши структуры данных Python (например, списки и словари) в строку json и установить для нее значение Полезная нагрузка JSON

В наших примерах кода на Python мы использовали следующие конфигурации проводной сети RAiV и сетевого интерфейса ПК:

Проводная сеть RAiV. Конфигурация:
IP 192.168.10.55
Netmask 255.255.255.0
Gateway 192.168.10.1

Конфигурация сети ПК:
IP 192.168.10.2
Netmask 255.255.255.0
Gateway 192.168.10.1

RAiV как TCP-клиент

Подготовьте и загрузите свой код на Python

Используя модуль qCU_Net, вы можете отправить TCP-сообщение со следующими строками кода:

import qCU_Net

def main():

    print("**** TCP Client ****")

	# Define Payload of the TCP message
    payload = {
        "text": "Hello Net Comm"
    }
    # Send the Payload (the message header is computed inside the function)
    qCU_Net.send_data_to_server("192.168.10.2", 12345, payload)

if __name__ == "__main__":
    main()

Скопируйте приведенный выше код и сохраните его в файле user_main.py. Затем загрузите файл в RAiV, как описано в нашем предыдущем посте.

Для серверного приложения на python мы использовали пример реализации TCP-сервера из наш репозиторий на Github и запустите его на ПК.

В режиме реального времени

Как только после проверки user_main.py файл завершен, файл python запущен. Вы можете проверить вывод с консоли и/или с сервера образцов на стороне ПК.

Привет, RAiV TCP-клиент

Предупреждение: Если нет TCP-сервера или сетевого подключения к серверу, на выходе консоли отображается сообщение об ошибке интерпретатора python

RAiV как TCP-сервер

Подготовьте и загрузите свой код на Python

Создание TCP-сервера в RAiV также просто с помощью модуля qCU_Net. Единственное дополнение - это ваш пользовательский json_handler. Поскольку в сообщениях qCU_Net используется полезная нагрузка json, сервер должен иметь функцию Python для анализа входящей полезной нагрузки.

Если на TCP-сервер не передается обработчик json, по умолчанию модуль qCU_Net печатает входящую строку json.

Полный код TCP-сервера пример обработчика json приведен ниже:

# Module for TCP communication
import qCU_Net

# Sample implementation of a json payload handler 
def sample_json_handler(client_socket, json_payload, client_address):
    print(f"Custom handler called for client {client_address}")
    print(f"Received payload: {json_payload}")

def main():

    print("**** TCP Server ****")

	# Start the TCP server with sample json handler
    qCU_Net.start_tcp_server(host='192.168.10.55', port=12345, json_handler=sample_json_handler)

if __name__ == "__main__":
    main()

Скопируйте приведенный выше код и сохраните его в user_main.py файл. Затем загрузите файл в RAiV, как описано в нашем предыдущее сообщение

Для клиентского приложения на python мы использовали пример реализации TCP-клиента из нашего репозитория на Github и запустите его на ПК.

Оперативное действие

Как только проверка файла user_main.py была завершена, запускается файл python. Вы можете проверить вывод на консоль на наличие входящих сообщений.

Привет, RAiV TCP-сервер

Что дальше?

Чтобы сделать снимок вашего первого стереоизображения

Сделайте снимок: Сделайте снимок вашего первого стереоизображения

Проверьте наш пакет SDK для Python

RAiV Python SDK

Проверьте наш Репозиторий На Github Для Получения Примеров Кодов:

Наш Репозиторий на Github