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的意思,想轉換成整型數據,做個轉換即可。
完整代碼連接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章