- HCI 主機控制器介面(Host Controller Interface). 主機(電腦)和控制器(藍芽設備)之間的介面.
- L2CAP 邏輯連結控制器適配協定(Logical Link Controller Adaptation Protocol),這一層充當其他所有層的資料多工器.
- BNEP 即藍芽網路封裝協定(Bluetooth Network Encapsulation Protocol) , 可以在藍芽上執行其他網路協定, 例如 IP、TCP 和 UDP.
- RFCOMM 稱作虛擬串流通訊協定(virtual serial port protocol),因為它允許藍芽設備類比串流的功能
- OBEX 通訊協定層是在 RFCOMM 層上面實作, 把資料以物件 "檔" (data) 的形式傳輸
- SDP 是服務發現協定(Service Discovery Protocol)層,用於在遠端藍芽設備上尋找服務
- AVCTP 和 AVDTP,用於藍芽上音頻和視頻的控制.
底下用 jsr82 來實現 RFCOMM.
Server.java
import java.io.*;
import javax.microedition.io.*;
import javax.bluetooth.*;
public class RFCOMMServer {
public static void main( String args[] ) {
try {
String url = "btspp://localhost:" +
new UUID( 0x1101 ).toString() +
";name=SampleServer";
StreamConnectionNotifier service =
(StreamConnectionNotifier) Connector.open( url );
StreamConnection con =
(StreamConnection) service.acceptAndOpen();
OutputStream os = con.openOutputStream();
InputStream is = con.openInputStream();
String greeting = "JSR-82 RFCOMM server says hello";
os.write( greeting.getBytes() );
byte buffer[] = new byte[80];
int bytes_read = is.read( buffer );
String received = new String(buffer, 0, bytes_read);
System.out.println("received: " + received);
con.close();
} catch ( IOException e ) {
System.err.print(e.toString());
}
}
}
Client.java
import java.io.*;
import javax.microedition.io.*;
import javax.bluetooth.*;
public class RFCOMMClient {
public static void main( String args[] ) {
try {
String url = "btspp://0123456789AB:3";
StreamConnection con =
(StreamConnection) Connector.open(url);
OutputStream os = con.openOutputStream();
InputStream is = con.openInputStream();
String greeting = "JSR-82 RFCOMM client says hello";
os.write( greeting.getBytes() );
byte buffer[] = new byte[80];
int bytes_read = is.read( buffer );
String received = new String(buffer, 0, bytes_read);
System.out.println("received: " + received);
con.close();
} catch ( IOException e ) {
System.err.print(e.toString());
}
}
}
請注意 "url" 要改成你的 address & port.
如不知道,可用jsr 82所提供的 ServiceSearch.java
結果: BlueCove version 2.1.0 on winsock wait for device inquiry to complete... Device 001D289E7AFE found name K530i Device 2421AB354DC5 found Device 001E45B4779B found name Z610i Device Inquiry completed! 3 device(s) found BlueCove stack shutdown completed
The specification does not address nor provide APIs for the following:
回覆刪除1. Audio (voice) transmissions
2. Telephony Control Protocol – Binary (TCS Binary or TCS-BIN)
The API is intended to provide the following capabilities:
1. Register services
2. Discover devices and services
3. Establish RFCOMM, L2CAP and OBEX connections
4. Conduct these activities in a secure fashion