Jump to content


Windows Server 2012

- - - - -

ถามเรื่องการเขียนโปรแกรมบนมือถือผ่านบลูธูต


  • Please log in to reply
1 reply to this topic

#1 smilefisho

smilefisho

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 13 June 2008 - 09:46 PM

รบกวนถามนิดนึงคะ
พอดีว่าจะทำโปรเจคเกียวกับมือถือ
ประมาณว่าเวลาเราเปิดโปรแกรมคาราโอเกะ(นิค คาราโอเกะ)ขึ้นมาพอเพลงมันเล่นเราต้องกดปุ่มจากคีย์บอร์ด
ว่าให้มันเลื่อนไปเพลงถัดไป หรือว่าเพิ่มลดเสียง
แต่เราอยากใช้มือถือ(N 70)ในการกดปุ่มเหล่านี้แทนการกดคีย์บอร์ดโดยส่งผ่านบลูธูต
แต่ปัญหาที่พบคือ
1 มือถือไม่สามารถส่งค่าที่ไม่ใช่ไฟล์เช่นตัวเลขได้ ส่งผ่านบลูธูตอะคะ
อยากรบกวนถามว่าจะทำยังไงให้มันสามารถส่งได้
ข้อเป็นแนวคิดเกี่ยวกับโปรเจคนี้ก้อได้คะ

ตอนนี้คิดไม่ออกแล้วว่าจะทำอะไรต่อดี

#2 sukit

sukit

    Newbie

  • Members
  • Pip
  • 13 posts

Posted 02 September 2009 - 06:06 AM

import java.io.*;
import javax.microedition.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


public class test3 extends MIDlet implements CommandListener{
    Display dp;
    Command A1,A2;
    Alert al;
    TextBox tb;
    static OutputStream os;
    static StreamConnection c;
    static OutputStreamWriter ow;

public test3(){
    tb=new TextBox("BT 2.0 จ้าา","",90,TextField.ANY);
    A1=new Command("Send",Command.SCREEN,1);
    A2=new Command("Exit",Command.SCREEN,2);
    tb.addCommand(A1);
    tb.addCommand(A2);
    tb.setCommandListener(this);

}

public void startApp(){
    Display.getDisplay(this).setCurrent(tb);
        try{
            c=(StreamConnection)Connector.open("btspp://001F81000001:1;authenticate=true;encrypt=false");
        }catch(IOException e){
            al=new Alert("ผิดพลาด","เน่าที่ตัว INT เลยล่ะ  "+e,null,AlertType.INFO);
            Display.getDisplay(this).setCurrent(tb);
        }
}

public void pauseApp(){

}

public void destroyApp(boolean unconditional){

}

public void commandAction(Command x,Displayable d){
    if(x==A1){    //Send
        try{
            os =c.openOutputStream();
            ow=new OutputStreamWriter(os,"US-ASCII");
            ow.write(tb.getString());
            ow.close();
        }catch (Exception e){
            al=new Alert("ผิดพลาด","เริ่มต้น Open Connection ผิดพลาด"+e,null,AlertType.INFO);
            Display.getDisplay(this).setCurrent(al);
        }
            al=new Alert("กำลังส่งค่า","ส่งค่า "+tb.getString()+"ไปที่ 001F81000001 ",null,AlertType.INFO);
            tb.setString(null);
            Display.getDisplay(this).setCurrent(al);
    }

    if(x==A2){      //Exit
         destroyApp(false);
        notifyDestroyed();
        try{
             c.close();
             os.close();
        }catch(Exception e){
            al=new Alert("ผิดพลาด","กระบวนการปิดผิดพลาดที ่"+e,null,AlertType.INFO);
            Display.getDisplay(this).setCurrent(al);
        }
    }

}

}



กรณีที่ผมทำนี้คือรู้ address ของ บลูทูท ที่ต่ออยู่กับคอม
>> 001F81000001ใช้ channel spp ที่ ch 1

c=(StreamConnection)Connector.open("btspp://001F81000001:1;authenticate=true;encrypt=false");


อันนี้มันจะส่งค่าที่พิมไปที่ address ดังกล่าว แต่เวลาใช้งานจริง เราจะใช้คลาส canvas ซึ่งจะใช้ keyPressed ได้ ก็คือรับค่าเวลากดปุ่มตัวเลขใดๆ แล้วให้มันสั่งงานเลยน่ะคับ

ก็แล้วแต่คุณ แต่ถ้างานคุณรู้ค่า address แน่นอน โค๊ดนี้ก็ใช้ได้ ผมใช้อยู่ ตอนนี้เขียนเสร้จเมื่อคืน อิอิ
ในส่วนที่โปรแกมคาราโอเกะ จะรับค่าจาก serial port ยังงายหยอ
อันนี้ส่งค่าเป็น byte และก้อ string ได้เลยอ่ะจ๊ะ




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users