Thrustmaster(图马思特) HOTAS Warthog 疣猪杆 读取按钮数据

我所使用的摇杆是THRUSTMASTER(右下图所示),用于在目标追踪页面进行框选物体(实际应用场景不涉及鼠标键盘,只能使用操作杆进行操作)

1、首先,安装摇杆所需环境,win+R输入cmd后,输入activate(这部分可以参考之前anaconda安装)

进入base环境后,安装pygame的命令行:

       python -m pip install --user pygame

使用pygame进行读取摇杆的操作:数据为1证明已经读到,数据为0证明还未读到:

2、读取joysticks各个按钮所对应的标识:

使用操纵杆实际上是使用了不同的button标识,如下图所示:

代码如下:

import pygame

print(pygame.ver)

#判断是否读取到摇杆

pygame.joystick.init()

count = pygame.joystick.get_count()

count

#coding:utf-8

import pygame

#定义一些颜色

BLACK=(0, 0, 0)

WHITE=(255,255,255)

#这是一个简单的类,它将帮助我们打印到屏幕上

#它与操纵杆无关,只是输出信息。

class TextPrint:

    def __init__(self):

        self.reset()

        self.font = pygame.font.Font(None, 20)

 

    def defprint(self, screen, textString):

        textBitmap = self.font.render(textString, True, BLACK)

        screen.blit(textBitmap, [self.x, self.y])

        self.y += self.line_height

       

    def reset(self):

        self.x = 10

        self.y = 10

        self.line_height = 15

       

    def indent(self):

        self.x += 10

       

    def unindent(self):

        self.x -= 10

pygame.init()

 

# 设置屏幕的宽度和高度(宽度、高度)

size = [500, 700]

screen = pygame.display.set_mode(size)#屏幕、显示、样式

 

pygame.display.set_caption("对应的按钮标识")#标题

 

#循环,直到用户点击关闭按钮。

done = False

 

# 用来管理屏幕更新的速度

clock = pygame.time.Clock()

 

#初始化操纵杆

pygame.joystick.init()

   

#准备打印

textPrint = TextPrint()

 

# -------- 主循环程序-----------

while done==False:

    #事件处理步骤

    for event in pygame.event.get():  #用户做了什么

        if event.type == pygame.QUIT: #如果用户点击关闭

            done=True #标记我们已经完成,所以我们退出这个循环

       

        # 可能的操纵杆动作: 轴  球  按钮  帽子

        if event.type == pygame.JOYBUTTONDOWN:

            print("Joystick button pressed.")#操纵杆按钮按下

            # 在这里获取操作杆按钮按下时,坐标位置,当作是框框的左上角的点

        if event.type == pygame.JOYBUTTONUP:

            print("Joystick button released.")# 操纵杆按钮解除   

            # 在这里获取操作杆按钮解除是,坐标位置,当作是框框的右下角的点

            # 根据框框左上角的点和右下角的点就可以确定一个框框

 

    #绘图设置

    #首先,将屏幕显示为白色,不要输入其他绘图命令

    #否则,他们将会被这个命令抹去。

    screen.fill(WHITE)

    textPrint.reset()

 

    #获得操纵杆的数量

    joystick_count = pygame.joystick.get_count()#数量

 

    textPrint.defprint(screen, "Number of joysticks: {}".format(joystick_count) )#格式

    textPrint.indent()#缩进

   

    #遍历每个操纵杆

    for i in range(joystick_count): #范围

        joystick = pygame.joystick.Joystick(i) #新建一个Joystick对象

        joystick.init() #初始化joystick模块

   

        textPrint.defprint(screen, "Joystick {}".format(i) )

        textPrint.indent() #初始化joystick模块

   

        #从操作系统中找到操纵杆的名字

        name = joystick.get_name() #获得Joystick系统名称

        textPrint.defprint(screen, "Joystick name: {}".format(name) )

       

        # 通常轴成对运行,一个向上 / 向下,另一个向左 / 向右

        axes = joystick.get_numaxes()  #获得Joystick操纵轴的数量

        textPrint.defprint(screen, "Number of axes: {}".format(axes) )

        textPrint.indent()

       

        for i in range( axes ):

            axis = joystick.get_axis(i)  #获得操纵轴的当前坐标

            textPrint.defprint(screen, "Axis {} value: {:>6.3f}".format(i,axis) )

            #:>6.3f :总长度为6位,精确到小数点后三位的浮点类型

        textPrint.unindent()#不缩进

           

        buttons = joystick.get_numbuttons() #获得Joystick上按钮的数量

        textPrint.defprint(screen, "Number of buttons: {}".format(buttons) )

        textPrint.indent()

 

        for i in range( buttons ):

            button = joystick.get_button(i) #获得当前按钮的状态。

            textPrint.defprint(screen, "Button {:>2} value: {}".format(i,button) )

        textPrint.unindent()

           

        # 帽子开关,要么全有,要么没有,不像操纵杆

        # 值返回到数组中。

        hats = joystick.get_numhats() #获得Joystick上帽键的数量

        textPrint.defprint(screen, "Number of hats: {}".format(hats) )

        textPrint.indent()

 

        for i in range( hats ):

            hat = joystick.get_hat( i ) #获得Joystick上帽键的位置

            textPrint.defprint(screen, "Hat {} value: {}".format(i, str(hat)) )

        textPrint.unindent()

       

        textPrint.unindent()

 

    # 所有要绘制的代码都应该超过这个注释   

    # 继续用我们绘制的图像更新屏幕。

    pygame.display.flip()

 

    # 最多20个帧率

    clock.tick(20)

   

# 关上窗口,退出

# 如果你忘了这一行,程序会“挂起”

# 在退出,如果从IDLE运行

pygame.quit ()  #卸载joystick模块

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43622.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

速魔与图马思特优缺点对比

速魔和图马思特优缺点对比速魔图马思特传动系统直驱双皮带最大力反馈10Nm10Nm工作电压110-240V220-240V功率360W240W快拆50mm/70mm 盘面通用特制优点1.直驱,没有传动装置 2.力反馈更加直接 3.回盘速度更快,输出力度更大,操控好 4.秒换方向盘 …

微软获GPT-3独家授权,OpenAI创始人马斯克:与初衷相悖

萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软获OpenAI GPT-3独家授权,马斯克不高兴了。 就在微软官宣GPT-3后一天,马斯克在社交媒体上吐槽此事:“这看起来像是与‘开放’相悖。OpenAI本质上已经被微软‘控制’了。” 这件事情的起因&…

张俊林:GPT-4 模型会开创哪些新的研究方向?

作者|张俊林知乎 整理|蘑菇先生学习记 分享一篇张俊林老师关于GPT-4模型会开创哪些新的研究方向的回答。 引言 在这个历史性的时刻,回答个问题,留下自己作为历史见证人的足迹。先遵循这个问题的主旨,写两句GPT-4开创了…

OpenAI 发布 GPT-4,有哪些技术上的优化或突破?

作者:张俊林 在这个历史性的时刻,回答个问题,留下自己作为历史见证人的足迹。GPT4的技术报告里很明确地指出了三个新的方向: 第一,LLM最前沿研究的封闭化或小圈子化。 技术报告里说了,出于竞争以及安全等方…

海康威视人证对比设备SDK-C#

SDk下载地址:https://www.hikvision.com/cn/download_more_570.html 本文应用场景:第一次进行人脸身份证的验证方式,之后刷脸即可得到这个用户的信息 调用的SDK为布防门禁事件,以下为流程图和说明 报警回调事件 实际使用&#x…

java调用海康威视人脸识别抓拍

**1.**首先下载官网的sdk开发包,引入HCNetSDK.java,里面定义了很多调用的能力集。 **2.**通过报警回调函数中的黑名单报警这个接口去实现人脸抓拍的。 3.简单来说就是写个类去实现HCNetSDK.FMSGCallBack 然后根据条件函数 case HCNetSDK.COMM_SNAP_MATCH…

对接海康威视平台拿取视频流

创建工具类 public class ArtemisUtil {private static final Logger logger LoggerFactory.getLogger(ArtemisUtil.class);static {ArtemisConfig artemisConfig new ArtemisConfig();artemisConfig.setAppKey("123");artemisConfig.setAppSecret("123"…

读取海康威视摄像头实时显示视频流

提示:文章用于学习记录 文章目录 前言一、设置同一网段二、密码重置三、VLC 读取视频流四、opencv 读取视频流总结 前言 摄像头一般有网线和电源线两个接口,如下图所示, 用网线将摄像头与电脑连接在一起,电源接口连接适配器。 …

海康威视摄像头web端开发

主要方法 1.海康威视Web开发包 这个是海康威视自己开发的web开发包,里面含有一些demo,整体版,分屏版等等。你可以在他的demo基础上进行二次开发,即使是离线只要你的摄像头和电脑都是在同一路由下,都是可以调用的。麻…

海康威视的工业相机的使用经历

单位(和海康是属于一个集团的)某一部门 选择用 NVIDIA JETSON™ TX2 海康威视工业相机 的组合来完成 某检测识别任务,在相机选型前用邮件咨询 海康威视工业相机对 TX2 是否支持,得到海康相关人员的肯定答复。 于是采购了海康威…

海康威视SDK使用总结

海康威视SDK使用总结 公司的项目里使用到海康威视的摄像监控设备,然后项目要求在我们的B/S系统中集成摄像头的播放画面。因此通过和海康威视工作人员的沟通,和网上一些人的文章,实现了在自己的网页里进行预览和回放。 一、海康威视的SDK 海…

海康威视监控摄像头连接电脑教程

文章目录 一.海康威视监控摄像头连接电脑教程 一.海康威视监控摄像头连接电脑教程 官网下载SADP软件:https://www.wolai.com/wM6rWeBrRtrfmMH2BTVUXZ 双击下载的软件进行安装 打开软件,将设备连接到摄像头,便可在软件中搜索到摄像头 选择摄…

公网Web系统集成局域网内海康威视IPC网络摄像机

当摄像头与Web应用系统不在一个网络内时,需要将摄像头接入web系统,这时的接入就是一个比较费钱的事情了,除了需要购买流量费之外还需要购买链路服务费,如果足够有钱,并且对安全要求很高的,可以接入一些现成的第三方平台,价格比如这样: 如果没钱并且有一定的开发能…

远程实时读取海康威视4G网络摄像头视频

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 远程实时读取海康威视4G网络摄像头视频 有用的废话背景 重点步骤总结 有用的废话 购买海康威视4G网络摄像头时,目的是基于RTSP 协议来实时读取视频,并…

海康威视摄像头的多通道rtsp地址格式

海康摄像头的rtsp地址通常格式为: “rtsp://username:password192.168.1.64:554//Streaming/Channels/1” ### 1 代表主流,2代表子流 但在多通道的摄像机,例如红外摄像机,既有rgb图也有红外图,分别在两个通道里&#x…

CVE-2017-7921 海康威视(Hikvision) 摄像头漏洞复现

注:此教程仅供学习参考,不涉及任何以破坏为目的的违法犯罪,个人行为与作者无关。 一、漏洞描述 1.这是一个海康威视摄像头后台管理未授权漏洞,通过构造URL可绕过登录查看监控,检索所有用户和配置文件下载,…

海康威视网络摄像头SDK中Demo的二次开发(运行)

如有问题请邮件联系:2018yinjinjing.cn 我们买回来的网络摄像头可以在官网下载到SDK开发包: 下载下来SDK后我们解压,就可以看到里面包含一些开发文档以及一些Demo示例: 我们点开Demo示例,可以看到里面有各种语言的示例…

关于海康威视sdk与海康威视web的史上最精细的教程 (一)

小伙伴们都在下方留言要开发包 web: https://download.csdn.net/download/qq_35583089/10537585 sdk: https://download.csdn.net/download/qq_35583089/10537610 大家自己下载一下吧。 最近在公司需要在项目里集成海康威视的摄像头,刚开始的时…

OpenCV+海康威视摄像头的实时读取

#OpenCV海康威视摄像头的实时读取 本文由 lonelyrains出品,转载请注明出处。 文章链接: http://blog.csdn.net/lonelyrains/article/details/50350052 之前没想过会有这么多朋友遇到问题,所以建了 qq群1:536898072 qq群2&#…

海康威视摄像机通过SDK实现自动拍照(一)

尊敬的读者您好:笔者很高兴自己的文章能被阅读,但原创与编辑均不易,所以转载请必须注明本文出处并附上本文地址超链接以及博主博客地址:https://blog.csdn.net/vensmallzeng。若觉得本文对您有益处还请帮忙点个赞鼓励一下&#xf…