java comm

http://www.javaworld.com.tw/jute/post/view?bid=29&id=67074&sty=3

我找到此論壇之前所討論的相關資料
大概資料如下:

Package java comm
大概資料如下:

JNI 指的是讓 JVM 執行 native code 的方式,要搞 JNI 你要會 C/C++ 來產生 native code。
其實 JCA 底層也是用 JNI,你在不同的平台上要安裝不同的 native library。建議你使用 JCA 就可以了。

JNI其實他就是先用C寫好傳送位址的動作
像_inp, _outp等等
這種可能就是大家所謂比較低階的部分
也就是java無法直接操控的部分
然後編譯成.dll之後
再用java去使用他
說穿了就是利用C語言來達成目的

JCA的說明文件裡面也說著以後可能會支援USB和SCSI
USB可以,請參考
http://www-106.ibm.com/developerworks/java/library/j-usb.html

java.comm.*;-->與rs232的相關package下載
http://java.sun.com/products/javacomm/downloads/index.html
此還附有範例程式碼與API文件

存放路徑
此是安裝JRE的軟體
1.C:/Program Files/Java/j2re1.4.2/bin/win32com.dll
2.C:/Program Files/Java/j2re1.4.2/lib/javax.comm.properties
3.C:/Program Files/Java/j2re1.4.2/lib/ext/comm.jar

Or
此是安裝J2sdk的軟體
1.  C:/j2sdk1.4.1_01/jre/bin/win32com.dll
2.  E:/j2sdk1.4.1_01/jre/lib/ javax.comm.properties
3.  E:/j2sdk1.4.1_01/jre/lib/ext/comm.jar

介紹JAVA IO 的書
http://www.books.com.tw/exep/prod/booksfile.php?item=0010202835

相關網址:
http://www.javaworld.com.tw/jute/post/view?bid=29&id=18855&sty=3&age=0&tpg=1&ppg=1#18855

http://www.javaworld.com.tw/jute/post/view?bid=29&id=18609&sty=3&age=0&tpg=1&ppg=1#18609

http://www.javaworld.com.tw/jute/post/view?bid=29&id=18591&sty=3&age=0&tpg=1&ppg=1#18591

http://www.javaworld.com.tw/jute/post/view?bid=29&id=18995&sty=3&age=0&tpg=1&ppg=1#18995

在程式連結之前,請先安裝藍芽的Drive,並且開啟藍芽裝置
以下是對package java.comm內部類別的相關介紹

Class javax.comm.CommPortIdentifier
?P  決定通訊埠使有效的驅動
?P  I/O運轉開始的通訊埠
?P  決定port的所有權
?P  解決port所有權的競爭
?P  管理事件指出改變所有權狀態

Class javax.comm.SerialPort
?P  繼承class javax.comm.CommPort特性
?P  當用到addEventListener( )此方法時,會實作Interface javax.comm.SerialPortEventListener的serialEvent(SerialPortEvent event)方法內容
?P  當Commidentifier所定義出來的Port出來時,利用此類別設定Port參數。例如:COM1 Port設定以4800鮑的傳輸率、8 bits資料傳輸,1bit停止位元

Class javax.comm.SerialPortEvent
?P  序列埠發生事件種類

InputStrem
?P  FileInputStrem類別利用read( byte[] )方法,將檔案內容(指FileInputStream物件)字串放進byte[]陣列內讀取。
?P  例如:XXX.txt檔案裡面,假設寫了”My name is Java”這幾個字,而我宣告一個FileInputStream的物件名為FIS,指的就是XXX.txt。FIS.read( byte[]物件 )接著,我利用陣列方式將這幾個字”讀取”?釧顐駬yte陣列裡面變成如下:
Byte[0] = M
Byte[1] = y
Byte[2] =
Byte[3] = n
  .
  .
  .
以此類推

Class FileOutputStream
?P  此類別繼承java.lang.Object特性
?P  利用write( )的方法寫到檔案裡面去。
?P  例如:宣告一個OutputStream的物件為OS

1
OS = new OutputStream(“XXX.txt”);

假設宣告一個字串
String a = “My name is hobe”;
我們將a字串的內容放進XXX.txt內,就需要write( )這個方法。
1
FOS.write( a );

我們利用getBytes( )方法,將字串放入”byte陣列”

Interface javax.comm.CommDrive
?P  此不適合用在應用階層程式
?P  能呼叫CommPortIdentifie的open( )的方法
?P  能初始CommPortIdentifie的通訊埠
?P  getCommPort( )傳回的物件繼承SerialPort和ParallelPort

Class javax.comm.CommPort
?P  非public存取型態
?P  其下有兩個子類別,class javax.comm.ParallelPort和class javax.comm.SerialPort

開啟通訊埠(尚未設定)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.*;
import java.util.*;
import javax.comm.*;  //RS232與IEEE 1284之間的通訊
 
public class netest 
{
    static CommPortIdentifier portId; //先行定義Port的物件
    static Enumeration portList; //所有port的集合,請參考collection相關章節
    public static void main(String[] args) 
    {
        portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements()) // hasMoreElements()指的是,是否還有其它物件內容
        {
            portId = (CommPortIdentifier) portList.nextElement();
System.out.println(" "+portId.getName()); //取得通訊埠的名稱,例如:COM1、COM2
         }
    }      
}


設定com port值
1
serialPort.setSerialPortParams(4800,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);


COM1 Port設定以4800鮑的傳輸率、8 bits資料傳輸,1bit停止位元
RS232傳輸率相關網址:http://www.bbdsoft.com/rs232.html

上面的資料很豐富
我也看了裡面的相關範例,如果三個路徑沒設定好
complier就算能過,執行時也會找不到相關類別
看來我的問題就出現在這...
.dll 檔沒看到

這是我後來做的一點點相關文件...
希望對其他人有用處

感謝版主的教導

你可能感兴趣的:(java,jni,Class,import,byte,interface)