Введение в строку json/regular
представлять
В традиционных приложениях микроконтроллеров последовательная связь между двумя микроконтроллерами определяет некоторые кадры, включая заголовок кадра, кадр данных, контрольный кадр и хвост кадра. На картинке протокол управления полетом MavLink.
Этот метод стабилен и эффективен. Недостатки также очевидны: разработка немного сложнее, нужно разрабатывать собственный протокол, а кодировку и декодирование нужно писать вручную. Если вы хотите быстро, попробуйте установить связь между двумя микроконтроллерами. Я рекомендую использовать последовательный порт для передачи строк JSON!
Преимущества: Не нужно знать низкоуровневые вещи, такие как:
- Прямой и прямой порядок байтов не учитываются
- Не учитывает байтовое преобразование данных
- Поддерживает любую длину int, float
- Просто понять и легко развивать.
Недостатки: Чуть менее эффективен. Кодирование и декодирование json займут процессор.
Фактически, передача json стала стандартом в сетевом программировании. Например, в restful API интерфейсная и серверная части используют json для получения информации. Это не распространено в области традиционных микроконтроллеров. С одной стороны, эффективность немного ниже, а встроенные системы обычно предъявляют более высокие требования к контролю затрат. Однако по мере снижения стоимости чипов многие приложения уже не предъявляют очень высоких требований к затратам на материалы, и все больше внимания уделяется эффективности разработки.
Нить
string = "hello string!"
OpenMV может отправлять строки напрямую через последовательный порт.
from machine import UART
uart = UART(1, 9600)
string = "hello string!"
uart.write(string)
Строковые операции
http://www.runoob.com/python3/python3-string.html
Например:
blobs=[12,23,11,22,33,44]
print("%d", blobs[3])
JSON JSON — это краткий и эффективный формат Обмен данными. Это может быть
так просто:
"[[12,0],[10,12],[22,10],[99,11]]"
Примечание. Я использую эту простую строку для отправки координат x, y цветового патча в OpenMV.
Это также может быть сложно, например: ('''' представляет собой многострочную строку в Python)
'''
{
"number":10,
"color" :[255,0,0],
"rate" :0.65
}
'''
Я использую эту структуру для отправки информации о цвете, собранной OpenMV, на сервер по Wi-Fi.
Даже, это может быть так:
'''
{
"firstName": "John",
"lastName": "Smith",
"sex": "male",
"age": 25,
"address":
{
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber":
[
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
'''
Примечание. Форма json очень похожа на форму Python, но json — это форма выражения объекта в JavaScript, которая немного отличается от формы выражения в Python.
python генерирует json
OpenMV имеет модуль json. json.dumps(obj) и ujson.loads(str) могут легко генерировать и анализировать строки json.
import json
obj = [[12,0],[10,12],[22,10],[99,11]]
print(json.dumps(obj))
obj = {
"number":10,
"color" :[255,0,0],
"rate" :0.65
}
print(json.dumps(obj))
Выведет:
'[[12, 0], [10, 12], [22, 10], [99, 11]]'
'{"color": [255, 0, 0], "number": 10, "rate": 0.65}'
Затем отправьте строку через последовательный порт, а затем проанализируйте строку json в объект/массив на другом конце. Затем выполните следующие логические операции.
Json-модули других микроконтроллеров
json очень прост и универсален.
- Arduino: https://github.com/bblanchon/ArduinoJson
- STM32: http://blog.csdn.net/yannanxiu/article/details/52712723
MicroPython(pyboard,esp8266,samd21): http://docs.micropython.org/en/latest/pyboard/library/ujson.html
NodeMCU(esp8266): https://nodemcu.readthedocs.io/en/master/en/modules/sjson/
- 51: Выбрось это
Вы можете использовать эти библиотеки для преобразования строк JSON в объекты.
Модули ###json для других языков программирования
Практически все языки поддерживают json (даже lisp, ^>^). . . Таким образом, общение может осуществляться легко.
Регулярное выражение
Если это простая обработка строк, вы можете использовать некоторые встроенные функции Python, но для более сложных требований вам необходимо использовать регулярные выражения.
Например, обработка URL. (Это не часто используется в OpenMV. Я пока опущу это и подробно представлю в своем сетевом приложении MicroPython esp8266)