컴퓨터 지식 네트워크 - 컴퓨터 소프트웨어 - 휴대폰 J2ME 프로그램이 프로토콜을 통해 내 Bluetooth 모듈과 어떻게 통신할 수 있습니까? 즉, 휴대폰을 사용하여 Bluetooth 모듈에 데이터를 보낸 다음 마이크로컨트롤러에 보냅니다. 차이 없음

휴대폰 J2ME 프로그램이 프로토콜을 통해 내 Bluetooth 모듈과 어떻게 통신할 수 있습니까? 즉, 휴대폰을 사용하여 Bluetooth 모듈에 데이터를 보낸 다음 마이크로컨트롤러에 보냅니다. 차이 없음

j2me를 사용하여 SPP 프로토콜을 구현하여 데이터를 연결하고 페어링하고 전송합니다. Bluetooth 모듈은 직렬 포트를 통해 마이크로컨트롤러에 연결됩니다.

가져오기 java.io.DataInputStream;

가져오기 java.io.DataOutputStream

가져오기 java.io.IOException; java.util.Vector;

javax.bluetooth.* 가져오기

javax.microedition.io.Connector 가져오기

javax.microedition.io 가져오기 StreamConnection;

javax.microedition.lcdui.* 가져오기

javax.microedition.midlet.MIDlet 가져오기

import javax.microedition.midlet.MIDletStateChangeException;

공용 클래스 BtSppMid는 MIDlet을 확장하여 Runnable, CommandListener, ItemCommandListener를 구현합니다. {

공용 StreamConnection 클라이언트 = null

//Bluetooth SPP 데이터 스트림

public DataInputStream dis = null;

public DataOutputStream dos = null

public boolean running; //스레드 실행 플래그

public Display display = null;

public Form form = new Form("JB00 Bluetooth suite");

private Command cmdExit = new Command("Exit", Command.EXIT, 1)

private Command cmdConnect1 = new Command("Connect1", Command.SCREEN, 1); //찾은 SPP 서비스에 연결

private Command cmdSearch = new Command("장치 검색", Command. SCREEN, 1); //블루투스 장치 검색

private Command cmdSrchService = new Command("Search service", Command.SCREEN, 1); //블루투스 서비스 검색

private Command cmdStopSrch = new Command("Stop", Command.SCREEN, 1); //블루투스 장치 검색 중지

private Command cmdOK = new Command("OK", Command.OK, 1) / /Search 장치에 도착한 후 해당 SPP 서비스에 직접 연결합니다.

public Command cmdConnect = new Command("Connect", Command.ITEM, 1)

DiscoveryAgent discoveryAgent;

DiscoveryListener discoveryListener;

//검색된 장치를 저장하는데 사용

Vector devices = new Vector();

Vector devName = new Vector();

Vector devAdr = new Vector();

Vector devItem = new Vector();

//검색된 서비스를 저장하는데 사용

Vector services = new Vector();

//서버 서비스 레코드

ServiceRecord Record=null; 검색에서 가져옴

p>

String deviceAddr;

String conURL;

public BtSppMid() {

super()

form.addCommand(cmdExit);

form.addCommand(cmdSearch);

form.setCommandListener(this); new MyDiscoveryListener(this);

form.setCommandListener(this)

p>

}

protected void startApp() throws MIDletStateChangeException {

display = Display.getDisplay(this);

display.setCurrent(form) ;

running = true;

try {

LocalDevice localDevice = LocalDevice.getLocalDevice();

discoveryAgent = localDevice.getDiscoveryAgent( );

form.append("블루투스가 준비되었습니다. 먼저 장치를 검색하세요./ n");

} catch (BluetoothStateException e) {

form.append("블루투스를 사용하지 못했습니다!/n블루투스 상태를 확인하는 것이 좋습니다./n");

pauseApp();

}

}

protected void PauseApp() {

// 닫기 ();

}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

running = false;

close();

}

public void commandAction(Command cmd, Displayable d) {

if (cmd == cmdExit) {

notifyDestroyed( );

}

else if (cmd == cmdSearch)

{

시도

{

//블루투스 장치 검색 시작

discoveryAgent.startInquiry(DiscoveryAgent.GIAC ,discoveryListener)

form.append("BT 장치 검색 중../n ");

}

catch(예외 e)

{

form.append("검색 오류!/n") ;

return;

}

form.removeCommand(cmdSearch);

form.addCommand(cmdStopSrch);

form.addCommand(cmdSrchService); //검색 서비스 명령 추가

}

else if (cmd == cmdSrchService)

{

UUID uuid[] = {new UUID(0x1101)}; //0x1101은 블루투스 SPP 서비스 UUID에 해당합니다.

for (int i=0;i

{

RemoteDevice btDevice = (RemoteDevice)devices.elementAt( i);

시도해 보세요

{

discoveryAgent.searchServices(null, uuid, btDevice, discoveryListener); //검색된 장치에서 SPP 서비스 찾기

form.append("searching service../n")

} catch (IOException e) {

form.append("검색 오류!/n");

return;

}

break;

}

form.removeCommand(cmdSrchService )

form.addCommand(cmdConnect1);

}

else if (cmd == cmdConnect1)

{

conURL = ((ServiceRecord)services.elementAt(0)).getConnectionURL(0,false); //첫 번째로 발견된 장치에 연결

form.append("Trying to connect1 "+conURL+"/n");

//블루투스 연결 스레드 시작

new Thread(this).start();

}

else if (cmd == cmdStopSrch)

{

discoveryAgent.cancelInquiry(discoveryListener); //블루투스 장치 검색 중지/

}

}

public void run() {

client = null;

try {

client = (StreamConnection)Connector.open(conURL) //지정된 장치의 SPP 서비스에 연결합니다. >form.append("Connected./n");

dis = client.openDataInputStream( );

dos = client.openDataOutputStream();

form.removeCommand(cmdConnect);

form.removeCommand(cmdConnect1);

form.removeCommand(cmdSrchService);

form.removeCommand(cmdStopSrch);

for(int i=0; i

{

//연결 성공 후 StringItem의 연결 명령을 제거합니다. 모든 장치에 해당

StringItem si = (StringItem)devItem.elementAt(i);

p>

si.removeCommand(cmdConnect);

}

} catch (예외 e) {

form.append("연결 오류!/n")

close(); return;

}

}

public void commandAction(명령어 c, 항목 항목) {

String deviceName;

if(c == cmdConnect) //기기의 SPP 서비스 연결

{

deviceName = ((StringItem)item).getText();

for (int i=0;i

{

if((String)devName.elementAt(i) == deviceName )

{

deviceAddr = (String) devAdr.elementAt(i) / /저장된 장치 주소에서 블루투스 주소 가져오기

conURL = "btspp ://"+deviceAddr+":1";

form.append("Connecting "+deviceName+". ./n");

//블루투스 연결 스레드 시작

새 스레드(this).start();

break;

}

}

}

}

public void close() {

try {

if (dis != null) {

dis.close();

dis = null;

}

if (dos != null) {

dos. close();

dos = null;

}

if (클라이언트 != null) {

client.close() ;

클라이언트 = null;

}

} catch ( 예외 e) {

e.printStackTrace(); >

}

}

public void sendDataToBluetooth(문자열 데이터)

{

시도

{

dos.write(data.getBytes());

dos.flush( )

} catch(IOException e)

{

e.printStackTrace();

}

}

}

//블루투스 장치 검색, 서비스 검색 처리

class MyDiscoveryListener는 DiscoveryListener를 구현합니다. {

BtSppMid midlet

p>

public MyDiscoveryListener(BtSppMid midlet) {

this.midlet = midlet;

}

public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {

문자열 이름 = null;

StringItem tmpItem;

try {

name = btDevice.getFriendlyName(false) // 장치 이름 찾기

} catch (IOException e) {

}

//장치를 검색한 후 화면에 StringItem으로 표시하여 명령을 추가하고 벡터에 저장합니다.

tmpItem = new StringItem(null, 이름);

midlet.devItem.addElement(tmpItem)

midlet.form.append ((StringItem)midlet.devItem.lastElement());

midlet.devices.addElement(btDevice)

}

public void queryCompleted(int discType ) {

for(int i= 0; i

{

StringItem si = (StringItem)midlet .devItem.elementAt(i);

RemoteDevice rd = (RemoteDevice)midlet.devices.elementAt(i);

문자열 이름 = null;

String adr = null;

try {

name = rd.getFriendlyName(false);

adr = rd.getBluetoothAddress();

midlet.devName.addElement(name);

midlet.devAdr.addElement(adr);

} catch (IOException e) {

}

si.setText(name); StringItem을 장치 이름으로 설정

}

midlet.form.append("/n검색 완료./n")

for(int i=0 ; i

{

StringItem si = (StringItem)midlet.devItem .elementAt(i);

si.setDefaultCommand(midlet.cmdConnect); //기기별 연결 명령어 추가

si.setItemCommandListener(midlet)

}

}

public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {

if(servRecord.length > -1)

{

for (int i = 0; i < servRecord.length; i++)

{

midlet.services.addElement(servRecord[ i]);

midlet. form.append(servRecord[i].toString()+"/n");

}

}

else{

midlet.form.append("서비스를 찾을 수 없습니다!/n")

}

}

public void serviceSearchCompleted(int transID, int responseCode) {

midlet.form.append(responseCode+"는 검색 결과입니다./n");

}

}

上篇: 컴퓨터가 종료되지 않습니다. 종료 버튼을 눌러도 컴퓨터가 종료되지 않고 다시 시작됩니다. 무슨 일인가요? 下篇: 우리 결혼했어요는 왜 방송을 중단했나요?
관련 내용