はじめましてdScript

こんにちは。1951年の観測開始以来、最速で梅雨入り(5月16日@近畿)を果たした令和3年ですが、えぇっと、、

雨、降ってますか?最初の1週間くらいは雨が続いていた記憶がありますが。というか、え、いきなり暑すぎませんか夏ですか春も梅雨も一体どこへ行ってしまったのでしょうね。

からすぱんです。


先日、初めてのプログラミング言語を扱う機会がありました。その名も「dScript」。そうです、d の Scriptです。

dScript
dSctipt

dScriptとは

dScriptは、モノのインターネット(IOT)のためのプログラミング言語です。
devantechのスクリプティング言語から派生したdScriptは、インターネットに接続されたモジュールのためのマルチスレッド言語です。dScriptは、モジュールのオンボード・ランタイム・ファームウェアによって解釈される効率的なバイトコードにコンパイルされます。dScriptはBASICではありませんが、dScriptの構文はVisual Basicや小さなBasicチップやモジュールを使用したことのある人にはなじみ深いものです。

・・・

dScript Web サーバーを使用すると、独自の Web ページを作成してモジュールにアップロードすることができます。Webサイトでは、AJAX技術を使用して変数をライブで更新しながら、独自の変数を任意の方法で表示することができます。ウェブページ上のボタンを使って、モジュール上のものをコントロールすることができます。もちろん、独自のブランディングをページに適用することもできます。CSSを使用してウェブサイトをフォーマットし、必要な画像やロゴを含めることができます。

https://www.robot-electronics.co.uk/products/dscript.html

上記にある通り、構文はVisual Basicに似通っていてそれほど難しくはありません。(制御そのものとは別の話ですが。;;)

今回はDevantechの dScript対応の機器であるdS378(イーサネットリレーボード)を例に軽~くご紹介していきたいと思います。ちなみに、イーサネットリレーボードとはイーサネット接続でWEBブラウザから基板上のリレーをON/OFF操作できるリレーボードのことです。

それでは早速、簡単な制御をコーディングしていきます。

Webページ作成

IPアドレス入力とリレーをON/OFFするボタンを配置したWebページを作成します。

<html lang="jp">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Index</title>
</head>
<body>
    <div style="text-align:center;padding-top:30px">
        <div> IP Address </div>
            <input id="ipaddress" type="text" value="~IP_Address~" onkeyup="newAJAXCommand('dscript.cgi?IP_Address='+document.getElementById('ipaddress').value);">
        </div>
    </div>
    <div style="text-align:center;padding-top:30px">
        <div> Relay button </div>
            <button style="width:22%;height:35px;max-width:200px;" id="relay01" onmousedown="newAJAXCommand('dscript.cgi?RelayClicked=1');">Relay 01</button>
        </div>
    </div>
</body>
</html>
onkeyup=”newAJAXCommand(‘dscript.cgi?IP_Address=’+document.getElementById(‘ipaddress’).value);”

入力したIPアドレスを、dScriptのIP_Addressプロパティへ反映させます。

value=”~IP_Address~”

dScriptのIP_Addressプロパティをvalueに設定し、Webページ上に表示させます。

onmousedown=”newAJAXCommand(‘dscript.cgi?RelayClicked=1’);”

ボタンクリック状況をdScriptのRelayClickedプロパティへ反映させます。

dScript制御を作成

サーバ側のdScriptをコーディングします。

flstring        IP_Address[16]
int32           RelayClicked

tcpip.ip        IP_Address
digitalport     Relay_01    1

thread ClickedProcesses(const)
    do
        if RelayClicked != 0 then
            if Relay_01 == on then 
                Relay_01 = off
            else
                Relay_01 = on
            endif

            RelayClicked = 0
        endif
    loop
endthread

thread main(const)
    Init()
    threadstart ClickedProcesses
endthread

function Init()
    IP_Address = "192.168.×××.×××"
endfunction
flstring IP_Address[16]、int32 RelayClicked

indexページとdScriptとの共有プロパティを定義します。

digitalport Relay_01 1

切り替え対象となるリレーボード上のリレーを第二引数の番号にて設定します。

Relay_01 = off、Relay_01 = on

リレーのON/OFF状態を切り替えます。

実行結果

indexページ

Relay 01ボタン未押下時。リレーはOFFのためLEDが消灯している。

Relay 01ボタン押下時。リレーがONとなりLEDが点灯している。

indexページのボタン押下状態に応じて、リレーボードのリレーの制御を行うことができました。

今回用いたdS378にはリレーの他にI/Oも付属しており、こちらでもON/OFFの切り替えができたり電源を繋げて電圧を測ることもできます。

考え方次第でいろいろと使い道がありそうですね。

今回は以上です。

最後まで読んでいただきありがとうございました。