中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

无线通信

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 无线通信 → 浏览主题: 手机JAVA编程之蓝牙通信
发表新帖 回复该主题
回帖:1个,阅读:1759 [上一页] [1] [下一页]
* 帖子主题:

手机JAVA编程之蓝牙通信

分享到
1919
周长锁
文章数:312
年度积分:50
历史总积分:1919
注册时间:2006/4/29
发站内信
08年优秀博客奖
发表于:2011/10/4 21:09:50
#0楼

1开发环境配置
首先安装J2SE即JDK(jdk-6u22-windows-i586-p.exe),安装完成后,在“我的电脑—》属性—》高级”中,配置java环境变量,设置3项属性,JAVA_HOME,PATH,CLASSPATH,若已存在则点击“编辑”,不存在则点击“新建”,JAVA_HOME指明JDK安装路径,PATH使得系统可以在任何路径下识别java命令,设为%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar。
接着安装WTK(sun_java_wireless_toolkit-2_5_2-ml-windows),默认路径是C:\WTK25。WTK的全称是Sun J2ME Wireless Toolkit,是Sun的无线开发工具包。以上软件均可以在sun的官方网站免费下载。
最后安装Eclipse作为开发环境,J2ME开发包工具可以被绑定在这些集成开发环境中,进一步提高开发效率。本设计用的是Eclipse3.6.2和EclipseMe1.7.9版本的软件。
2蓝牙连接
   手机蓝牙和蓝牙串口模块之间的连接,是程序设计的重点,也是难点。这个连接过程就是创建一个蓝牙客户端,分查找设备、查找服务、获得连接URL和建立连接4个主要步骤。具体代码如下:
//查找蓝牙设备
publicvoidMyInquiry() {                  
  try{
      //获得本地设备
      LocalDevice localDevice = LocalDevice.getLocalDevice();
      //获得发现代理
       discoveryAgent= localDevice.getDiscoveryAgent();
       //开始查找设备
       discoveryAgent.startInquiry(DiscoveryAgent.GIAC,this);
   }catch(Exception e) {
      e.printStackTrace();
   }
}
//DiscoveryListener接口,记录已找到蓝牙设备并显示
publicvoiddeviceDiscovered(RemoteDevice remoteDevice, DeviceClass cod) {          
  try{
      sel.append(remoteDevice.getFriendlyName(true),null);
  }catch(Exception e){
      sel.append(remoteDevice.getBluetoothAddress(),null);
  }finally{
      remoteDevices.addElement(remoteDevice);
   }          
}
//DiscoveryListener接口,查找设备完成
publicvoidinquiryCompleted(intdiscType) {
  if(remoteDevices.size() > 0) {
         //加入其它代码,如查找服务
  }
  else{
  }          
}
//查找服务
publicvoidMyServices(){
  try{
      RemoteDevice remoteDevice = (RemoteDevice)remoteDevices.elementAt(sel.getSelectedIndex());
      discoveryAgent.searchServices(attrSet,uuidSet, remoteDevice ,this);
      }catch(Exception e) {
          e.printStackTrace();
  }
}
//DiscoveryListener接口,服务查找成功,得到连接ULR
publicvoidservicesDiscovered(inttransID, ServiceRecord[] servRecord){
  DataElement serviceNameElement = servRecord[sel.getSelectedIndex()].getAttributeValue(0x0100);
  String _serviceName = (String)serviceNameElement.getValue();
  StringserviceName= _serviceName.trim();
  btConnectionURL= servRecord[sel.getSelectedIndex()].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT,false);
}
//DiscoveryListener接口,查找服务完成
publicvoidserviceSearchCompleted(inttransID,intrespCode) {
  if(respCode == DiscoveryListener.SERVICE_SEARCH_COMPLETED) {     }else{}          
}
//打开连接,建立输入、输出通道
StreamConnection connection = (StreamConnection)Connector.open(btConnectionURL);
             
经过以上步骤,手机和蓝牙串口模块建立起了连接,用read、write方法可以互相通信,传输数据了。
3波形显示
把以前的示波器加了蓝牙模块,测试程序用的是三星S3370手机,屏幕分辨率为320x240,屏幕上、下侧用于显示手机状态和按键信息,实际可编程使用的分辨率为200x240,上部170x240部分显示波形,下部30x240显示量程、周期选择菜单。按示波器的习惯把显示波形的界面画出格子,通过查格子可以大致判断波形的幅值和周期。效果图如下:
图
此帖来自中华工控网工控博客
原文件地址:http://blog.gkong.com/more.asp?id=144581&Name=zhouchs
欢迎光临我的BLOG
166
175245007
文章数:1
年度积分:-22
历史总积分:166
注册时间:2011/10/27
发站内信
发表于:2011/10/28 9:23:10
#1楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003