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(); } } } }