发表于: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显示量程、周期选择菜单。按示波器的习惯把显示波形的界面画出格子,通过查格子可以大致判断波形的幅值和周期。效果图如下:
欢迎光临我的BLOG