Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

XPort

XPortを使って以下のようなことをやってみました。

  • XPortとPCをシリアルで接続し,ハイパーターミナルを起動
  • 別なPCからXPortのネットワークに向かって「A」と「B」の文字列を送信(以下のJavaプログラムを使用)
  • ハイパーターミナルから「q」を入力するとプログラムは終了する。

上記の実験からデータの送受信の方法が分かったので,あとは,シリアルポートの先に制御対象物を繋げて試してみたい。

以下が使用したプログラムです。

/*
 * XPortTermAuto.java : 
 */
import java.io.*;
import java.net.*;

public class XPortTermAuto {
    final static String XPORT_IP = "10.10.10.50";
    final static int XPORT_PORT = 10001;

    public static void main(String[] args) throws IOException{
	Socket soc = new Socket(XPORT_IP,XPORT_PORT);
	DataInputStream in = new DataInputStream(soc.getInputStream());    
	DataOutputStream out = new DataOutputStream(soc.getOutputStream());

	new Thread(new Sender(out)).start();
	new Thread(new Receiver(in)).start();
    }
}

class Sender implements Runnable{
    private DataOutputStream _out;

    public Sender(DataOutputStream out){
	_out = out;
    }
    
    public void run(){
	while (true){
	    try {
		_out.writeByte('A');
		Thread.sleep(1000);
		_out.writeByte('B');
		Thread.sleep(1000);
		_out.writeByte(' ');
		Thread.sleep(1000);
	    } catch (IOException e){
		e.printStackTrace();
	    } catch (InterruptedException e){
		e.printStackTrace();
	    }
	}
    }
}

class Receiver implements Runnable{
    private DataInputStream _in;

    public Receiver(DataInputStream in){
        _in = in;
    }

    public void run(){
        int ch;
        while (true){
            try {
                if ((ch = _in.read())== 'q')
                    System.exit(1);
            } catch(IOException e){
                e.printStackTrace();
            }
        }
    }
}