【WPF】ArduinoからPCにJSON形式のデータを送信する

記事内に広告を含みます

ArduinoとPC間はUSBデータ通信でデータの転送を行っています。
(詳しくは以下の記事をご参照ください。)

Arduinoからデータを送信する際には『Serial.print()』や『Serial.println()』を使用することが多いと思います。

もちろん文字列を送りたいのならいいのですが、場合によっては複数のデータやオブジェクトを送信したい場合があると思います

そこで、本記事ではArduinoからWPFアプリへオブジェクトを転送するプログラムを解説していきます。

JSON形式とは

JSON形式とは、データの構造を表すフォーマットです。

データ構造を表すフォーマットと言えば他にも「XML」や「CSV」などがありますね。

そんなJSON形式の特徴を以下に挙げます。

  • 可読性が高い
  • 階層構造を持つデータをテキストベースで表現可能
  • データ量が少なくデータ転送効率が良い
  • 多くの開発言語・開発環境でライブラリが存在

特に、オブジェクト指向プログラミングでおなじみの『オブジェクト』を表現するのに長けていますので、複数のデータ型の値を一括りにして取り扱うことができます。

JSON形式の記述方法

JSON形式は以下のルールに従って記述されます。

JSON形式の記述ルール
  • オブジェクトは{ }(中かっこ)で囲む
  • キー : 値』の形で内部データを構成する
  • データは,(カンマ)で区切る
  • 文字列は“”(ダブルクォーテーション)で囲む
  • 配列の場合は[](角かっこ)で囲む
  • 配列の各要素は,(カンマ)で区切る
  • 使えるデータ型は『文字列』、『数値』、『ブール値』、『null』の4種類

例として、太郎さんを表すオブジェクトと、それをJSON形式で表現したデータを見比べてみましょう。

JSON形式での記述の仕方がインデントによってツリー状に見えますので、直感的にもわかりやすいですね。

金欠ぱとろん
金欠ぱとろん

XMLのようなタグとかもないので可読性が高いというのも
うなずけます

JSON形式のデータを送信するプログラム

JSON形式のデータをArduinoからPCへ送信するプログラムを作ってみました。

アプリ動作

ArduinoからTaroさんのオブジェクトを送信し、PC側のアプリで受け取るプログラムです。

Arduino側で一度オブジェクトをJSON形式に変換して、テキストデータとしてPCに転送し、再度PC側のアプリでオブジェクトに戻します。

【送信側】Arduino側のプログラム

まずArduino側のプログラムを解説していきます。

なお、本サイトの他の記事と同じくボードは『Arduino Nano Every』を使用しています。

Arduino_JSONライブラリが未インストールの場合は、以下の手順でインストールしてください。

表示(V)』ー『コマンドパレット』を押します。

Arduino: Library Manager』を押します。

画面右上の検索欄に『JSON』と入力してEnterを押します。

すると、ライブラリ名に”JSON”が入っているものが出てくるので、『Arduino_JSON』の最新バージョンを選択して『install』ボタンを押します。

以上でインストールは完了です。

【受信側】WPF側のプログラム

WPF(PC)側のプログラムです。

なお、今回もPrismを利用してMVVMで作成しています。MVVMの詳細やPrismのインストール方法はこちらへ。

.NET Frameworkではシリアル通信で使用する「SerialPort」クラスがいつでも使用できる状態にありましたが、後継の.NETではNuGetパッケージマネージャーでパッケージをインストールしないと使えません

そのため、まずはSerialPortクラスが入っているSystem.IO.Portsパッケージをインストールしてください。

ツール』ー『NuGetパッケージマネージャー(N)』ー『ソリューションのNuGetパッケージの管理(N)』を押します。

参照』を押し、検索ボックスに「system.io.ports」と入力します。

検索結果にある『System.IO.Ports』を選択し、右側にある現在のプロジェクト名のチェックボックスにチェックを入れます。

そのうえで『インストール』を押します。

これでSystem.IO.Portsのインストールは完了です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です