-------------------------------------------- CONPROSYS スクリプト100選  No.021 -------------------------------------------- 処理名称:LoRa送信受信ルーチン 作 成 日:2018年3月12日 処理内容:LoRa受信送信ルーチンへデータ送信 送信後、送信先からの返答を待機する。 [信号] 特になし。 [動作] 1.送信用データフォーマットを作成する。 ※サンプルでは、文字列演算によりLSTAG00へ以下のデータを格納・連結する。 ・[X : 2, Y : 2] LSTAG00 = 0001 -> 送信先IDを0001 ・[X : 2, Y : 3] LSTAG00 += 0001 -> 送信先アドレスを0001 ・[X : 2, Y : 4] LSTAG00 += TEST -> 入力データをTEST ・[X : 2, Y : 5] LSTAG00 += CR+LF -> CRLFを連結 2.作成されたデータ(LSTAG00)をlink-0へ送信する。 3.送信後、link-0から改行コードを受け取るまで受信したデータを連結しながら待機する。 4.改行コード受信後、受信データの判別を行う。 受信データ種別に応じた処理 ・[X : 6, Y : 2]( OK ) : 相手ノード送信出力データの受信待ち状態へ移行します。 ・[X : 6, Y : 3]( NG ) : レスポンスコードを切り出し、再度データ送信を行います。 上記2判定に当てはまらない場合は相手ノード送信出力データとして判別し、 出力データの切り出し・変換・格納処理を行います。( [X : 6, Y : 4 ] goto LAB03 ) 5.出力データ受信時の処理 サンプルでは、送信データ構造が 【 [ RSSI(4byte) ][ 送信元PANID(4byte) ][ 送信元アドレス(4byte) ][ 出力データ+CRLF(50byte) ] 】 のようになっており、このデータを切り分けます。 ・[X : 9, Y : 3] LSTAG10 = Le LSTAG03 (RSSI値) ・[X : 9, Y : 4] LSTAG11 = Mi LSTAG03 (送信元PANID) ・[X : 9, Y : 5] LSTAG12 = Mi LSTAG03 (送信元アドレス) ・[X : 9, Y : 6] LSTAG13 = Ri LSTAG03 (出力データ) のように格納されます。 6.「5.」完了後、格納された値を数値に変換して別場所へ格納します。 ・[X : 9, Y : 7] LTAG01 = LTAG10 ※1 ・[X : 10, Y : 7] TAG11 = LTAG11 ・[X : 11, Y : 7] TAG12 = LTAG12 (※1)別途「RSSI値」のみ[X : 11, Y : 6]で判定(RSSI値が32768以上)を行う ・条件成立時 : TAG10 = LTAG01 - 32768 ・条件不成立時 : TAG10 = LTAG01 + 0 を行う。 7.格納後、link-0を切断して「1.」へ戻る。 ※つまり「1.」〜「7.」をループします。 [説明(補足)] ・現在のサンプルの設定では下記の通信設定になっております。 - 送信先ID 0001 - 送信先アドレス 0001 - 入力データ TEST 送受信テスト実施の際にご参考ください。 ・送信受信タスクを起動する前にリンク設定を行ってください。(上記タブ>設定>リンク設定) ・受信待機時にエラー(キャリアセンスエラー等)が発生した場合は、エラーメッセージを出力し、送信状態へ戻ります。 ・このサンプルプログラムは「LoRa送信受信ルーチン」と通信する事を想定して設計されていますので、 送受信テストを行う際には「LoRa送信受信ルーチン」のダウンロードも推奨いたします。 ・このreadmeに加え、「リファレンスマニュアル(ソフトウェア編)MCS341スタック用.docx」をご参照頂くと より効果的に内容の把握が可能になります。(サンプル11)