お気に入り

  • ____
    RCB-01
無料ブログはココログ

« Raspberry Pi で作るラジコン webiopi Ajaxを使用した実装 | トップページ | マイティフロッグ スバルブラット »

2017年10月20日 (金)

Raspberry Pi で作るラジコン webiopi Ajaxを使用した実装2

Blockdia_webiopi_2

前回の説明ではサーボ位置情報をサーバーに伝える実装について説明しました。
クライアントからサーバーに情報を伝えるだけなので非同期っぽくなかったです。

今回はクライアントからサーバーにバッテリ電圧値をリクエストし、サーバーが応答する説明をします。

(RCB-01ではwebiopiからI2C通信でPIC32マイコンにリクエストし、マイコンが値を返し、サーバー(webiopi)がクライアントに値を返すしくみになっています。)

javascriptファイル rcb.jsに

webiopi().callMacro("getVoltage", [],cbgetVoltage);

と記述しています。

前回のサーボ位置情報を伝える関数は

webiopi().callMacro("ServoMove", [pwm0,pwm1,pwm2,pwm3]);

です。比較すると引数[]がなにもないのと、前回無かった cbgetVoltageがあります。
cbgetVoltageはコールバック関数といいます。

C言語で記述しましたが、以下のLengthを取得する関数で説明すると
getLength関数が終了するタイミングで値がもらえる。これが通常の関数の戻り値の処理です。

int length  = getLength();

int getLength()
{
return 100;
}

これに対して上記のcbgetVoltageというコールバック関数を使用する場合は
クライアントが

webiopi().callMacro("getVoltage", [],cbgetVoltage);

を実行した後、サーバーからの応答が無くてもクライアントは動作が可能で、

そのうちサーバーから応答が来たら以下の処理をします。

function cbgetVoltage( macro, args, data )
{
batterydisp = data;
mtextBattery.innerHTML = "Battery Voltage " + data / 10 + "V";
}

これが非同期通信です。

rcb.pyには以下のマクロ関数が実装されてます。

@webiopi.macro
def getVoltage():
    try:
     voltage = bus.read_byte_data(address_pca9685,124)
     voltage = bus.read_byte_data(address_pca9685,124)
#      webiopi.debug("getVoltage : %s" % voltage)
    except IOError:
        pass

    return voltage

解説すると、

    try:
     voltage = bus.read_byte_data(address_pca9685,124)
     voltage = bus.read_byte_data(address_pca9685,124)
#      webiopi.debug("getVoltage : %s" % voltage)
    except IOError:
        pass

は例外処理と言って、IOErrorの時は処理をパスしますよ。という意味です。
この処理があるので、ノイズ等でI2C通信ができなかった場合等に処理をパスするので
pythonが止まりません。なにしろpythonはエラーで即落ちますから。

またこの処理があるので、RCBerry SoftwareはRCB-01が無くても動きます。
動くという意味はWebUIを試せるという事です。

« Raspberry Pi で作るラジコン webiopi Ajaxを使用した実装 | トップページ | マイティフロッグ スバルブラット »

ラジコン 技術情報」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Raspberry Pi で作るラジコン webiopi Ajaxを使用した実装2:

« Raspberry Pi で作るラジコン webiopi Ajaxを使用した実装 | トップページ | マイティフロッグ スバルブラット »

最近のトラックバック

2025年3月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31