小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
楼主: fcoolt

wifi小车控制端(windows和android)

  [复制链接]
发表于 2014-8-21 09:54:22 | 显示全部楼层
找到了,不过和自己的下位机数据包格式不一样,数据包这东西调试起来真是不容易
回复 支持 反对

使用道具 举报

发表于 2014-8-21 11:39:46 | 显示全部楼层

支持,正好学习下
回复 支持 反对

使用道具 举报

发表于 2014-8-21 14:31:07 | 显示全部楼层
好不容易调试好了,不过小车运动明显有延迟啊,不知道是不是可以修改线程睡眠那里的时间,不过改了还是会出现按键无反应,有时候一按会连续运动,即使按键弹起。我把最后部分代码贴出来,烦请高手指点一下,谢谢!

private Runnable mRunnable        = new Runnable()
        {
                public void run()
                {
                        while(true)
                        {
                                if(Send_CMD_Status==0)
                                {
                                        try
                                        {
                                                Thread.sleep(50);
                                                //Thread.sleep(1);
                                        } catch (InterruptedException e)
                                        {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }
                                        continue;
                                }
                                if(Send_CMD_Status>0) Send_CMD_Status--;
                               
                                if(Cam_Reset_Status==2)
                                {
                                        Cam_Reset_Status = 1;
                                       
                                        CmdBuffer[1] = (byte)0x01;
                                        CmdBuffer[2] = (byte)0x02;
                                        Cam_UpDown = 0x7B;
                                        CmdBuffer[3] = (byte)Cam_UpDown;
                                }
                                else if(Cam_Reset_Status==1)
                                {
                                        Cam_Reset_Status = 0;
                                       
                                        CmdBuffer[1] = (byte)0x01;
                                        CmdBuffer[2] = (byte)0x01;
                                        Cam_LeftRight = 0x5A;
                                        CmdBuffer[3] = (byte)Cam_LeftRight;
                                       
                                }
                                else
                                {
                                        Cam_Reset_Status = 0;
                                }

                               
                                try
                                {
                                        //连接服务器
                                        mSocketClient = new Socket(CtrlIp,Integer.parseInt(CtrlPort));
                                        //取得输入、输出流
                                        //mBufferedReaderClient = new BufferedReader(new InputStreamReader(mSocketClient.getInputStream()));
                                        //mPrintWriterClient = new PrintWriter(mSocketClient.getOutputStream(), true);
                                        mSocketClient.getOutputStream().write(CmdBuffer);
                                        //mSocketClient.getOutputStream().write(CmdBuffer);
                                        mSocketClient.close();
                                       
                                //        Thread.sleep(100);
                                        Thread.sleep(10);
                                }       
                                catch (Exception ex)
                                {
                                        mSocketClient = null;
                                }
                               
                               
                               
                        }
                       
                }
        };
       
回复 支持 反对

使用道具 举报

发表于 2014-8-21 14:32:34 | 显示全部楼层
补充一下车子前进后退部分的指令发送代码吧,这样大家看的清楚些

BackWard.setOnTouchListener(new View.OnTouchListener()
                {
                        public boolean onTouch(View v, MotionEvent event)
                        {
                                int action = event.getAction();
                                switch(action)
                                {
                                        case MotionEvent.ACTION_DOWN:
                                            CmdBuffer[1] = (byte)0x00;
                                                CmdBuffer[2] = (byte)0x02;
                                                CmdBuffer[3] = (byte)0x00;
                                                Send_CMD_Status = -1;                                                            
                                            break;
                                        case MotionEvent.ACTION_UP:
                                                CmdBuffer[1] = (byte)0x00;
                                                CmdBuffer[2] = (byte)0x00;
                                                CmdBuffer[3] = (byte)0x00;
                                                Send_CMD_Status = 1;                                    
                                                break;
                                        default:
                                                break;
                                }
                                return false;
                        }
                });
               
                ForWard.setOnTouchListener(new View.OnTouchListener()
                {
                        public boolean onTouch(View v, MotionEvent event)
                        {
                                int action = event.getAction();
                                switch(action)
                                {
                                        case MotionEvent.ACTION_DOWN:
                                            //mPrintWriterClient.print("W");
                                            CmdBuffer[1] = (byte)0x00;
                                                CmdBuffer[2] = (byte)0x01;
                                                CmdBuffer[3] = (byte)0x00;
                                                Send_CMD_Status = -1;                                                            
                                            break;
                                        case MotionEvent.ACTION_UP:
                                                CmdBuffer[1] = (byte)0x00;
                                                CmdBuffer[2] = (byte)0x00;
                                                CmdBuffer[3] = (byte)0x00;
                                                Send_CMD_Status = 1;                                    
                                                break;
                                        default:
                                                break;
                                }
                                return false;
                        }
                });
回复 支持 反对

使用道具 举报

发表于 2014-9-5 20:50:25 | 显示全部楼层
继续学习,早日做成自己的wifi小车
回复 支持 反对

使用道具 举报

发表于 2014-9-9 15:38:41 | 显示全部楼层
支持,正需要呢。
回复 支持 反对

使用道具 举报

发表于 2014-9-16 17:27:48 | 显示全部楼层
顶一个 这个太棒了
回复 支持 反对

使用道具 举报

发表于 2014-9-17 16:08:43 | 显示全部楼层
thx for sharing
回复 支持 反对

使用道具 举报

发表于 2014-9-19 08:10:37 | 显示全部楼层
顶一个。。。。
回复 支持 反对

使用道具 举报

发表于 2014-10-21 16:37:09 | 显示全部楼层
学习一下,正在自己做呢,希望能成功~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-4-28 13:40 , Processed in 1.106838 second(s), 19 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表