Stringa di introduzione json/regular
introdurre
Nelle applicazioni tradizionali dei microcontrollori, la comunicazione seriale tra due microcontrollori definisce alcuni frame, tra cui l'intestazione del frame, il frame di dati, il frame di controllo e la coda del frame.L'immagine mostra il protocollo di controllo del volo MavLink.
Questo metodo è stabile ed efficiente.Anche gli svantaggi sono evidenti: lo sviluppo è leggermente più difficile, è necessario sviluppare il proprio protocollo e la codifica e la decodifica devono essere scritte manualmente.Se vuoi provare rapidamente a comunicare tra due microcontrollori.Consiglio di utilizzare la porta seriale per trasmettere stringhe json!
Vantaggi: Non è necessario conoscere cose di basso livello, come:
- Non vengono considerati big endian e little endian
- Non considera la conversione in byte dei dati
- Supporta qualsiasi lunghezza di int, float
- Semplice da capire e facile da sviluppare.
Svantaggi: Leggermente meno efficiente.La codifica e la decodifica json occuperanno la CPU.
In effetti, la trasmissione di JSON è diventata uno standard nella programmazione di rete. Ad esempio, nelle Restful API, il front-end e il back-end utilizzano JSON per ottenere informazioni.Semplicemente non è comune nel campo dei microcontrollori tradizionali. Da un lato, l’efficienza è leggermente inferiore e i sistemi embedded di solito hanno requisiti di controllo dei costi più elevati.Tuttavia, con la diminuzione del costo dei chip, molte applicazioni non hanno più requisiti molto elevati in termini di costi dei materiali e viene prestata sempre maggiore attenzione all'efficienza dello sviluppo.
Corda
string = "hello string!"
OpenMV può inviare stringhe direttamente attraverso la porta seriale.
from machine import UART
uart = UART(1, 9600)
string = "hello string!"
uart.write(string)
Operazioni sulle stringhe
http://www.runoob.com/python3/python3-string.html
Per esempio:
blobs=[12,23,11,22,33,44]
print("%d", blobs[3])
JSON JSON è un formato conciso ed efficiente per lo scambio di dati.Può essere
semplice come questo:
"[[12,0],[10,12],[22,10],[99,11]]"
Nota: utilizzo questa semplice stringa per inviare le coordinate x, y della patch di colore in OpenMV.
Può anche essere complesso in questo modo: ('''' rappresenta una stringa su più righe in Python)
'''
{
"number":10,
"color" :[255,0,0],
"rate" :0.65
}
'''
Utilizzo questa struttura per inviare le informazioni sul colore raccolte da OpenMV al server in wifi.
Anche, può essere così:
'''
{
"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"
}
]
}
'''
Nota: la forma di json è molto simile a quella di Python, ma json è la forma di espressione oggetto di javascript, che è leggermente diversa dalla forma di espressione di python.
python genera json
OpenMV ha un modulo json. json.dumps(obj) e ujson.loads(str) possono facilmente generare e analizzare stringhe 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))
Verrà prodotto:
'[[12, 0], [10, 12], [22, 10], [99, 11]]'
'{"color": [255, 0, 0], "number": 10, "rate": 0.65}'
Quindi invia la stringa tramite la porta seriale e quindi analizza la stringa json in un oggetto/array all'altra estremità.Quindi eseguire le operazioni logiche successive.
Moduli Json di altri microcontrollori
json è molto semplice e versatile.
- 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: Buttalo via
Puoi utilizzare queste librerie per convertire stringhe JSON in oggetti.
Moduli JSON per altri linguaggi informatici
Fondamentalmente tutte le lingue supportano json (anche lisp, ^>^)...Quindi la comunicazione può essere effettuata facilmente.
Espressione regolare
Se si tratta di una semplice elaborazione di stringhe, puoi utilizzare alcune delle funzioni integrate di Python, ma per requisiti più complessi è necessario utilizzare espressioni regolari.
Ad esempio, l'elaborazione dell'URL.(Questo non è molto utilizzato in OpenMV. Per ora lo ometterò e lo introdurrò in dettaglio nella mia applicazione di rete MicroPython esp8266)