wifi小车备忘

今天把落灰已久的wifi小车拿了出来,试了试还能用,进度条问题依旧,正巧X1上前不久把ecllipse环境调试OK,打开代码,google搜索了一遍垂直进度条,发现已经有更简单的解决方案,于是重写了一个VerticalSeekBar,关键是如下函数:

    protected void onDraw(Canvas c) {  
        c.rotate(-90);  
        c.translate(-getHeight(), 0);  
  
        super.onDraw(c);  
    }  
 

然后在onTouchEvent中加入如下代码处理进度条变化:

    @Override  
    public boolean onTouchEvent(MotionEvent event) {  
        if (!isEnabled()) {  
            return false;  
        }  
  
        switch (event.getAction()) {  
            case MotionEvent.ACTION_DOWN:  
            case MotionEvent.ACTION_MOVE:  
            case MotionEvent.ACTION_UP:  
                setProgress(getMax() - (int) (getMax() * event.getY() / getHeight()));  
                onSizeChanged(getWidth(), getHeight(), 0, 0);  
                break;  
  
            case MotionEvent.ACTION_CANCEL:  
                break;  
        }  
        return true;
    }

至此,UI上没有问题了,但自从上次换了舵机,舵机方向与进度条就不一致了,然后又在main.java里更新了代码,把方向调整过来,增加了一个常量定义。

    private final int MIN_GEAR_STEP = 2;//避免抖动,+-5左右
    private final int MIN_GEAR_VALUE = 40;//need to fit the hardware
    private final int MAX_GEAR_VALUE = 120;//need to fit the hardware
    private final int INIT_GEAR_VALUE = 20;//初始值,need to fit the hardware

连接参数配置如下:



总结:

路由器:root@admin

wifi热点: wificar@无密码

服务器IP 192.168.10.1

网页控制 http://192.168.10.1/car.html

如果修改了wifi热点,需要同步修改常量WIFI_SSID_PERFIX

如果换了舵机,需要同步修改如下变量:

    private final int MIN_GEAR_VALUE = 40;//need to fit the hardware
    private final int MAX_GEAR_VALUE = 120;//need to fit the hardware
    private final int INIT_GEAR_VALUE = 20;//初始值,need to fit the hardware

百度盘里有路由器的全部备份(我的资源/智能小车),有时间需要把单片机源码和编译环境备份出来


20180405更新:

增加北通手柄支持:

typeC口连接手柄接收器后,android就可以接受到KeyEvent,增加如下代码

    @Override  
    public boolean onKeyDown(int keyCode, KeyEvent event) {  
    mLogText.setText("get keyCode: " + keyCode + " Action:" + event.getAction());
        switch (keyCode) {  
        case KeyEvent.KEYCODE_DPAD_DOWN://按向下键  
        sendCommand(COMM_BACKWARD);
            break;  
        case KeyEvent.KEYCODE_DPAD_UP:// 按向上键  
        sendCommand(COMM_FORWARD);
        break;
        case KeyEvent.KEYCODE_DPAD_LEFT://按向左键  
        sendCommand(COMM_LEFT); 
        break;
        case KeyEvent.KEYCODE_DPAD_RIGHT://按向右键  
        sendCommand(COMM_RIGHT);
        break;
        case KeyEvent.KEYCODE_BUTTON_7:
        case KeyEvent.KEYCODE_BUTTON_8:
            sendCommand(bLenon? COMM_LEN_OFF : COMM_LEN_ON);
            bLenon = !bLenon;
        break;
        case KeyEvent.KEYCODE_BACK:
        return super.onKeyDown(keyCode, event);
        default:  
            break;  
        }  
          
        return true;//表示不再让系统处理按键

    }  


    @Override  
    public boolean onKeyUp(int keyCode, KeyEvent event) {  
    switch (keyCode) {  
        case KeyEvent.KEYCODE_DPAD_DOWN://按向下键  
        case KeyEvent.KEYCODE_DPAD_UP:// 按向上键  
        case KeyEvent.KEYCODE_DPAD_LEFT://按向左键  
        case KeyEvent.KEYCODE_DPAD_RIGHT://按向右键 
        case KeyEvent.KEYCODE_BUTTON_7://lleft
        case KeyEvent.KEYCODE_BUTTON_8:
        sendCommand(COMM_STOP);
        break;
        case KeyEvent.KEYCODE_BACK:
        return super.onKeyUp(keyCode, event);//back建得保留
        default:  
            break;  
        }  
          
        return true;
    }

遗憾得是手柄支持摇杆,但android还是当成普通得前后左右了,有空再研究下,如果能拿到坐标,控制就可以更流畅了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值