搜索
bottom↓
回复: 50
打印 上一主题 下一主题

EasyARM-iMX283串口虚拟鼠标实现,驱动+应用程序+PC上位机(C#)

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2014-12-8 22:14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT,买了EasyARM-iMX283的第一版不带触摸有点蛋疼,还非得上电前插上USB鼠标才能移动光标,于是萌生一个想法,如果直接用PC端的鼠标直接控制开发板的指针岂不是很方便

这样也正好可以学习学习,然后查了一些相关资料,把它记下来把





然后就开始折腾了,就这一个想法,前前后后看了两本书,利用下班时间,搞搞停停,弄了三四个月

1、首先是驱动程序,输入设备的驱动程序网上有很多资料,然后依葫芦画瓢,一个很简单的驱动程序就好了,主要实现了加载后自动创建设备节点,然后应用程序就可以通过该节点向驱动

程序写入收到的鼠标信息,驱动程序响应并向上层报告输入事件。需要注意的是输入设备驱动程序需要在QT启动窗口服务前加载,这样QT才能响应到该输入设备报告的事件,具体的介绍在

用户手册中有介绍。让他启动就加载就需要把加载指令写在/etc/rc.d/init.d/start_userapp文件中(用户手册中有介绍),如我的:





2、linux端应用程序,这个程序折腾了我最久,虽然写的时间不是很多,但是为了写他看了很多资料,其中串口的操作部分就是来着论坛。主要实现了两个线程,一个线程用于串口数据的接收,

并把数据处理成一帧一帧放入一个单向链表然后通知主线程来处理数据,接收线程会因为串口没有数据到来而阻塞,主线程会因为事件计数为零而阻塞。主要用到了线程的同步。



3、PC端应用程序,首先这个我是打算用MFC来做的,而且已经做好一点,但后来我的VS2005过期了,找破解方法没成功,还好我有破解版的VS2010,用它打开编译结果各种头文件位置不对找不到

报错,蛋疼。论坛看到C#不错,那就试试把,然后看了两个晚上的MSDN,用起来真是太方便了,自动提示语法错误,并会给出解决方案,太好用了,三四个晚上就把这样一个简单的程序写好了,

主要实现了,通过制定的握手指令自动找出串口并连接。响应窗口的鼠标事件并通过串口发送数据。



写的不太好,主要还是我的一些感受,感兴趣的可以下载源码看下有问题也可在这讨论

第一次在飞思卡尔发帖 ,前几天的换的FRDM-KE02Z也到了,感谢飞思卡尔,感谢阿莫站长!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

2
 楼主| 发表于 2014-12-8 22:17:47 | 只看该作者
其中的不足还请各位大神多拍砖指点

出100入101汤圆

3
发表于 2014-12-8 22:24:58 | 只看该作者
非单片机,i.mx实战帖,学习!

出0入0汤圆

4
发表于 2014-12-8 22:44:43 | 只看该作者
MSDN 这个怎么看,,一直都没有搜到,。能够给个链接。。

出0入13汤圆

5
发表于 2014-12-8 22:51:12 | 只看该作者
最近刚刚够买了287的板子,做工非常棒!比那个友善的2440超值多了,入门文档非常棒!

出0入0汤圆

6
发表于 2014-12-8 22:59:36 | 只看该作者
不错的想法,楼主多加油

出0入0汤圆

7
发表于 2014-12-8 23:09:51 来自手机 | 只看该作者
不知道这板子有没有移植好的ucos,想先来点容易点的

出0入0汤圆

8
发表于 2014-12-9 00:22:29 | 只看该作者
你上班很悠哉哦,这个星期过去请你喝茶,

出100入101汤圆

9
发表于 2014-12-9 00:44:00 | 只看该作者
也买过一块EasyARM-iMX283的板子,放着吃灰半年时间了。

出0入0汤圆

10
发表于 2014-12-9 08:13:49 | 只看该作者
tianheiGE 发表于 2014-12-8 22:17
其中的不足还请各位大神多拍砖指点

这是周立功那个所谓的"零利润"板子吗? 听说反响不太好啊,你这个都玩起来,真心给力;

出0入0汤圆

11
 楼主| 发表于 2014-12-9 08:31:07 来自手机 | 只看该作者
湛泸骏驰 发表于 2014-12-8 22:44
MSDN 这个怎么看,,一直都没有搜到,。能够给个链接。。

看VS2010的帮助,上微软中国可看在线帮助

出0入0汤圆

12
 楼主| 发表于 2014-12-9 08:32:34 | 只看该作者
jxcylxh 发表于 2014-12-9 00:22
你上班很悠哉哦,这个星期过去请你喝茶,

好啊

出0入0汤圆

13
 楼主| 发表于 2014-12-9 08:36:16 | 只看该作者
kinsno 发表于 2014-12-9 08:13
这是周立功那个所谓的"零利润"板子吗? 听说反响不太好啊,你这个都玩起来,真心给力; ...

是的,就是那块板子。

出100入101汤圆

14
发表于 2014-12-9 08:47:26 | 只看该作者
LZ工作以i.mx之类为主,还是单片机为主?i.mx是自学么?

出100入101汤圆

15
发表于 2014-12-9 08:48:42 | 只看该作者
湛泸骏驰 发表于 2014-12-8 22:44
MSDN 这个怎么看,,一直都没有搜到,。能够给个链接。。

msdn,百度一搜一堆。

出0入0汤圆

16
发表于 2014-12-9 09:11:38 | 只看该作者
Linux果断 收藏, 感谢LZ。

出0入0汤圆

17
发表于 2014-12-9 09:14:29 | 只看该作者
附件1 是  shell script 吗?

insmod 模块加载, 不用mknod 节点吗?

还有LZ有没有 Linux上的 串口调试助手 之类的 工具?再谢!

出0入0汤圆

18
发表于 2014-12-9 09:29:08 来自手机 | 只看该作者
用过周立功的那块开发板 虽然价格便宜 但不太好用

出0入0汤圆

19
 楼主| 发表于 2014-12-9 09:51:01 来自手机 | 只看该作者
fengyunyu 发表于 2014-12-9 08:47
LZ工作以i.mx之类为主,还是单片机为主?i.mx是自学么?

我工作搞单片机的,这些多是下班了玩玩

出0入4汤圆

20
发表于 2014-12-9 09:57:01 | 只看该作者
楼主很厉害,这款开发板支持摄像头吗?

出0入0汤圆

21
 楼主| 发表于 2014-12-9 09:57:05 来自手机 | 只看该作者
songjie 发表于 2014-12-9 09:14
附件1 是  shell script 吗?

insmod 模块加载, 不用mknod 节点吗?

附件一就是普通的文档,创建设备节点我在驱动里面实现的,加载的时候自动创建,linux 上的串口调试助手我也没,也打算学下Qt写个试下

出0入0汤圆

22
发表于 2014-12-9 09:59:13 | 只看该作者
楼主厉害,,,

出0入0汤圆

23
发表于 2014-12-9 10:02:07 | 只看该作者
楼主很用心,谢谢你的分享,期待你关于FRDM-KE02的经验分享哦!

出0入0汤圆

24
 楼主| 发表于 2014-12-9 10:31:09 来自手机 | 只看该作者
jingyite 发表于 2014-12-9 09:57
楼主很厉害,这款开发板支持摄像头吗?

有USB HOST接口,所以USB摄像头的话有驱动就行

出0入0汤圆

25
发表于 2014-12-9 11:11:21 | 只看该作者
tianheiGE 发表于 2014-12-9 09:57
附件一就是普通的文档,创建设备节点我在驱动里面实现的,加载的时候自动创建,linux 上的串口调试助手我 ...

艹~公司jiba玩意,不能大块的复制粘贴~
只能一行一行的复制。


看到代码里面的
/*自动创建设备节点文件*/
dev_class = class_create(THIS_MODULE, "vms_class"); /*1.注册设备类  /sys/class/vms_class的文件夹*/
if(IS_ERR(dev_class)){  
        printk("class_create failed!\r\n");
        ret = PTR_ERR("dev_class");  
        goto failure_class_create;  
    }

这个代码的作用相同于?

mknod /dev/驱动名字 c major 0

出0入0汤圆

26
 楼主| 发表于 2014-12-9 12:20:15 来自手机 | 只看该作者
songjie 发表于 2014-12-9 11:11
艹~公司jiba玩意,不能大块的复制粘贴~
只能一行一行的复制。


对的,用shell还需要知道他的设备号,自动创建就不需要事先指定设备号了

出0入0汤圆

27
发表于 2014-12-9 12:47:26 | 只看该作者
tianheiGE 发表于 2014-12-9 09:51
我工作搞单片机的,这些多是下班了玩玩

不得不说,你的学习劲头保持的不错,我下班了,全部扔以一边,眼不见为净啊;

出0入0汤圆

28
 楼主| 发表于 2014-12-9 14:04:28 | 只看该作者
kinsno 发表于 2014-12-9 12:47
不得不说,你的学习劲头保持的不错,我下班了,全部扔以一边,眼不见为净啊; ...

惭愧,我也是搞搞停停,这么久才现实这样一个简单的想法。

出0入0汤圆

29
发表于 2014-12-9 14:05:04 | 只看该作者
恭喜楼主了 过几天也要学习下飞卡的ARM9了

出0入0汤圆

30
发表于 2014-12-9 16:33:26 | 只看该作者
tianheiGE 发表于 2014-12-9 12:20
对的,用shell还需要知道他的设备号,自动创建就不需要事先指定设备号了

那你代码调试的时候用的什么工具?

出0入0汤圆

31
 楼主| 发表于 2014-12-9 19:32:19 | 只看该作者
songjie 发表于 2014-12-9 16:33
那你代码调试的时候用的什么工具?

就它的调试串口,打印到电脑上

出0入0汤圆

32
发表于 2014-12-9 20:45:12 | 只看该作者
tianheiGE 发表于 2014-12-9 19:32
就它的调试串口,打印到电脑上

printk吗 ,这个有点 慢啊~

出0入0汤圆

33
 楼主| 发表于 2014-12-9 20:52:01 | 只看该作者
songjie 发表于 2014-12-9 20:45
printk吗 ,这个有点 慢啊~

对的,还好把,就打印点数据看下就知道了

出0入0汤圆

34
发表于 2014-12-9 22:15:28 | 只看该作者
把USB驱动写好 ,插上鼠标就可以操作QT界面的 。

出0入0汤圆

35
发表于 2014-12-9 22:21:11 | 只看该作者
专业选手,出手就是不一样

出0入0汤圆

36
发表于 2014-12-9 22:33:18 | 只看该作者
跟楼主一样的板,在吃灰。
说没时间是骗自己,不过工作用不到,学的动力不是很强。
等忙完这段时间再说。先谢谢了

出100入101汤圆

37
发表于 2014-12-11 13:34:37 | 只看该作者
tianheiGE 发表于 2014-12-9 19:32
就它的调试串口,打印到电脑上


是所谓的“GDB Server远程调试”么?

出0入0汤圆

38
发表于 2014-12-11 15:12:40 | 只看该作者
收藏了 飞思卡尔发帖

出0入0汤圆

39
 楼主| 发表于 2014-12-11 19:14:39 | 只看该作者
fengyunyu 发表于 2014-12-11 13:34
是所谓的“GDB Server远程调试”么?

没,还没用过GDB,只是简单的打印下数据

出100入101汤圆

40
发表于 2014-12-11 19:53:32 | 只看该作者
tianheiGE 发表于 2014-12-11 19:14
没,还没用过GDB,只是简单的打印下数据

看网上文章说,用gdb方式可以设断点、查看变量等,不清楚是否能做到像用仿真器调试单片机程序一样?

出0入0汤圆

41
发表于 2014-12-11 20:03:19 | 只看该作者
学习了,感谢楼主分享。

出0入0汤圆

42
发表于 2014-12-11 22:04:37 | 只看该作者
ijlc1314 发表于 2014-12-8 23:09
不知道这板子有没有移植好的ucos,想先来点容易点的

这么强大的片子 ,不跑ucos ,常用来跑 linux ,wince 或者安卓 。

出0入0汤圆

43
 楼主| 发表于 2014-12-11 23:05:47 | 只看该作者
fengyunyu 发表于 2014-12-11 19:53
看网上文章说,用gdb方式可以设断点、查看变量等,不清楚是否能做到像用仿真器调试单片机程序一样? ...

我也看过一点,断点,单步,查看内存多是可以的,就是没有IDE用着方便吧

出0入0汤圆

44
发表于 2014-12-12 08:34:11 | 只看该作者
qs6361036 发表于 2014-12-11 22:04
这么强大的片子 ,不跑ucos ,常用来跑 linux ,wince 或者安卓 。

linux那些太复杂了

出0入0汤圆

45
发表于 2014-12-12 15:51:25 | 只看该作者
ijlc1314 发表于 2014-12-12 08:34
linux那些太复杂了

其实还好 , 没想象中那么复杂 。

出0入0汤圆

46
发表于 2014-12-12 15:57:12 | 只看该作者
qs6361036 发表于 2014-12-12 15:51
其实还好 , 没想象中那么复杂 。

现在都没勇气去学这个了

出0入0汤圆

47
发表于 2014-12-12 16:00:16 | 只看该作者
ijlc1314 发表于 2014-12-12 15:57
现在都没勇气去学这个了

有板子的话 ,自动动手一步一步搞 ,就明白啦 。刚开始感觉比较难,不知道从那入门 ,入门就好啦 。

出100入101汤圆

48
发表于 2014-12-12 16:07:42 | 只看该作者
ijlc1314 发表于 2014-12-12 15:57
现在都没勇气去学这个了

你要是定位为把linux内核代码都搞懂的话,可能头发白了都学不会。定位为会写驱动、会写应用程序,和你学单片机软件开发的时间不会差别很大。

出0入0汤圆

49
发表于 2014-12-12 16:39:14 | 只看该作者
qs6361036 发表于 2014-12-12 16:00
有板子的话 ,自动动手一步一步搞 ,就明白啦 。刚开始感觉比较难,不知道从那入门 ,入门就好啦 。 ...

谢谢,现在180,都有点想买块板回来了

出0入0汤圆

50
发表于 2014-12-12 16:40:50 | 只看该作者
fengyunyu 发表于 2014-12-12 16:07
你要是定位为把linux内核代码都搞懂的话,可能头发白了都学不会。定位为会写驱动、会写应用程序,和你学 ...

从没想过看懂源码,最多驱动或应用,现在工作虽然也是软件,不过离Linux太遥远了

出100入101汤圆

51
发表于 2020-10-22 10:56:46 | 只看该作者
大神几天时间搞定C#,厉害!电工果然都是全栈
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 03:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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