セットアップとクリーンナップ~ SOCKET SERVER 'HAL'

HAL の起動時または終了時に、何らかの特別な処理を行いたい場合もあるでしょう。SetUp.php と CleanUp.php は、これらの処理を記述するためのファイルです。

あなたのアプリケーションに合った処理を記述して下さい。

SetUp.php の説明

HAL を起動する際、何らかの初期設定を行いたい場合もあるでしょう。

setting ディレクトリ内にある SetUp.php ファイルは、HAL の起動時、必要なライブラリの読み込みが終わった後にすぐに実行されます。

GPIO の設定などは、このファイルの中で行うと良いでしょう。以下に、デフォルト状態の SetUp.php ファイルの内容を記します。

このファイルの設定は、あなたが望む値に好きに変えていただいて構いません。あなた好みのセッティングをしてください。

SetUp.php

<?php
/* *
*
* socket server HAL v1.1
*
* (c) 2016 Katsuhiko Miki
*
* */
namespace Feijoa\HAL;

class SetUp
{
public static function exec(HALDto $dto)
{
wiringPiSetupGpio();

// SPI通信用の入出力を定義
pinMode(HAL::SPICLK, HAL::OUTPUT);
pinMode(HAL::SPIMOSI, HAL::OUTPUT);
pinMode(HAL::SPIMISO, HAL::INPUT);
pinMode(HAL::SPICS, HAL::OUTPUT);

pinMode(HAL::GPIO_SPEAKER, HAL::PWM);
pwmWrite(HAL::GPIO_SPEAKER, 0);
pinMode(HAL::GPIO_LED, HAL::OUTPUT);
digitalWrite(HAL::GPIO_LED, HAL::LOW);
}
}

exec メソッドの冒頭にある

wiringPiSetupGpio();

は、WiringPi を GPIOピンで指定するモードで初期化を行うメソッドです。

WiringPi のデフォルトは WiringPi 専用のピン番号での指定になっています。このピン番号は、Raspberry Pi に付属する GPIO カードのピン番号とは異なるため、少々不便です。

wiringPiSetupGpio() で初期化を行うと、GPIO カードの GPIO ピン番号で指定できるため、何かと便利です。

詳しくは、WiringPi のサイトの Setupページ を参照して下さい。(※英語です)

pinMode()

メソッドは、各 GPIO ピンについて動作モードを指定しています。0 が入力、1が出力、2が PWM 信号モードです。

HAL:: で始まる値については、HALの設定 を参照してください。この値は、0や1のように、直接数値を指定しても問題はありません。

このほか、GPIO 以外のあなた特有の初期設定も、このファイルの exec() メソッド内に記述すると良いでしょう。

CleanUp.php の説明

setting ディレクトリ内にある CleanUp.php は、SetUp.php とは反対に、HAL が終了する際、待受けソケットを閉じた直前に実行されます。

このファイルの exec() メソッドでは、例えば、使用した GPIO ピンのクリーンアップ等を行います。

以下に、CleanUp.php の内容を記します。

CleanUp.php

<?php
/* *
*
* socket server HAL v1.1
*
* (c) 2016 Katsuhiko Miki
*
* */
namespace Feijoa\HAL;

class CleanUp
{
public static function exec(HALDto $dto)
{
pwmWrite(HAL::GPIO_SPEAKER, 0);
digitalWrite(HAL::GPIO_LED, HAL::LOW);

// JULIUSプロセス終了
exec("pkill -f 'voice_client.php'");
exec("pkill -f 'julius'");
}
}

上記の例では、使用していた PWM 信号用のピンに 値 0 を出力し、LED 用のピンに LOW を設定しています。このようにしないと、HAL が終了した後も LED が光り続けたり、接続してあったスピーカーから音が鳴り続けたりします。

exec("pkill -f 'voice_client.php'");
exec("pkill -f 'julius'");

については、起動している Julius と voice_client のプロセスを終了させています。

もしあなたが HAL で他の GPIO ピンを利用したり、何か別の処理をさせているのなら、この CleanUp.php の exec() メソッド内に、その後処理を記述して下さい。


ご購入

ソケットサーバー「HAL」は以下のオンラインショップでご購入いただけます。ご購入に先立っては、ぜひ、体験版で動作の確認をお願いいたします。

体験版

ソケットサーバー「HAL」の体験版をダウンロード
hal_trial version 1.5
試用期限 2016/11/30 まで
※ sudo wget -O hal_trial_1_5.tar.gz 'http://feijoa.jp/getFile/?place=products&filename=hal_trial_1_5.tar.gz' でもダウンロードできます。
HAL の IP アドレス制限を解除してライセンス制に変更しました。お好きな IP アドレスで HAL をお試しいただけます。なお、ライセンスされていない製品では起動から 40 時間後に HAL は自動終了します。

この記事へのコメント

※現在コメントはMarkdown記法が強制です。>>Markdown の書き方


この記事に返信

このコメントに返信