String-Einführung json/regular

einführen

In herkömmlichen Mikrocontroller-Anwendungen definiert die serielle Kommunikation zwischen zwei Mikrocontrollern einige Frames, einschließlich Frame-Header, Datenframe, Check-Frame und Frame-Ende. Das Bild zeigt das Protokoll der Flugsteuerung MavLink.

Diese Methode ist stabil und effizient. Auch die Nachteile liegen auf der Hand: Die Entwicklung ist etwas schwieriger, man muss ein eigenes Protokoll entwickeln und Kodierung und Dekodierung müssen manuell geschrieben werden. Wenn Sie schnell versuchen möchten, zwischen zwei Mikrocontrollern zu kommunizieren. Ich empfehle die Verwendung der seriellen Schnittstelle zur Übertragung von JSON-Strings!

Vorteile: Keine Notwendigkeit, Dinge auf niedriger Ebene zu wissen, wie zum Beispiel:

  • Big Endian und Little Endian werden nicht berücksichtigt
  • Berücksichtigt keine Bytekonvertierung von Daten
  • Unterstützt jede Länge von int, float
  • Einfach zu verstehen und leicht zu entwickeln.

Nachteile: Etwas weniger effizient. Das Kodieren und Dekodieren von JSON beansprucht die CPU.

Tatsächlich ist die Übertragung von JSON zum Standard in der Netzwerkprogrammierung geworden. Beispielsweise verwenden das Front-End und das Back-End JSON, um Informationen zu erhalten. Dies ist im Bereich herkömmlicher Mikrocontroller einfach nicht üblich. Einerseits ist die Effizienz etwas geringer, und eingebettete Systeme stellen normalerweise höhere Anforderungen an die Kostenkontrolle. Da jedoch die Kosten für Chips sinken, stellen viele Anwendungen keine sehr hohen Anforderungen mehr an die Materialkosten und der Entwicklungseffizienz wird immer mehr Aufmerksamkeit geschenkt.

Zeichenfolge

string = "hello string!"

OpenMV kann Strings direkt über die serielle Schnittstelle senden.

from machine import UART

uart = UART(1, 9600)
string = "hello string!"
uart.write(string)

String-Operationen

http://www.runoob.com/python3/python3-string.html

Zum Beispiel:


blobs=[12,23,11,22,33,44]

print("%d", blobs[3])

JSON JSON ist ein prägnantes und effizientes Format für den

Datenaustausch. Es kann so einfach sein:

"[[12,0],[10,12],[22,10],[99,11]]"

Hinweis: Ich verwende diese einfache Zeichenfolge, um die X- und Y-Koordinaten des Farbfelds in OpenMV zu senden.

Es kann auch so komplex sein: ('''' stellt eine mehrzeilige Zeichenfolge in Python dar)

'''
{
    "number":10,
    "color" :[255,0,0],
    "rate" :0.65
}
'''

Ich verwende diese Struktur, um die von OpenMV gesammelten Farbinformationen über WLAN an den Server zu senden.

Es kann sogar so sein:

'''
{
  "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"
    }
  ]
}
'''

Hinweis: Die Form von JSON ist der von Python sehr ähnlich, JSON ist jedoch die Objektausdrucksform von Javascript, die sich geringfügig von der Ausdrucksform von Python unterscheidet.

Python generiert JSON

OpenMV verfügt über ein JSON-Modul. Mit json.dumps(obj) und ujson.loads(str) können problemlos JSON-Strings generiert und analysiert werden.

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))

Gibt aus:

'[[12, 0], [10, 12], [22, 10], [99, 11]]'

'{"color": [255, 0, 0], "number": 10, "rate": 0.65}'

Senden Sie dann die Zeichenfolge über die serielle Schnittstelle und analysieren Sie dann die JSON-Zeichenfolge in ein Objekt/Array am anderen Ende. Führen Sie dann die nächsten logischen Operationen aus.

Json-Module anderer Mikrocontroller

json ist sehr einfach und vielseitig.

Mit diesen Bibliotheken können Sie JSON-Strings in Objekte konvertieren.

JSON-Module für andere Computersprachen

Grundsätzlich unterstützen alle Sprachen JSON (sogar Lisp, ^>^). . . So kann die Kommunikation problemlos erfolgen.

Regulärer Ausdruck

Wenn es sich um eine einfache Zeichenfolgenverarbeitung handelt, können Sie einige der integrierten Funktionen von Python verwenden. Für komplexere Anforderungen müssen Sie jedoch reguläre Ausdrücke verwenden.

Zum Beispiel URL-Verarbeitung. (Dies wird in OpenMV nicht oft verwendet. Ich werde es vorerst weglassen und es in meiner MicroPython esp8266-Netzwerkanwendung ausführlich vorstellen.)

results matching ""

    No results matching ""