解答例 |
---|
import java.io.*; import java.util.Enumeration; import com.dalsemi.onewire.OneWireAccessProvider; import com.dalsemi.onewire.OneWireException; import com.dalsemi.onewire.adapter.DSPortAdapter; import com.dalsemi.onewire.container.*; import java.util.Calendar; class temp{ public static void main(String args[]) { (new temp()).tempDisp(); } public void tempDisp() { Calendar cal = Calendar.getInstance(); // 日付情報を得る String myString = String.valueOf(cal.get(Calendar.YEAR))+"/" +String.valueOf(cal.get(Calendar.MONTH)+1)+"/" +String.valueOf(cal.get(Calendar.DAY_OF_MONTH ))+" " +String.valueOf(cal.get(Calendar.HOUR_OF_DAY))+":" +String.valueOf(cal.get(Calendar.MINUTE))+":" +String.valueOf(cal.get(Calendar.SECOND)); System.out.println(getTemperatures()+myString); //温度情報と繋げて表示 } public String getTemperatures() { //温度を測定し文字列にする byte[] state; OneWireContainer28 tc; // 用いているセンサーのコンテナ String val=""; try { // アダプターに接続する DSPortAdapter adapter = OneWireAccessProvider.getDefaultAdapter(); // アダプターを排他的に使用する adapter.beginExclusive(true); // アダプターにつながってるネットワーク内を検索する adapter.setSearchAllDevices(); adapter.targetAllFamilies(); adapter.setSpeed(adapter.SPEED_REGULAR); // 検索されたデバイスをリストアップする Enumeration e = adapter.getAllDeviceContainers(); // リストの先頭に温度センサーがある予定 OneWireContainer c = (OneWireContainer)e.nextElement(); // 用いているセンサーとしてキャストする tc = (OneWireContainer28)c; // センサーの状態を読む state = tc.readDevice(); // 温度を測定する tc.doTemperatureConvert(state); state = tc.readDevice(); // 測定結果を摂氏で得て文字列に変換する。 val = String.valueOf(tc.getTemperature(state))+" "; } catch (Exception e) { System.out.println("Temp " + e.toString()); return "Temp.Error"; } return val; } } |
class ThreadTest { public static void main(String [] args){ new timer().start(); } } class timer extends Thread{ public void run(){ int counter=0; while(true) { System.out.println(counter++); try { Thread.sleep(1000); } catch(Exception e){} } } }
ヒント:1-wireのドキュメントを読む。