查看: 3199|回复: 4

用pcDuino的otg做鼠标键盘讯飞

[复制链接]

该用户从未签到

发表于 2013-12-20 09:25:37 | 显示全部楼层 |阅读模式
分享到:
人说现代社会,计算机锁住了人类的双手,为什么呢?因为基本上一个人一天上班8小时手是不断的在键盘鼠标上面工作的。我们能不能让电脑更智能一些,例如电脑放弃人类的双手,更智能的工作,这里pcDuino跟你提过一个建议。让兼容arduino的各种传感器去采集信号,让pcDuino帮你实现鼠标键盘的各种工作。
一,修改内核
vim vim linux-sunxi/drivers/usb/gadget/hid.c hid.c (10.81 KB, 下载次数: 0, 售价: 5 金钱)

#在里面添加几个结构体和几行代码

结构体是需要添加的,后面两个函数里面要加上结构注册。这里说明一下,根据usb协议,每一个设备都要有描述符,两个结构体就是hid 鼠标键盘的描述符。下面配置内核。
Device Drivers --->
        USB support  --->
                   <M>   USB Gadget Support  --->
                                      <M>    SoftWinner SUN4I USB Peripheral Controller                                
                  < >     Dummy HCD(DEVELOPMENT)                          
                         USB GadgetDrivers                                 
                  < >     Gadget Zero(DEVELOPMENT)                        
                  < >     Audio Gadget(EXPERIMENTAL)                     
                  <M>     Ethernet Gadget (with CDC Ethernetsupport)      
                        RNDIS support                                 
                  [ ]       Ethernet Emulation Model(EEM) support         
                  < >     Network ControlModel (NCM) support              
                  < >     Gadget Filesystem(EXPERIMENTAL)                 
                  < >     Function Filesystem(EXPERIMENTAL)               
                  < >     File-backed StorageGadget (DEPRECATED)         
                  < >     Mass StorageGadget                              
                  <M>     Serial Gadget (withCDC ACM and CDC OBEX support)
                  <M>     MIDI Gadget(EXPERIMENTAL)                       
                  <M>     Printer Gadget                                   
                  < >     CDC Composite Device(Ethernet and ACM)         
                  < >     CDC Composite Device(ACM and mass storage)      
                  < >     MultifunctionComposite Gadget (EXPERIMENTAL)   
                  <M>     HID Gadget                                       
                  < >     EHCI Debug DeviceGadget                        
                  < >     USB Webcam Gadget

二,加载内核
关于怎么使用编译生成的内核,已经写过好多文章了。这里大致提一下。
sudo mount /dev/nanda  /mnt
tar xvf pcduino_a10_hwpack_20131129.tar.xz
cp kernel/*  /mnt  -f
cp rootfs/lib/modules/3.4.29+ /lib/modules/
vim /etc/modules #添加下面内容
sw_usb_udc
g_hid

三,测试驱动
这里测试用到的是linux-sunxi/Documentation/usb gadget_hid.c (7.04 KB, 下载次数: 0, 售价: 5 金钱) 里面的测试程序。


编译:gcc  gadget_hid.c
运行:
root@ubuntu:/home/ubuntu# ./a.out/dev/hidg0  k   # 键盘
         keyboardoptions:
                   --hold
                   --left-ctrl
                   --right-ctrl
                   --left-shift
                   --right-shift
                   --left-alt
                   --right-alt
                   --left-meta
                   --right-meta

         keyboardvalues:
                   [a-z]or
                   --return             --esc   
                   --bckspc             --tab   
                   --spacebar                 --caps-lock
                   --f1                --f2   
                   --f3                --f4   
                   --f5                --f6   
                   --f7                --f8   
                   --f9                --f10   
                   --f11               --f12   
                   --insert              --home  
                   --pageup           --del   
                   --end              --pagedown
                   --right              --left  
                   --down            --kp-enter
                   --up               --num-lock
根据提示输入: a  b  c d  e  f
你电脑上可以看到已经有显示了。
root@ubuntu:/home/ubuntu# ./a.out/dev/hidg1 m  #鼠标
         mouseoptions:  
                   --hold
                   --b1
                   --b2
                   --b3

         mousevalues:
                   Twosigned numbers
--quit to close
说明一下
--b1 10  10
执行这个的时候,相当于鼠标左键。
--b2 1
执行这个的时候,相等于鼠标右键
--b3 -10  100
这个相当于移动鼠标。
四,用joystick做鼠标
         这里代码太多了,今天写了一天,我就不贴,你可以到
https://github.com/Pillar1989/arduino
git上面下载,直接运行output/test/usb
joystick接的是pcDuinoA4A5,由于里面有个delay500)。所有移动的时候桌面有些卡顿。具体的演示,就看你自己的了。
四,补充USB协议
下面是自己整理的鼠标键盘的通信格式,如果你有兴趣可以研究一下。
鼠标发送给PC的数据每次4个字节
BYTE1 BYTE2 BYTE3 BYTE4
定义分别是:
BYTE1 --
      |--bit7:   1   表示   Y   坐标的变化量超出-256   ~  255的范围,0表示没有溢出
      |--bit6:   1   表示   X   坐标的变化量超出-256   ~  255的范围,0表示没有溢出
      |--bit5:  &n

回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2013-12-20 10:05:11 | 显示全部楼层
题目写错了应该是“用pcDuino的otg做鼠标键盘”,发布了就不能修改,请大家理解
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-12-20 13:06:07 | 显示全部楼层
期待基于这种技术的产品早日出现
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2013-12-23 10:29:27 | 显示全部楼层
{:soso_e179:}同期待
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-12 10:32
  • 签到天数: 295 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2014-1-1 17:05:02 | 显示全部楼层
    顶一个~~~~~~~~~·
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-21 16:40 , Processed in 0.151897 second(s), 23 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.