« 2005年09月 | メイン | 2005年11月 »

2005年10月27日

シリアル通信 その2 By直井

以前紹介したシリアル通信のサンプルプログラムを作ってみました。

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.TooManyListenersException;
import java.util.Vector;
import javax.comm.CommPortIdentifier;
import javax.comm.NoSuchPortException;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
import javax.comm.SerialPortEventListener;
import javax.comm.UnsupportedCommOperationException;
import javax.print.attribute.standard.Chromaticity;
public class SerialTranslator implements SerialPortEventListener {
    // SerialPort
    private SerialPort   serialport = null;
    private InputStream  in         = null;
    private OutputStream out        = null;
    /**
     * 
     */
    public SerialTranslator() {
        super();
    }
    public static void main(String[] args) {
        SerialTranslator trans = new SerialTranslator();
        trans.send();
        trans.close();
    }
    /* 
     * ASCIIデータを受信して表示する
     * ETX(0x02)をデータ送信終了コードとする仕様
     */
    public void serialEvent(SerialPortEvent event) {
        try {
            if (event.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
                StringBuffer inputBuffer = new StringBuffer();
                int newData = 0;
                System.out.println("Serial Receive START->");
                while (true) {
                    try {
                        newData = in.read();// 入力ストリームから読み込み
                        if (newData == -1 || newData == 0x02) {// EOF or ETX?
                            System.out.println(inputBuffer+"<-END");
                            break;
                        }
                        if ('\r' == (char)newData) {
                            inputBuffer.append('\n');
                            System.out.print(inputBuffer);
                        } else {
                            inputBuffer.append((char)newData);
                        }
                    } catch (IOException ex) {
                        System.err.println(ex);
                        return;
                    }
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    /* 
     * シリアルポートを初期化した後
     * Key入力されたASCIIコードを送信する
     */
    public void send() {
        try {
            // Open new Serial Port.
            openSerialPort();
            BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
            String keyString;
            while (true) {
                try {
                    // Key入力待ち
                    keyString = keyin.readLine();
                    // EXITと入力された場合は終了
                    if(keyString.equals("EXIT")){
                        break;
                    }
                    byte[] bytes = keyString.getBytes();
                    out.write(bytes);    // 出力ストリームにバイト列を書き込む
                    out.flush();        // 出力ストリームをフラッシュ
                }
                catch (Exception e) {
                    e.printStackTrace();
                    continue;
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    /*
     * ストリーム、シリアルポートのクローズ処理
     */
    public void close() {
        try {
            if(in != null){
                in.close();
            }
            if(out != null){
                out.close();
            }
            if (serialport != null) {
                serialport.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * シリアルポートの初期化
     * ポート:COM1
     * ボーレート:9600
     * データビット:8
     * ストップビット:1
     * パリティ:なし
     * フロー制御:なし
     */
    private void openSerialPort() {
        try{
            CommPortIdentifier port = CommPortIdentifier.getPortIdentifier("COM1");
            // ユニークな名前でシリアルポートを開く
            SerialPort serialPort = (SerialPort) port.open("SerialTranslator", 30000);
            // シリアルポートのパラメータを設定
            serialPort.setSerialPortParams(    9600,        // Baudrate
                            SerialPort.DATABITS_8,        // Data Bits
                            SerialPort.STOPBITS_1,        // Stop Bits
                            SerialPort.PARITY_NONE);    // Parity Bit
            // Flow Control Mode
            serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
            // イベントリスナー登録
            serialPort.addEventListener(this);
            // シリアルポートがデータを受信した際に教えてねと設定
            serialPort.notifyOnDataAvailable(true);
            // 入力ストリームを取得
            in = serialPort.getInputStream();
            // 出力ストリームを取得
            out = serialPort.getOutputStream();
        }
        catch (Exception e) {
            e.printStackTrace();
        } 
    }
    private void dumpBytes(byte[] data){
        for(int i = 0; i < data.length; i++){
            System.out.print("[" + Integer.toHexString(data[i]) + "]");
        }
        System.out.println();
    }
}

投稿者 Tsuda : 15:30 | コメント (0) | トラックバック

2005年10月21日

菊花賞2

菊花賞トライアルが終了し、今週末の菊花賞出走馬がほぼ決まりました。
トライアルの結果は、またもやサンデーサイレンスの偉大が示されたものでした。

関東のトライアル・セントライト記念はキングストレイル(父サンデーサイレンス)が優勝。
関西のトライアル・神戸新聞杯はディープインパクト(父サンデーサイレンス)が相変わらずの強さを見せつけて優勝。健在振りをアピールしました。
神戸新聞杯の2~5着もサンデーサイレンス産駒が入り、層の厚さを示しました。

現状考えられるライバルは、神戸新聞杯の上位に食い込んだサンデーサイレンス産駒達でしょう。
他の路線から菊花賞を目指した馬も居ますが、目立った成績は残しておらず、今年の菊花賞はサンデーサイレンス産駒の戦いとなりそうです。

ディープインパクトのライバル登場かと思われた、セントライト記念の勝ち馬・キングストレイルの陣営は、早々に菊花賞を回避する意向を示し、無敗の三冠馬・ディープインパクト誕生の可能性が更に大きくなりました。

巷では既に三冠馬が誕生したかのような風潮が有ります。
某雑誌では、3ヶ月連続の「三冠馬ディープインパクト特集」をやると表明していました。

しかし、菊花賞は3000mの長丁場です。
大逃げで逃げ残る馬や、最後方からの末足勝負の馬も居ます。
例年、超スローペースになりがちですが、それ故、人気薄の逃げ残りが有り得ます。
何しろ、人気馬は大抵、後方で待機しており、他の馬は人気馬の動向を気にして、動くに動けない・・・等ということも有ります。
馬の適距離が3000mではない場合、呆れるほどの負け方をする場合も有ります。

しかし、サンデーサイレンス産駒がクラシックを走れるのは、今年と来年だけです。
サンデーサイレンスはまだ三冠馬を輩出していません。
サンデーサイレンスの実績を不動のものとするためにも、三冠馬・ディープインパクト誕生を期待しています。
(馬券はディープインパクト以外の馬の単勝が面白いと思いますが)

投稿者 Tsuda : 10:31 | コメント (0) | トラックバック

2005年10月17日

第12回 4トラカセットレコーダのススメ By三毛猫

更新してない間に阪神が優勝したり、

日本がシェフチェンコの欠場したウクラナイナに負けたり、

ジーコ監督が審判に抗議したり、

近所に家が建ったり、

新型iMACがでたり、

世間ではいろいろありました三毛猫です。

さて今回は、レコーディングの基本を身につけるのに

とぉ~ても最適な4トラカセットレコーダ(以下アナログMTR)について書きマスデス☆~


まずはアナログMTRの特徴として

トラック数が少ない。(だいたい4~8トラック)
音を録音し直すたびにテープが痛み音が悪くなる。
適当に操作してもなかなかブッ壊れない。
メディアが安い。	

と!言う点があげられます。

な~んでこんなDAWなんちゅ~モノのあるデジタルレコーディングの時代に

デメリットばかりのアナログMTR進めるかというとですねぇ(>_<))

レコーディングをしたことのない楽器の初心者が

いきなりお店の人にDAWやデジタルのMTRをススメられて購入しても

操作が難しすぎて使いこなせずタンスの肥やしになってしまうことが多いからです。

デジタルMTRは様々のことができる反面、操作が複雑です。

お値段もアナログMTRに比べ断然高く

操作するのも慎重になってしまいます。


しかし、アナログMTRはトラックが少なく単純ですから


操作に迷うこと無くどうやれば少ないトラック数で

自分の表現したい音楽を作れるか考えるようになります。(-。-;

ずいぶん前に書いたことですが、良い曲には必要な音以外入ってないって書きましたよね?

さらにもっともデジタルMTRを使っていて陥りやすいのは

何度でも音質の劣化なしに録音を取り直せてしまうことに甘えて

レコーディング技術が向上しないことです。

良いレコーディングテイクは緊張感があってこそ生まれるものです。

また今度本ちゃんテイクを録ればいいや!

ってな気持ちで手を抜いて演奏していては良いテイクは録れないです。

アナログのMTRを使いこなせるようになると

デジタルMTRを使った時、真のメリットや

レコーディングの楽しさがもっとわかるようになりますよ。(*^o^*)

アナログレコーダのススメでしたぁ。

それにしても世界はドックイヤーだと思う今日このごろです。

投稿者 Tsuda : 21:01 | コメント (0) | トラックバック

2005年10月07日

5回TJKフットサル大会に参加しました

こんにちわソフィックス フットサル部 です。
みなさん、ソフィックスにフットサル部があるのをご存知でしょうか?

今月、10月1日に1年で一番でかい大会"5回TJKフットサル大会"が埼玉の大宮運動場で開催されました。

この大会は参加チームが多いので、5チームづつブロックに別れて試合をして、それぞれのブロックで1位通過したチームで優勝を争うという設定になっています。

結果は、大接戦の末ブロック2位でした。

もうちょっと、もうちょっと早くついたら優勝できたかも…
と言うのもこの1年通してソフィックス、フットサル部の目標であるこの大会に事もあろう遅刻してきた輩が5人もいたのです。
(ちなみにこの日大会に参加した人数は7人です)

ことの始まりは、「み○ざき」さんの大寝坊からはじまりました。
遅刻組の5人で朝待ち合わせ(残りの二人は別行動で先に会場へ)をしてたんですけど、まてどもまてども「み○ざき」さんの姿が見えないので電話してみたら見事に熟睡してました。
「み○ざき」さんをおいて行くのはチームにとって痛手…しかし迎えに行ってると試合に間に合わないと言うことで、「おお○ち」さんが別行動で迎えに行くことにして残りの3人は会場に行くことに…

まだ、ここまでは良かったんですがそのあと…

これまた見事に高速でつかまっちゃいました。
ものすごい大渋滞…
運転手の「い○い」さんが車の中でラジコンで遊びだすくらい大渋滞…

これでは絶対間に合わないと高速を降りて進むことにしたんですが
降りた先がこれまた渋谷のセンター街。
でも、まだ良かったんです…これでも…

この後、池袋から高速に乗りなおせばすいてる情報が!
オー!っとスーパーダッシュで「い○い」さん池袋インター到着。
そのまま、のっちゃって大喜び!!

だったんですが…

ここで、とどめの一撃…

なんと逆方向に乗っちゃってました…

会場についてみると大寝坊したはずの、「み○ざき」さんも到着ずみ。
1回戦不戦敗の厳しい現実がまってました。
この後、うっぷんを晴らすかのごとく試合も進み1位通過したチーム(昨年総合4位?)とも大接戦でした。
来年は、ブロック通過は当たり前として、優勝を狙ってがんばります。

試合風景

試合風景

P.S. 大接戦だった試合でオウンゴールしてしまった「さと○」さんを苛めている「いのう○」さんが面白かったです。

投稿者 Tsuda : 14:45 | コメント (0) | トラックバック