星期五, 4月 18, 2003

Java的Serial Port Programming

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

import javax.comm.*

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

CommPortIdentifier.getPortIdentifier( “COM1” );

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

接著作open的動作

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

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

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

設定通訊參數

利用SerialPort的function:setSerialPortParams(1200,

SerialPort.DATABITS_8,

SerialPort.STOPBITS_1,

SerialPort.PARITY_NONE);

ComP.setSetialPortParams(---略---);

Serial Port的IO動作是用Stream的方式。

用SerialPort的getInputStream,getOutputStream取得Receive和Send的Stream Object

InputStream In = ComP.getInputStream( );

OutputStream Out = ComP.getOutputStream ( );

Send:

和Stream的寫入動作一樣

Out.write(outdata,0,7);

Receive:

和Stream的讀取動作一樣

In.Read( );

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


和Serial相關的Stream動作:

檢查是否有收到資料

int In.available( )

讀入一個byte

(byte) In.read( )

因為read( )的return type是0~255的int,所以要轉型。

傳送

Out.write(outdata,start,len)

其中byte outdata[ ];

星期二, 4月 08, 2003

手動安裝VB的OCX

用REGSVR32來作….

以MSCOMM32.OCX為例

先copy MSCOMM32.OCX到C:\WINDOWS\SYSTEM\

安裝

C:\WINDOWS\SYSTEM\REGSVR32.EXE C:\WINDOWS\SYSTEM\MSCOMM32.OCX

移除

C:\WINDOWS\SYSTEM\REGSVR32.EXE /u C:\WINDOWS\SYSTEM\MSCOMM32.OCX

Debug Java Source with JSWAT

啟動

jswat的啟動蠻麻煩的,要指定jdk的library path和jswat的path

java -Djava.ext.dirs=\lib -jar \jswat.jar

是jdk所安裝的目錄,以我為例就是d:\j2dk1.4.0_03

是jswat.jar所在目錄,以我為例是e:\0210\java\jswat-2.14

可以寫成batch檔

設定

先要設定ClassPath和SourcePath

Option - Set Classpath

Option - Set Sourcepath

分別把要debug的class的class所在目錄和source code所在目錄加入設定

執行

VM - Start VM的對話窗中加入要debug的class name和argument,確認。


設定Breakpoint

在source code window中的Line Number地方按下,就可以設定斷點。

其他