PS2有线手柄的SPI协议

PS2有线手柄的SPI协议1.SPI模式与PS2采用的是SPIMODE3模式。并且使用低位在前方式收发数据。2.请求PS2按键数据想要向PS2请示数据要发送一个请求命令。请求命令如下所示:cmd_require[9]={0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//数据按先低位后高位发送3.接收PS按键数据在发送请求命令的…

大家好,又见面了,我是你们的朋友全栈君。

1.SPI模式

  与PS2采用的是SPI MODE3模式。并且使用低位在前方式收发数据。

2.请求PS2按键数据

   想要向PS2请示数据要发送一个请求命令。请求命令如下所示:

  cmd_require[9]={0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00};  // 数据按先低位后高位发送

3.接收PS按键数据

   在发送请求命令的同时,PS2会同步输出按键数据。如下为无按键按下时,求请命令和按键数据的对应关系:

   cmd_require[9] = { 0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };   // 向PS2请求键数据

   data_key[9]      = { 0x00,0x41,0x5A,0xFF,0xFF,0x00,0x00,0x00,0x00 };   // PS2同步输出的按键数据,第一字节为无效数据

   注意:

       data_key[]数组中的‘0x41’是一个标志字节,表示此数据中只包函单纯按键数据。应用程序可以通过此位来判断接收

到的数据是否包函摇杆数据。下面会讲怎么获取摇杆数据。

      data_key[3]和data_key[4]这两个字节的每一位对应手柄上的一个按键。当相应按键被按下时,对应的位会被设置为0.

4.请求PS2摇杆数据

   请求PS2摇杆数据和请求PS2按键数据时送的命令是一样的。请求命令如下所示:

  cmd_require[9]={0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00};  // 请求按键和摇杆数据

  当用户按下手柄上的‘ANALOG’按键,并且手柄上的LED灯点也亮了。这样用户再操作摇杆时就可以得到摇杆对应的数据

  了。

5.接收PS2按键数据

   在发送请求命令的同时,PS2会同步输出按键数据和摇杆数据。如下为无按键按下时,求请命令和按键数据的对应关系:

   cmd_require[9] = { 0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };   // 向PS2请求键数据

   data_key[9]      = { 0x00,0x73,0x5A,0xFF,0xFF,0x80,0x80,0x80,0x80 };   // PS2同步输出的按键数据,第一字节为无效数据

   注意:

       当data_key[1] = 0x73时,表示PS2返回的数据是按键+摇杆数据。data_key[]最后4字节应对手柄上的左、右两个摇杆的

   数据。0x80表示摇杆处于中间位置,0x00-0xff代表了摇杆的具体位置。

 

参考资料:

http://www.billporter.info/2010/06/05/playstation-2-controller-arduino-library-v1-0/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138635.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pytorch之nn.Conv1d详解

    pytorch之nn.Conv1d详解之前学习pytorch用于文本分类的时候,用到了一维卷积,花了点时间了解其中的原理,看网上也没有详细解释的博客,所以就记录一下。Conv1dclasstorch.nn.Conv1d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)in_channe…

    2022年6月12日
    109
  • 和第三方接口对接总结

    和第三方接口对接总结接口对接分为两种形式:我方A公司提供接口给B公司,B公司进行一些操作时调用我们的接口进行实现。例:A开发会员等级同步接口,供B同步会员等级到B系统。B会员等级的变动需要调用A接口主动推送给A(即更新会员卡等级)。我们首先要做的就是按照对方的要求,在对方调用我们的接口,我方成功处理之后,按照对方所需要的返回数据以及格式反馈给他们信息。在写本接口中,因为我们会员卡等级的字段是不一样的,所…

    2022年5月2日
    52
  • 分析ip地址,子网掩码,网关,dns之间的区别和联系(ip地址 子网掩码 网关的关系)

    转自:[https://www.cnblogs.com/JuneWang/p/3917697.html]IP地址,子网掩码、默认网关,DNS服务器是什么意思?(一)问题解析问:IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇怪,我的计算机没设DNS,竟然能上QQ,却不能…

    2022年4月13日
    60
  • Windows10安装WDK报错setup cannot locate windows debugging wdk integration-x86_en-us.msi

    Windows10安装WDK报错setup cannot locate windows debugging wdk integration-x86_en-us.msisetupcannotlocatewindowsdebuggingwdkintegration-x86_en-us.msiIE使用了代理导致的

    2022年6月7日
    31
  • goland 2021 激活码【中文破解版】

    (goland 2021 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~ML…

    2022年3月21日
    44
  • LoadLibrary失败,GetLastError= 193

    LoadLibrary失败,GetLastError= 193LoadLibrary失败,GetLastError=193LoadLibrary失败,GetLastError报错193时,一般是加载的dll所依赖的某个dll它的依赖项不存在所报的错,可以用DependencyWalker验证该dll所依赖的加载项是否都存在。DependencyWalker安装vs时一般都自带有,如果没有也可以去官网下载http://www.dependencywal…

    2022年7月13日
    14

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号