智能小车57:手机端发送命令

1.按钮事件
case R.id.goFront:
    bluetoothMessage.sendMsg("u");
    break;
case R.id.goLeft:
    bluetoothMessage.sendMsg("l");
    break;
case R.id.goRight:
    bluetoothMessage.sendMsg("r");
    break;
case R.id.goBack:
    bluetoothMessage.sendMsg("d");
    break;
case R.id.btnStop:
    bluetoothMessage.sendMsg("s");
    break;
2.使用Socket发送方法
public void sendMsg(String cmd) {
        try {
            String msg = CzProtocol.createPacket(cmd);
            if (socket != null) {
                try {
                    socket.getOutputStream().write(msg.getBytes());
                } catch (IOException e) {
                    e.printStackTrace();
                    //发送发生异常,重连Socket
                    SubThreadToast.toast(context,"发送发生异常,重连Socket");
                   
                  

                }
            } else {
                //子线程调用toast,得这样写
                SubThreadToast.toast(context,"未连接,不能执行");
                showBlueList();

            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
3.构造数据包方法
public static String createPacket(String data){
    StringBuffer sb=new StringBuffer();
    int maxLen=59;
    if(data==null||data.length()==0){
      System.out.println("不能发送空数据");
      return null;
    }
    if(data.length()>maxLen){
      System.out.println("数据最长为"+maxLen);
      return null;
    }
    byte[] datas=data.getBytes();
    sb.append(STARTFLAG);
    sb.append((char)datas.length);
    byte xor=datas[0];
    for(int i=1;i<datas.length;i++){
      xor=(byte) (xor^datas[i]);
    }
    sb.append((char)xor);
    for(int i=0;i<datas.length;i++){
      sb.append((char)datas[i]);
    }
    return sb.toString();
    
    
    
  }
文/程忠 浏览次数:0次   2020-06-06 22:45:50

相关阅读


评论: