星期五, 4月 18, 2003

Java的Serial Port Programming

Serial Port的支援並不在JDK的標準中,Sun作了一個implementationCOMMAPI),放在exetention裡,所以在使用Serial Port時,要

import javax.comm.*

首先藉由CommPortIdentifier的一個static method : getPortIdentifier( )取得SerialPort的使用權

CommPortIdentifier.getPortIdentifier( “COM1” );

其中的參數是Serial Port的代表字串,和OS相關,windows系統就是COM1COM2Linux系統就是(?)。

接著作open的動作

CommPortIdentifier.getPortIdentifier(“COM1”).open(“AppName”,timeou);

需要傳入自己的application name,作為註冊用,還需要指定不成功時,等候timout的時間,這個function會傳會SerialPort object。之後所有的動作都是以這個objectreference

SerialPort ComP = CommPortIdentifier.getPortIdentifier(“COM1”).open(“AppName,2000);

設定通訊參數

利用SerialPortfunctionsetSerialPortParams(1200,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

ComP.setSetialPortParams(------)

Serial PortIO動作是用Stream的方式。

SerialPortgetInputStreamgetOutputStream取得ReceiveSendStream Object

InputStream In = ComP.getInputStream( );

OutputStream Out = ComP.getOutputStream ( );

Send:

Stream的寫入動作一樣

Out.write(outdata,0,7);

Receive:

Stream的讀取動作一樣

In.Read( );

在程式結束的時候,所有openport都會被關閉。


Serial相關的Stream動作:

檢查是否有收到資料

int In.available( )

讀入一個byte

(byte) In.read( )

因為read( )return type0~255int,所以要轉型。

傳送

Out.write(outdata,start,len)

其中byte outdata[ ];

沒有留言: