文字列導入 json/regulator

##導入

従来のシングルチップ マイクロコンピュータ アプリケーションでは、2 つのシングルチップ マイクロコンピュータのシリアル ポートが、フレーム ヘッダー、データ フレーム、チェック フレーム、フレーム テールなどのいくつかのフレームを独自に定義することによって通信します。 写真は飛行制御MavLinkのプロトコルです。

この方法は安定していて効率的です。欠点も明らかです。開発が若干難しく、独自のプロトコルを開発する必要があり、エンコードとデコードを手動で記述する必要があります。すぐに 2 つのマイクロコントローラー間の通信を試みたい場合。 json 文字列の送信にはシリアル ポートを使用することをお勧めします。

利点: 次のような低レベルのことを知る必要はありません。

  • ビッグエンディアンとリトルエンディアンは考慮されません
  • データのバイト変換を考慮しません
  • 任意の長さの int、float をサポート
  • 理解しやすく、開発も簡単です。

デメリット:効率が若干劣ります。 json のエンコードとデコードは CPU を占有します。

実際、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]]"

注: この単純な文字列を使用して、OpenMV のカラー パッチの x、y 座標を送信します。

次のように複雑にすることもできます: ('''' は 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 は非常にシンプルで汎用性があります。

これらのライブラリを使用して、json 文字列をオブジェクトに変換できます。

他のコンピューター言語用の JSON モジュール

基本的にすべての言語が json (lisp、^>^ も含む) をサポートしています。 。 。そのためコミュニケーションもスムーズに行えます。

正規表現

単純な文字列処理の場合は、Python の組み込み関数の一部を使用できますが、より複雑な要件の場合は、正規表現を使用する必要があります。

たとえば、URL の処理です。 (これは OpenMV ではあまり使用されません。今回は省略し、MicroPython esp8266 ネットワーク アプリケーションで詳しく紹介します)

results matching ""

    No results matching ""