这几天没什么事,看着自己的手机nokia5530,想到这手机虽然过时了,但是能不能做点什么有意思的事呢?我喜欢在电脑上玩极品飞车,如果能用手机的重力感应器操控电脑玩极品飞车那多好啊!正好学过一点Qt,可以开发symbian应用,为什么不试试?咱们工科男,说干就干,马上就开始!

首先,搭建symbian应用开发环境。这里我使用的是Qt_SDK_Win_v1_1_2_en(1.78G),在nokia developer网站下载,需要注册一个账号。用它开发的程序,手机需要Qt 4.07(3)库的支持。另外Qt SDK还有1.2.1版的,如果用它开发,则手机需要Qt 4.07(4)库的支持。更多的详细内容可以参考CSDN一位前辈的博客:http://blog.csdn.net/htttw/article/details/7630831。安装过程很简单,我个人遇到的一个问题是:在虚拟机winXP sp3中安装之后会发现项目设置里没有模拟器选项,并且一些头文件会找不到。具体原因没有找到,我在主机win7 64bit下重新安装一切正常。

开发环境搭建起来以后,就可以写个hello world测试一下了。新建一个 Qt Gui应用 项目就可以,项目设置勾选塞班设备和模拟器就行。

项目建成以后,和开发普通的windows桌面程序一样,ui文件注意调整一下大小。
点击左边的绿色箭头就可以调试运行了。

这里有两个选项,选择模拟器则直接在模拟器中运行程序。选择塞班设备,会提示1个错误,没有设备连接。(也许还会有很多警告,没有关系。)

不用担心,在项目文件夹中已经生成了.sis 文件,手动拷贝到手机上安装就可以了。
因为我只是想做一次塞班应用试一试,所以没有安装Nokia Ovi Suite.想要更方便的调试可以安装连接套件和调试工具。
具体方法还是看前辈的介绍吧:http://blog.csdn.net/htttw/article/details/7632122。

-------------------------------------------------------------------------------------------------------------------------------------------------

到这里,就要开始动手写程序了!

-------------------------------------------------------------------------------------------------------------------------------------------------

要想用手机的重力感应器操控电脑,我的想法是写一个手机端程序不断获取传感器数据,通过wifi传输到电脑,电脑端的程序接收消息并作出响应。
         那么就从手机端程序开始做起吧!
        获取传感器数据:我之前并没有开发symbian应用的经验,手上也没有参考资料,对于如何获取传感器的数据一点头绪也没有,那就上网搜搜看吧!
在这里不得不再次感谢网上那些前辈们,这里介绍的十分详细:http://blog.csdn.net/htttw/article/details/7637674。
         传输:我的手机是nokia5530,支持wifi。所以我使用wifi与电脑通信。因为我们要对电脑进行实时操控,并且使用wifi网络,所以这里我使用QUdpSocket来进行信息的传输,把重力感应器xyz三个方向上的数据以字符串的形式发送。这个相信有基础的都会,很多书中都有详细讲解,网上也有很多例子,不再具体介绍。
         电脑端的开发:
          在这里我花了很多时间。我以为接收到手机端程序发送到的消息,根据重力感应器三个方向上的数值发送键盘消息响应即可。可是问题就出在这键盘消息上了。
          最初我使用keybd_event();来模拟键盘消息。

函数原型: VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo);
参数:
bVk:定义一个虚拟键码。键码值必须在1~254之间。bScan:定义该键的硬件扫描码。dwFlags:定义函数操作的各个方面的一个标志位集。应用程序可使用如下一些预定义常数的组合设置标志位。KEYEVENTF_EXTENDEDKEY:若指定该值,则扫描码前一个值为OXEO(224)的前缀字节。 KEYEVENTF_KEYUP:若指定该值,该键将被释放;若未指定该值,该键将被按下。dwExtralnfo:定义与击键相关的附加的32位值。返回值:该函数无返回值。

这样做十分简单,很快程序就写好了。我模拟了键盘的方向键,通过手机的重力感应器控制,测试一下,正常工作!可以控制光标的移动,网页的上下滚动,焦点的选择。我天真的以为这样就没问题了,兴奋的打开极品飞车想要试试手感。游戏一打开,就被泼了盆冷水,刚才的兴奋全没了。在极品飞车中完全没有反应啊!好吧,没关系,有问题我们就去解决!

网上搜一下,看看问题出在哪里,原因是什么?原来很多游戏都用了DirectInpput技术,直接读硬件端口的。所以像我这样发键盘消息也自然没用了。原因找到了,那就去想办法解决它!我们需要做到驱动级的键盘模拟!像我这种小菜鸟怎么可能做得出来那样的东西嘛。幸运的是有一位国外大牛帮我们做好了!那就是很有名的WinIo.dll !

手机重力感应控制电脑(一)相关推荐

  1. android无线游戏手柄:重力感应控制极品飞车(C#作为服务端)

    源代码:点此下载 这篇博客是我上一篇博客的延续,之所以还要写这篇博客,是希望给大家一些灵感,写一些有趣的东西出来. 上篇博客:android遥控器:控制电脑上的暴风影音播放(C#作为服务端) 首先讲一 ...

  2. 我的雷电游戏(重力感应控制)

    算是第一个写的比较满意的游戏吧,肯定还有很多很多不足,希望高手能指点下,呵.现在在看图灵出版的一本android游戏的书籍,有点难,涉及底层有点多,都是JNI.NDK.linux shell脚本等,主 ...

  3. linux屏幕旋转后触控不准,手机重力感应失效解决方法 不能自动旋转屏幕怎么设置...

    如今手机已经成为人们生活中必不可少的一个工具了,在使用过程也常常会遇到各种各样的问题,比如当手机重力感应失效的时候应该怎么解决呢,手机不能自动旋转屏幕要怎么设置,针对这个问题下面就为大家带来最新解决方 ...

  4. 如何用手机语音助手控制电脑

    如何用手机语音助手控制电脑 软件介绍 神秘鸭是一款开源免费的可以让你通过手机语音助手来远程控制电脑的软件 .它支持通过小米的小爱同学 .苹果的Siri .华为的小艺 .vivo的小V 等多款语音助手来 ...

  5. php重力传感器,HTML5中如何调用手机重力感应的接口

    刚刚过去的一年里基于微信的H5营销可谓是十分火爆,通过转发朋友圈带来的病毒式传播效果相信大家都不太陌生吧,刚好最近农历新年将至,我就拿一个"摇签"的小例子来谈一谈HTML5中如何调 ...

  6. 基于野火M3开发板(STM32F103VET6)的迷宫小球(重力感应控制)游戏开发

    2013-03-03 这是研一上学期<实时嵌入式系统实验>课程的大作业,是利用野火板的资源,加上一个AHRS(Attitude and Heading Reference System,姿 ...

  7. android手机重力感应例子

    手机重力感应实现简单介绍 现在有很多游戏是通过摇晃手机实现的,比如赛车游戏 摇骰子游戏 迷宫游戏 等等 . 今天我用简单的代码为大家介绍一下android 下重力感应的实现方式 下面是一个模拟器的屏幕 ...

  8. csgo怎么控制电脑玩家_手机怎么去控制电脑,专治孩子玩游戏

    大家好,欢迎收看妙招姐说妙招!今天教大家如何用我们的手机控制家里的电脑,一起来看看吧 可以看到我的手机现在正在控制电脑,不管多远都可以控制,这样家里的小孩玩电脑,哪怕大人不在家都可以远程控制电脑,下面 ...

  9. Android 手机重力感应实现简单介绍

    手机重力感应实现简单介绍            现在有很多游戏是通过摇晃手机实现的,比如赛车游戏 摇骰子游戏 迷宫游戏 等等 . 今天我用简单的代码为大家介绍一下android 下重力感应的实现方式 ...

最新文章

  1. kettle 日志存到mysql_kettle作业(job)调用转换,设置变量,写日志到数据库中【转】...
  2. Database----Cursor
  3. 四格漫画《MUXing》——度姐传说
  4. iOS6.0以上版本,关于NSDateFormatter的问题
  5. ssd目标检测训练自己的数据_目标检测Tensorflow object detection API之训练自己的数据集...
  6. ES6新特性_ES6的对象扩展方法---JavaScript_ECMAScript_ES6-ES11新特性工作笔记040
  7. freenas共享指定网络密码不正确_CentOS 设置服务器文件共享
  8. Android手机怎么打开exe,安卓手机如何打开.exe文件 安卓手机exe文件怎么打开
  9. 高校固定资产折旧使用计算机,高校固定资产管理系统功能介绍
  10. 树莓派添加开机自启动
  11. 加什么地形就看什么等高线!等高线实时预览就是这么爽
  12. java 查询条件的封装_java封装前端查询条件通用版|chu
  13. Win7系统还原,创建还原点,永久保存自定义还原点,不被删除
  14. Android 手机开机密码破解锁定
  15. 关于WEB页面处谷歌验证的接入
  16. Python max函数
  17. 数学建模_国2000A——DNA序列问题中的数据处理
  18. 2014年最新810多套源码2.46GB免费一次性打包下载
  19. c++ 之 在VS中添加lib的4种方法
  20. 中国人民公安大学 网络对抗技术 15网安六区 杨益 201521460031

热门文章

  1. 多线程下载神器IDM,永久使用
  2. 使用IDM下载磁力链或迅雷文件
  3. linux shell数字怎么比较大小,Linux Shell 数字计算与比较
  4. 如何高效的上传大文件?
  5. 当电脑所有浏览器主页被篡改无法修改,一个不用工具解决的方法
  6. 2012-04-30《说说老朋友》
  7. 无线网络-LTE (02) 通信过程之 Attach procedure
  8. 【各种转换】数组转换成字符串,集合转换成字符串,字符串转集合
  9. OpenCV二值图像连通域分析
  10. 波音737座位哪里好_我的座位在哪里?