5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 2629|回复: 21
打印 上一主题 下一主题

4轴调参软件,android手机版半成品试发布。另请zht9961020帮忙

[复制链接]
跳转到指定楼层
楼主
发表于 2011-3-14 12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最低系统要求 android 1.5,应该是通吃市面上所有android手机吧:em15:不会有更低的了吧。 最初目前就是想在 diy机架 或 使用非推荐电池时,方便频繁的调节参数。不知道大家有没有这样的经历,频繁插拔usb线会很麻烦的,这样外场至少要2人,自己玩,还要个人帮你看着笔记本,总之很麻烦啦。
所以不需要大而全,目前只做了“飞行参数设置”中“控制”这一小部分,我认为这个是有必要频繁调节的。如果大家觉得还有哪块也很重要的话也请告诉我一声吧。
XAir_0.apk (29.4 KB, 下载次数: 34)

下 载后,在pc上用 豌豆荚安装,或 复制到手机sd卡上用android的安装管理器安装。由于是半成品所以没花时间加签名,安装前必须把手机“设置-应用程序-未知来源"勾选上。否则无法安装。另这个程序是安全的,它只有wifi相关的 一般级别权限,而没有危险的”发送短信“之类的权限。这也是判断一般android程序是否安全的通用方法:em15:
目前欠缺:
1. x 还未推出wifi模块,这个只能等啦,x最近好像在专注gps模块:em25:
2. 16进制解析遇到困难,由于本人从没处理过16进制的字符串,虽然有x的官方接口说明,但我还是不知如何处理,可能是平时只使用对象,就没遇到过要自己构建解析对象,唉。。。这个目前还很晕。不过论坛里有位朋友已搞定啦,就是zht9961020,希望您帮帮我如何处理这些天书。其他懂程序的朋友也请帮帮忙。
3. android提供很方便的多语言支持,放出txt包,目前只有中文的。大家要是对外语有兴趣的可以帮这翻译下,到时多语言版就自动诞生啦:em07:
values-zh-rCN.rar (2.11 KB, 下载次数: 32) 解压后就是一堆xml文件,把它们当文本就好了,用记事本打开。确定注意修改为OK就行了,英文版就诞生了,其他语言自行yy吧:em15:

[ 本帖最后由 wnq 于 2011-3-14 12:49 编辑 ]

欢迎继续阅读楼主其他信息

沙发
发表于 2011-3-14 12:52 | 只看该作者
强大,楼主再做个PPC版的吧!
3
发表于 2011-3-14 13:05 | 只看该作者
:em26:
4
 楼主| 发表于 2011-3-14 13:27 | 只看该作者
原帖由 256-best 于 2011-3-14 12:52 发表
强大,楼主再做个PPC版的吧!

绝对不是我强大,是蛋痛的google那android的开发搞得太人性化太傻瓜了:em17:
PPC版好像是基于c c++的吧。不仅要技术,授权也是一大问题,还是android宽松啊
5
发表于 2011-3-14 14:18 | 只看该作者
无wifi模块还是蛋痛,求lz顺便开发个wifi模块吧
6
发表于 2011-3-14 17:27 | 只看该作者
楼主,请问您在我们玩家群里吗,我们老大想和你谈谈,应该能给你更多的资源!
7
 楼主| 发表于 2011-3-14 17:54 | 只看该作者
:em15: 被x大发现了,感动啊:em05:
但我现在没qq,以前好像是加过,但工作的地方封qq,自己也没用的习惯。跟没有一样啦:em25:
8
发表于 2011-3-14 18:04 | 只看该作者
switch(rxd_buffer[1])
        {
         //数字传输格式应该是低字节在前,高字节在后 。字符传输格式是字节顺序排列
        case 0x01:
         runtime=(rxd_buffer[6]<<24)|(rxd_buffer[5]<<16)|(rxd_buffer[4]<<8)|rxd_buffer[3];
         Memo4->Lines->Add("飞控通电时间: "+IntToStr(runtime)+" 毫秒");
        break;

        case 0x02:
        {
         switch(rxd_buffer[5])
         {
         case 3:
                Memo4->Lines->Add("端口A连接:AHRS模块");
         break;
         case 4:
                Memo4->Lines->Add("端口A连接:GPS模块");
         break;
         case 5:
                Memo4->Lines->Add("端口A连接:LED模块");
         break;
         case 6:
                Memo4->Lines->Add("端口A连接:电源管理模块");
         break;
         default:
         break;
         }
        /*
        TDataRecord *dr=new TDataRecord();
        dr->analog[0] =(rxd_buffer[6]<<8)|rxd_buffer[5];
        dr->analog[1] =(rxd_buffer[8]<<8)|rxd_buffer[7];
        dr->analog[2] =(rxd_buffer[10]<<8)|rxd_buffer[9];
        dr->analog[3] =(rxd_buffer[12]<<8)|rxd_buffer[11];
        dr->analog[4] =(rxd_buffer[14]<<8)|rxd_buffer[13];
        dr->analog[5] =(rxd_buffer[16]<<8)|rxd_buffer[15];
        dr->analog[6] =(rxd_buffer[18]<<8)|rxd_buffer[17];
        dr->analog[7] =(rxd_buffer[20]<<8)|rxd_buffer[19];
        dr->analog[8] =(rxd_buffer[22]<<8)|rxd_buffer[21];
        dr->analog[9] =(rxd_buffer[24]<<8)|rxd_buffer[23];
        //------------------------------------------------------OpenGL,3D姿态绘制
        rx=dr->analog[0]/10;
        ry=dr->analog[1]/10;
        rz=dr->analog[4]/10;
        Button13->Click() ;
        //---------------------------------------------

        FetchData(dr);  //数据包存为List的一条数据
        Button8->Click() ;  //绘波形图

        Edit1->Text =dr->analog[0];
        Edit2->Text =dr->analog[1];
        Edit3->Text =dr->analog[2];
        Edit4->Text =dr->analog[3];
        Edit5->Text =dr->analog[4];
        Edit6->Text =dr->analog[5];
        Edit7->Text =dr->analog[6];
        Edit8->Text =dr->analog[7];
        Edit9->Text =dr->analog[8];
        Edit10->Text =dr->analog[9];
        */
        }

        break;

        case 0x03:
                //-----------------------------------
                 for(i=3;i<=18;i++)
                 {
                  info[0]+=(char)rxd_buffer; //需要用char强制转换,否则显示的是整形
                 }
                 Memo4->Lines->Add("飞控名称: "+info[0]);  //字符型
                 //--------------------------------------
                 for(i=19;i<=30;i++)
                 {
                  info[1]+=IntToHex(rxd_buffer,1); //需要用char强制转换,否则显示的是整形
                 }
                 Memo4->Lines->Add("产品ID: "+info[1]);     //这个是应该按16进制显示的
                 //--------------------------------------
                 //for(i=31;i<=32;i++)
                 {
                  temp[2]=(rxd_buffer[32]<<8)|rxd_buffer[31];
                 }
                 Memo4->Lines->Add("硬件版本: "+IntToStr(temp[2]));  //整形
                 //--------------------------------------
                 //for(i=33;i<=34;i++)
                 {
                  temp[3]=(rxd_buffer[34]<<8)|rxd_buffer[33]; //数字用字符串不好显示,还是用整形吧
                 }
                 Memo4->Lines->Add("固件版本: "+IntToStr(temp[3])); //整形
                 //--------------------------------------
                 //for(i=39;i<=42;i++)
                 {
                  temp[4]=(rxd_buffer[40]<<8)|rxd_buffer[39]; //数字用字符串不好显示,还是用整形吧
                 }
                 Memo4->Lines->Add("通电次数: "+IntToStr(temp[4])+ " 次"); //整形
                 //--------------------------------------
                 //for(i=43;i<=46;i++)
                 {
                  temp[5]=(rxd_buffer[46]<<24)|(rxd_buffer[45]<<16)|(rxd_buffer[44]<<8)|rxd_buffer[43];
                 }
                 Memo4->Lines->Add("飞行时间: "+IntToStr(temp[5])+ " 秒"); //整形
                 //--------------------------------------
        break;

        case 0x04:
        break;

        case 0x05:
           //Button20->Click() ;
        break;

        case 0x06:// request settings
        //Button17->Click() ; //获取参数
        break;

        case 0x07:
        break;
        //------------------------------------------------
        case 0x32:
                //-----------------------------------
                 //for(i=3;i<=6;i++)
                 {
                  angle[0]=*(float*)(rxd_buffer+3); //数组指针只能从数组首地址运算获得,不能用rxd_buffer[3]
                  angle[1]=*(float*)(rxd_buffer+7);
                  angle[2]=*(float*)(rxd_buffer+11);
                 }
                 Memo4->Lines->Add("横滚角: "+ FloatToStrF(angle[0],ffFixed,10,2)+ " 度");
                 Memo4->Lines->Add("俯仰角: "+ FloatToStrF(angle[1],ffFixed,10,2)+ " 度");
                 Memo4->Lines->Add("旋转角: "+ FloatToStrF(angle[2],ffFixed,10,2)+ " 度");
                 //--------------------------------------
        rx=angle[0];
        ry=angle[1];
        rz=angle[2];
        Button13->Click() ;
        break;
        //-------------------------------------------------
        default:
        break;
        }
9
 楼主| 发表于 2011-3-14 18:07 | 只看该作者

回复 8楼 zht9961020 的帖子

无敌感谢:em15:
我会努力把他转成java的先试试:em07:
10
发表于 2011-3-14 23:59 | 只看该作者
原帖由 wnq 于 2011-3-14 17:54 发表
:em15: 被x大发现了,感动啊:em05:
但我现在没qq,以前好像是加过,但工作的地方封qq,自己也没用的习惯。跟没有一样啦:em25:


他明天会加你MSN的。
11
发表于 2011-3-15 00:58 | 只看该作者
又一匹千里马被发现 恭喜X  又壮大了!!!
12
发表于 2011-3-20 22:11 | 只看该作者

回复 楼主 wnq 的帖子

不错,超级实用
13
发表于 2011-3-20 22:45 | 只看该作者
不错,用手机设置飞控,长久以内没有什么机械磨损~等等~!会不会以后出了WIFI模块,可以用手机做监视器~~呢~~那太爽了,手机与模型齐齐上~!
14
 楼主| 发表于 2011-3-21 09:35 | 只看该作者
:em25: :em25: :em25:
最新的接口协议还没放到wiki上吗?
我真的上不了qq啊:em25: :em25: :em25:
15
发表于 2011-3-21 12:22 | 只看该作者
又有的测试了。正好刚入手HD2,直刷android 2.2。
16
发表于 2011-3-21 20:29 | 只看该作者
呵呵,不知道x600能用吗?似乎600比较用的上的说
17
发表于 2011-3-21 20:44 | 只看该作者
我学android都是为了做个android版的四轴控制器~
18
发表于 2011-4-10 17:51 | 只看该作者
楼主威武啊      加油  。。。希望 将来开发个完整版的     能用案桌  机控制飞机就无敌了
19
发表于 2011-4-11 13:52 | 只看该作者
我也想做android上的飞控调参软件,方便开源么?

邮箱:hzbw@qq.com
20
发表于 2011-4-13 18:15 | 只看该作者
顶起来,软件编程我就不擅长了  楼主 加油啊!软件界面 我可能能帮到忙。。。。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

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