Watch |
---|
import com.dalsemi.onewire.OneWireAccessProvider; import com.dalsemi.onewire.adapter.DSPortAdapter; import com.dalsemi.onewire.adapter.OneWireIOException; import com.dalsemi.onewire.container.OneWireContainer; import com.dalsemi.onewire.utils.*; import com.dalsemi.onewire.application.monitor.*; public class Watch implements DeviceMonitorEventListener { public static void main (String args []) { OneWireContainer owd; // 1-wireのコンテナ int delay; try { // デフォールトのアダプターを得る DSPortAdapter adapter = OneWireAccessProvider.getDefaultAdapter(); System.out.println(); System.out.println("Adapter: " + adapter.getAdapterName() + " Port: " + adapter.getPortName()); System.out.println(); // 以前の探索制限をクリアする adapter.setSearchAllDevices(); adapter.targetAllFamilies(); adapter.setSpeed(adapter.SPEED_REGULAR); // このアダプターを用いてWatchクラスを作る Watch nw = new Watch(adapter); // 示された時間だけsleepする if (args.length >= 1) delay = Integer.decode(args [0]).intValue(); else delay = 20000; // 20秒 System.out.println("Monitor run for: " + delay + "ms"); Thread.sleep(delay); // 走っているスレッドを殺す nw.killWatch(); // free port used by adapter adapter.freePort(); } catch (Exception e) { System.out.println(e); } return; } // デバイスモニターインスタンス private DeviceMonitor dm; public Watch (DSPortAdapter adapter) { // デバイスモニターオブジェクトを作る dm = new DeviceMonitor(adapter); // このオブジェクトにイベントリスナーを加える try { dm.addDeviceMonitorEventListener(this); } catch (Exception e){} // モニター開始 Thread t = new Thread(dm); t.start(); } public void killWatch() { // デバイスモニタースレッドを殺す dm.killMonitor(); } public void deviceArrival (DeviceMonitorEvent devt) { for(int i=0; i<devt.getDeviceCount(); i++) System.out.println("ADD: " + devt.getAddressAsStringAt(i)); } public void deviceDeparture (DeviceMonitorEvent devt) { for(int i=0; i<devt.getDeviceCount(); i++) System.out.println("REMOVE: " + devt.getAddressAsStringAt(i)); } public void networkException (DeviceMonitorException dexc) { System.out.println("ERROR: " + dexc.toString()); } } |
このプログラムはどのiButtonでも挿抜されたときにメッセージが出ます。これを自分のDS1990AのiButtonでのみ応じるように変更しなさい。簡単なセキュリティプログラムになります。
情報クライアントの一つの例としてLEDをon/offするためのクライアントを作ります。上のプログラムと前の実験で作ったエコーポートを利用して作りなさい。
なお、簡単のためにonあるいはoffの2種類の情報を処理するとします。
また、一つのマシンでServerとClientを行って動作をチェックすること。正常に動作するようになったら、友達のマシンをサーバーあるいはクライアントにしてお互いにチェックしなさい。
次のBlinkyプログラムを参考にしてください。
Blinky |
---|
import com.dalsemi.system.BitPort; import com.dalsemi.system.TINIOS; class Blinky { public static void main(String[] args) { BitPort bp; bp = new BitPort(BitPort.Port5Bit2); for (int i=0; i<10; i++) { // LED点灯 bp.clear(); // 1/4 秒着いたままにする try { Thread.sleep(250); } catch (InterruptedException ie) {} // LED消灯 bp.set(); // 1/4 秒消えたまま try { Thread.sleep(250); } catch (InterruptedException ie) {} } } } |