Android上位机——基于坐标地图的蓝牙坐标数据传输app设计

蓝牙小车控制——二维坐标控制

给定一个方格地图,建立平面二维坐标,手机通过屏幕的坐标图,选定对应的坐标,通过蓝牙数据传输,为小车提供数据支持。

  1. 坐标图:

在这里插入图片描述

  1. 上位机界面

在这里插入图片描述

通过触屏获取界面的坐标值,进行数据处理后,发送出去。
界面简介:

  1. 控件:分为三个,分别是“打开蓝牙”、“搜索设备”、“发送消息”。其中“发送消息”是为了检验蓝牙串口通信是否正常,我这里是每点击一次发送一次“OK”字符串,可在电脑的串口调试助手看到。
  2. 消息显示框:上层是表示连接状态,如果连接成功则显示“连接成功”,否则“连接失败”。
  3. 设备列表栏:当检测到蓝牙设备的时候,可在此处看到,点击你的蓝牙模块进行连接。
  4. 坐标界面:下方的坐标界面是获取坐标值,买个交叉点我都做了特殊处理,当点击到此范围,我会将此范围定义一个特定的值,如下图
    在这里插入图片描述

我在(2,4)处点击,屏幕获得的坐标值为x=357.57632,y=310.4071。通过多次的取值,定下此区间内的数据为(2,4)。
具体代码如下:

private class TouchListenerImp implements View.OnTouchListener {//触屏获取坐标事件
    public boolean onTouch(View v,MotionEvent event){
        MainActivity.this.info.setText("x="+event.getX()+"  y="+event.getY());
        //x判断
        if (event.getX()>130 && event.getX()<180){ x=0;}
        else if (event.getX()>290 && event.getX()<340){x=1;}
        else if (event.getX()>410 && event.getX()<470){x=2;}
        else if (event.getX()>560 && event.getX()<650){x=3;}
        else if (event.getX()>700 && event.getX()<790){x=4;}
        else if (event.getX()>880 && event.getX()<950){x=5;}
        else {x=-1;}
        //y判断
        if (event.getY()>900 && event.getY()<950){ y=0;}
        else if (event.getY()>740 && event.getY()<800){y=1;}
        else if (event.getY()>600 && event.getY()<670){y=2;}
        else if (event.getY()>410 && event.getY()<480){y=3;}
        else if (event.getY()>280 && event.getY()<340){y=4;}
        else if (event.getY()>130 && event.getY()<190){y=5;}
        else {y=-1;}
        if (x!=-1&&y!=-1){
            connectThread.sendMsg(String.valueOf(x)+String.valueOf(y)+"\r\n");//发送坐标数据
        }
        return false;
    }
}

注意:定义的此区间是先通过获取屏幕坐标,之后根据这个区间大致的定下,这个视具体情况而定。
为了数据明显,我用串口助手进行数据的接受检测。
在这里插入图片描述

注:数据的格式是字符串,比如“24”是x=2,y=4的意思,想转换成整型数据,做个转换即可。
完整代码连接

猜你喜欢

转载自blog.csdn.net/qq_38413498/article/details/85379243