生物発光システムモニター系が出来上がるまでの悪戦苦闘記録をここに残しておきます。

ものの準備

  • Windows PC (ノート)1台
  • フォトマル1個
  • USB-RS232C コネクタ
  • ACアダプタ サンハヤト 【AD-S525】ACアダプター
  • DCジャック マル信無線電機 【MJ-17】取付DCジャック EIAJ2
  • アルミケース タカチ電機工業 【MB-22】MB型アルミケース
  • はんだごて・はんだ

20090415

  • Eclipseインストール
  • 外部プログラムとの呼び出し方法を確認
  • JFreeChart?のインストール
    • JFreeChartから jfreechart-1.0.12.zipをDL
    • 展開してできたファイルのlib以下をC:\Program Files\Java\jre6\libに入れる
    • Workspaceのプロパティからbuild pathに"jfreechart-1.0.12.jar"と"jcommon-1.0.15.jar"を加える
    • 以下のサンプルプログラムが動くのを確認
      package main;
      import org.jfree.chart.JFreeChart;
      import org.jfree.chart.ChartFactory;
      import org.jfree.data.time.TimeSeriesCollection;
      import javax.swing.JFrame;
      import java.awt.BorderLayout;
      import org.jfree.chart.ChartPanel;
      
      public class TimecourseDisplayTest extends JFrame{
       public static void main(String[] args) {
         TimecourseDisplayTest frame = new TimecourseDisplayTest();
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setBounds(10, 10, 500, 500);
         frame.setTitle("グラフサンプル");
         frame.setVisible(true);
       }
      
       TimecourseDisplayTest(){
         TimeSeriesCollection data = new TimeSeriesCollection();
         JFreeChart chart = 
           ChartFactory.createTimeSeriesChart("PV推移",
                                       "月",
                                       "PV",
                                       data,
                                       true,
                                       false,
                                       false);
      
         ChartPanel cpanel = new ChartPanel(chart);
         getContentPane().add(cpanel, BorderLayout.CENTER);
       }
      }

20090416

  • 時系列データをJFreeChart?を使ってとりあえず書かせてみることには成功
    package main;
    
    import javax.swing.JFrame;
    import java.util.*;
    import org.jfree.data.time.*;
    import org.jfree.data.xy.XYDataset;
    import org.jfree.data.xy.XYSeries;
    import org.jfree.data.xy.XYSeriesCollection;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.chart.plot.PlotOrientation; 
     
    
    import javax.swing.JFrame;
    import java.awt.BorderLayout;
    
    public class TimeSerieseDisplay2 extends JFrame {
    	public TimeSerieseDisplay2(){
    		// ステップ1:data setオブジェクトの作成
     		XYDataset dataset = createXYDataset();
    		// ステップ2:data setからJFreeChartオブジェクトを作成、及び設定
    		JFreeChart freeChart = createChart(dataset);
    		// ステップ3:Swingに出力
    		makepanel(freeChart);
    	}
    
    	private static XYDataset createXYDataset() {
    		XYSeries s1 = new XYSeries("1");
    
    		s1.add(1, 50);
    		s1.add(2, 150);
    		s1.add(3, 50);
    		s1.add(4, 250);
    		s1.add(5, 50);
    		s1.add(6, 350);
    		s1.add(7, 450);
    		s1.add(8, 50);
    		s1.add(90, 550);
    		XYSeriesCollection sc = new XYSeriesCollection();
    		sc.addSeries(s1);
    	
    		return sc;
    	}
    
    	// XYDatasetからJFreeChartを作成
    	public static JFreeChart createChart(XYDataset dataset) {
    		// 時系列グラフを作成するためのJFreeChartオブジェクトの生 成:
    ChartFactory.createXYLineChart 
    		JFreeChart jfreechart = ChartFactory.createScatterPlot(
    				"TimeSeries Chart Demo", // タイトル
    				"Hours", // categoryAxisLabel (カテゴリ軸、横 軸、X軸のラベル)
    				"Luminescence", // valueAxisLabel(ヴァリュー軸、縦軸、Y軸のラベル)
    				dataset, // data set
    				PlotOrientation.VERTICAL, //方向
    				true, // legend
    				false, // tool tips
    				false); // URLs
    
    		// 以下の設定は省略しても構いません。
    		// 出力される円グラフの透明度、境界線の色/有無などの設定を行 う:
    クラスPlot(時系列グラフはCategoryPlot) 
    		XYPlot plot = (XYPlot) jfreechart.getPlot();
    		// 背景色 透明度
    		plot.setBackgroundAlpha(0.5f);
    		// 前景色 透明度
    		plot.setForegroundAlpha(0.5f);
    		// その他設定は XYPlotを参照
    
    		return jfreechart;
    	}
    	
    	private void makepanel(JFreeChart chart){
    		ChartPanel cpanel = new ChartPanel(chart);
    	    getContentPane().add(cpanel, BorderLayout.CENTER);
    	}
    
    	public static void main(String args[]) {
    		TimeSerieseDisplay2 frame = new TimeSerieseDisplay2();
    		   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		   frame.setBounds(10, 10, 500, 500);
    		   frame.setTitle("Bioluminescence");
    		   frame.setVisible(true);
    
    	}
    } 
  • テキストファイルからの時系列データ描画にチャレンジ
  • 用意したテキストファイル
  • Tickを24時間刻みにするのにだいぶ時間がかかった。
  • とりあえずできるようになった。
  • 計測実行ボタンと計測停止ボタンとテキストファイル出力ボタンを作ります。
  • Swing奥深すぎる。明日に回します。

20090514

  • 約一ヶ月ぶりに手をつける。この間何があったんだろう...
  • 以下のような画面を作りたい。
  • それにしてもSwingって面倒くさいなぁ。
    --------------------------
    | Measure  |             |
    |----------|             |
    | STOP     |  Graph      |
    |----------|             |
    | Clear    |             |
    --------------------------
  • 上記レイアウトがうまくいかない。とりあえず、帰宅。

20090515

  • 死にたくなるような単純ミスのバグとりに5時間。悲しい。
  • GridBugRayout?で一応設定できた。
  • 次の目標はボタンの配置
  • その次の目標は一定時間置きに読み込みファイルを変える

20090518

  • ボタン配置をトライ
  • すぐ成功
  • mac-windows間のファイル共有にはまっている

20090519

  • まだファイル共有はまっている。
  • はまること5hくらい。windows側のファイル共有がうまくいっていなかったようだ。
  • なんせ自分自身がすでに見えていない。
  • 接続→すべての接続の表示→ワイヤレスネットワーク接続→プロパティ→Microsoft ネトワーク用ファイルとプリンタ共有のアンインストール+インストールで解決
  • ボタンいくつか配置。
  • 印刷ボタンを作ってみようと計画中。結構難しい?
  • 思ったより簡単だった。
  • 次はSaveボタン!

20090525

  • これまで何をやってきたか思い出すところから。
  • Saveボタン作るところから!
  • できた。(16:41)
  • 一定時間おきに読み込みファイルをかえてみよう
    • とりあえず計測開始ボタンを押したら、5s間隔で二つのファイルを行き来するようにしてみよう。→できた!
    • リアルタイムなファイルの書き換えに対応できるようにしてよみよう→できた!
  • Stopボタンも勢いで作ってみようかな。
    • Stopボタン→タイマーストップ。表示がクリアになる。(Tmpファイルをとりあえずどこかに現在の日付を利用してファイル名を作成し、コピーして削除。timecourse1.txtも削除。tmpOriginalからtmpを作成して、表示しなおし。)
    • 計測ボタン→押すと同時に一時停止ボタンに変化→一時停止ボタンを押す→Timerを単にとめる→計測ボタンに変化
    • EXPNOBOXを作る。現在のEXPNOを記したファイルを更新する。
    • DayBOXを作る。
      • それぞれ再生ボタンが押されたら入る。
    • もう10時なので、続きはあした!

20090608

  • 論文reviseにはまって完全にストップしてました(泣)
  • Stopボタンを実装した
  • 時系列ファイル構成

#ref(): File not found: "files.pdf" at page "メモ/生物発光測定装置ができるまで"

20090609

  • 計測ボタン再実装できず。
  • 計測ボタンの仕様
    • 計測ボタン押す
    • 計測中ボタンになる→計測開始
    • ボタン押す→一時停止
    • 停止ボタンを押す→計測開始

20090612

  • 計測ボタンの実装完了!
  • 次はExpNo?の挿入。新しいクラスを作って置き換える。

20090613

  • ボタンの配置がようやく終わった!(本当はAmplitudeなどを自動的に算出するプログラムの作成が終わっていない)
  • 次はどうやって実行ファイルを作るかだ。

20090615

  • Jarファイルがつくれん... "Could not fine the main class: main.... Program will exit."だそうです。うーん、含める選択をしているのになあ。
  • まずは、もどってHellow worldをつくってみるかなぁ。
  • ここが参考になりそう。
  • jarファイルからexeファイルを作るにはexewrapを使えばいいみたい。使い方はプログラムと同じフォルダにjarファイルを放り込んで、
    exewrap.exe -g XXXX.jar
    でよろしい。
  • したがって、実行可能jarファイルを作ることに専念しよう。
  • プログラムをリファクタリングしながらどこでjarファイルが作れなくなるか検証していこう
  • 3時間かけてなんとなくうまくいかない原因がわかってきた。外部のファイルを使うと駄目になるような気がする。

20090616

  • うん、わかった!やはり外部のフォルダに必要なファイルがあるとうまくいかないみたい。
  • うわーわかったファイル指定は絶対パスにしないと駄目なのか...。考えてみりゃそうだよなあ。
  • Jarファイル作れた!→exeファイル作れた!
  • 次は...やはりフォトマルとの接続をしていかなきゃならないね。
    • まずフォトマルの電源確保。
    • 次に工作。ものを準備!
  • 行程1 以下のものを揃える
    • アルミケース
    • DCジャック
    • ケースにつけるコネクタの部品

20091022

  • 数ヶ月ぶりにとりかかります。
  • フォトマルを発掘
  • やばい納品がすんでない...

20091030

  • フォトマルを5Vでんげんにつないだ。
  • QBASICはすでにインストールされているが、インストールの仕方をメモ
    1. QBASIC というソフトをインストールする
    1.1次のファイルをデスクトップにDL
    http://download.microsoft.com/download/win95upg/tool_s/1.0/W95/EN-US/olddos.exe
    1.2デスクトップに"qbasic"という名前のフォルダを作りDLしたファイルを放り込む
    1.3olddosをクリック。質問がでてきたらYをおす。
    1.4フォルダをcドライブ直下に移動
    1.5 この間送ってきてくれたファイル全部をqbasicフォルダにいれる
    
    2 QBASICを立ち上げよう
    2.1 スタート>アクセサリ>プロンプト で真っ黒な画面をだす
    2.2 "cd .."とうつ
    2.3 "cd .."とうつ
    2.4 "cd .."とうつ
    2.5 以上の作業によりcドライブの直下に移動したら、"cd qbasic"とうつ
    2.6 usとうつ(画面の雰囲気変わる)
    2.7 qbasic.exeとうつ
    2.8 なんか画面がでてきたら成功 画面を最大化
    2.9 マウスで上のプルダウンmenuからFileを選択 EVAL40.BASを開く
    2.10 上のプルダウンMenuからRUNを選択 
    
    3 EVAL40でデータ収集 
    3-1印加電圧(PMT)を少なくとも800くらいにしないと駄目

091102

  • RS232C(オス)-USB(メス)をネットで注文

091105

  • RS232C-USBが届いたので、さっそくEVAL40で計測。成功。印加電圧は1000くらいでいいと思われる。
  • 次の課題はPCからフォトマルの接続を行うべし。
  • RS232Cのjavaによる制御はここを参照する

091117

  • ようやくまともに動くプログラムが出来た。
  • 現時点でのsrcファイルをここにおいておく。
  • 現時点でのプログラム本体

091121

  • BLV?セットアップの仕方を記述

  編集 添付 リロード   新規 一覧 単語検索   最終更新のRSS