如何使用树莓派RP2040实现“鼠标”功能?2022年寒假在家练RP2040游戏机项目分享(一)

电子森林 2022-03-15 21:56

大家好久不见,2022年开始了,大家有没有设定今年要完成的小目标呢?


2022年寒假在家一起练于2022年2月27日截止了,看到同学们提交的项目后,老师们倍感欣慰。同学们的项目都非常优秀,你们抓住了寒假的时光,为2021年的自己画了一个句号,给2022年的自己一个特别的开始。


同学们提交的项目还在陆续审核中,预计本周结束,下周开始邮件告知审核结果。大家耐心等待哦。


今天我们来欣赏一位来自华北电力大学的【xiaoyu555】同学所做的“鼠标”。





 1

项目介绍

利用rp2040的四向摇杆和按键设计一款“鼠标”,该鼠标可以对240*240的LCD屏进行菜单选择和参数控制,同时,可以利用板子上的摇杆和按钮实现控制PC屏上的光标移动和点击操作,行使电脑鼠标的功能。


 2

实现的功能

制了一个“鼠标”图案,并且不断移动这个鼠标,当B键按下时,如果鼠标图案在相应的位置,那么会加载出新的界面,如果按下A键,就可以返回最初始的页面。

当按下START按键时,会进入控制PC屏幕光标的操作,通过移动rp2040上的四向摇杆,PC屏幕光标会进行相应的移动,若按下B键,即相当于鼠标左键的功能,按下A键时即相当于鼠标右键的功能,从而实现了用rp2040来充当电脑鼠标的目的


3

设计思路

第一步绘制鼠标图案,通过st7789c的polygon函数绘画多边形从而绘制出鼠标的形状。

第二步实现鼠标的移动,通过刷新鼠标的位置,在新的位置绘制另一个鼠标图案,并且在这之前先消除掉原来位置鼠标的图案,使其融为背景色,从而最终实现鼠标移动的效果。

第三步实现利用“鼠标”来进行菜单选择和参数控制。通过判断鼠标图案的所属位置,并且当按钮按下时实现对菜单的选择,这时要实现只需要定义一个变量,当相应位置按下按键B时来改变变量,并且当变量变化时执行LCD界面的变换。同理,为了当A按键时按下回到起始页面,也只要当A按键按下时使变量变为初始值即可。

第四步实现通过USB端口来控制PC屏幕上的光标移动和点击操作。这里需要利用到python的usb_hid库,通过该库进行人机的交互,利用里面的函数对屏幕光标进行XY轴位置的变化,和光标左右键点击的判断。当四向摇杆被操控时,利用函数来对光标操作,同理,AB键按下时也执行对应的操作,B键为鼠标左键操作,A键为鼠标右键操作。

上述对LCD屏的鼠标图案和PC屏幕光标的操作完成后,实现按钮对两个模式进行转换,当START按下时用变量进行对操作模式的转换。


 4

实现的过程

1. 程序流程图:

2. 定义引脚:
orange=0xfd20xAxis = ADC(Pin(29))     #x轴yAxis = ADC(Pin(28))     #Y轴Bbutton = Pin(5,Pin.IN, Pin.PULL_UP) #B按键Abutton = Pin(6,Pin.IN, Pin.PULL_UP) #A按键buttonStart = Pin(7,Pin.IN, Pin.PULL_UP)#START按键

3. 利用st7789c驱动LCD屏幕,并且实例化一个对象方便后期调用:
背景色是白色
#调用ST7789C来驱动LCD屏幕spi0=machine.SPI(0,baudrate=4000000, phase=1, polarity=1,sck=machine.Pin(game_kit.lcd_sck, machine.Pin.OUT),                  mosi=machine.Pin(game_kit.lcd_sda, machine.Pin.OUT))print(spi0)display = st7789c.ST7789(spi0, 240, 240,                        reset=machine.Pin(game_kit.lcd_rst, machine.Pin.OUT),                        dc=machine.Pin(game_kit.lcd_dc, machine.Pin.OUT),                        rotation=0)#实例化了一个ST7789display.init()  #st7789初始化display.fill(st7789c.WHITE)

4. 定义一个rpMouse类来实现对鼠标图案的初始化,鼠标位置的移动,鼠标位置的绘画,还有更新鼠标位置,使用时定义对象使用函数即可
4.1 总代码:
#设置边界width =240height=240#rp2040鼠标定义class rpMouse():        '''        Poly class to keep track of a polygon based sprite        '''        #初始化        def __init__(                self,                # list (x,y) tuples of convex polygon, must be closed                polygon,                x=None,             # 鼠标X坐标                y=None,             # 鼠标Y坐标                v_x=None,           # X轴的移动速度                v_y=None,           # Y轴的移动速度                angle=None,         # 鼠标图案的移动速度                max_velocity=25,    # 鼠标图案移动的最大速度                min_velocity=10     # 鼠标图案移动的最小速度                ):         #这边是传入的参数,对其进行一个初始化赋值
self.polygon = polygon #赋值元组
# 如果没有初始化起始位置便随便给个位置 self.x = random.randint(0, width) if x is None else x self.y = random.randint(0, width) if y is None else y
# 如果角度有给就设置 self.angle = float(0) if angle is None else angle
# 除非有给速度参数否则随便给一个 self.velocity_x = random.uniform( 0.50, 0.99)*6-3 + 0.75 if v_x is None else v_x self.velocity_y = random.uniform( 0.50, 0.99)*6-3 + 0.75 if v_y is None else v_y
self.max_velocity = max_velocity #设置最大值 self.min_velocity = min_velocity #设置最小值 #移动 def moveX(self,moveflag): self.draw(st7789c.WHITE) #使旧的鼠标图案融于背景色,达到消失的效果 if(moveflag==1) :#向左 self.x -= int(self.velocity_x*0.2) #每次以速度移动 if(self.x<0): #如果到最底端,就更新位置到最上端 self.x=240 elif(moveflag==2) : #向右 self.x += int(self.velocity_x*0.2) #每次以速度移动 self.x %= width #不会超过边界 self.draw(orange) #使之移动 def moveY(self,moveflag): self.draw(st7789c.WHITE) if moveflag==1:#向上 self.y -= int(self.velocity_y*0.2) #每次以速度移动,乘上倍数,看起来流畅 if(self.y<=0): self.y=240 if moveflag==2: self.y += int(self.velocity_y*0.2) #每次以速度移动,乘上倍数,看起来流畅 self.y %= height self.draw(orange) #使之移动 #画鼠标 def draw(self, color): display.polygon(self.polygon, self.x, self.y, color, self.angle, 0, 0) #更新鼠标的移动速度 def update(self,vflag): #1为加速,2为减速 if vflag==2 : self.velocity_x -= 1 self.velocity_y -= 1 elif vflag==1: self.velocity_x += 1 self.velocity_y += 1
if self.velocity_x > self.max_velocity: #使速度不超过最大值 self.velocity_x = self.max_velocity elif self.velocity_x < self.min_velocity: self.velocity_x = self.min_velocity #定义一个rp2040鼠标mouse_poly=[(-7,-7),(7,0),(-7,7),(-3,0),(-7,-7)] #鼠标图像元组mouse =rpMouse(mouse_poly,x=120,y=120,v_x=15,v_y=15,angle=180.0) #类对象mouse.draw(orange)

4.2 初始化: 
#初始化        def __init__(                self,                # list (x,y) tuples of convex polygon, must be closed                polygon,                x=None,             # 鼠标X坐标                y=None,             # 鼠标Y坐标                v_x=None,           # X轴的移动速度                v_y=None,           # Y轴的移动速度                angle=None,         # 鼠标图案的移动速度                max_velocity=25,    # 鼠标图案移动的最大速度                min_velocity=10     # 鼠标图案移动的最小速度                ):         #这边是传入的参数,对其进行一个初始化赋值
self.polygon = polygon #赋值元组
# 如果没有初始化起始位置便随便给个位置 self.x = random.randint(0, width) if x is None else x self.y = random.randint(0, width) if y is None else y
# 如果角度有给就设置 self.angle = float(0) if angle is None else angle
# 除非有给速度参数否则随便给一个 self.velocity_x = random.uniform( 0.50, 0.99)*6-3 + 0.75 if v_x is None else v_x self.velocity_y = random.uniform( 0.50, 0.99)*6-3 + 0.75 if v_y is None else v_y
self.max_velocity = max_velocity #设置最大值 self.min_velocity = min_velocity #设置最小值
解释:
  • polygon是绘制鼠标位置的元组,里面的元素是鼠标图案各个顶点与中心坐标(x,y)的相对位置,而且元素的顺序要按照绘画各个点的顺序来,最后一个元素要回到第一个点。
  • 定义完后,当想绘制鼠标时,要先进行初始化,将鼠标的基础信息传入,后面才得以绘制。

4.3 绘制鼠标的函数:
#画鼠标        def draw(self, color):                display.polygon(self.polygon, self.x, self.y, color, self.angle, 0, 0)
解释:
  • 每次绘制时只需要传入想要的鼠标的颜色,然后进行绘制就行。


4.4 移动鼠标的函数:
#移动        def moveX(self,moveflag):                self.draw(st7789c.WHITE)  #使旧的鼠标图案融于背景色,达到消失的效果                if(moveflag==1) :#向左                    self.x -= int(self.velocity_x*0.2)  #每次以速度移动                    if(self.x<0):     #如果到最底端,就更新位置到最上端                        self.x=240                elif(moveflag==2) :  #向右                      self.x += int(self.velocity_x*0.2)  #每次以速度移动                    self.x %= width                 #不会超过边界                self.draw(orange)  #使之移动        def moveY(self,moveflag):                self.draw(st7789c.WHITE)                if moveflag==1:#向上                    self.y -= int(self.velocity_y*0.2)  #每次以速度移动,乘上倍数,看起来流畅                    if(self.y<=0):                        self.y=240                if moveflag==2:                    self.y += int(self.velocity_y*0.2)  #每次以速度移动,乘上倍数,看起来流畅                    self.y %= height                self.draw(orange)  #使之移动
解释:以在x轴移动为例,y轴是同样的道理
  • 首先先使原来的鼠标融于背景色中达到消失的效果,然后判断是要正半轴还是负半轴移动,最后更新rpMouse对象的X,Y的位置,然后在新位置绘画另一个鼠标。

5.定时器扫描按键:
#定时器检索按键,并且给显示对应画面def timercb(n):    global rporcomflag  #判断是操控rp2040的鼠标还是PC屏幕的光标,0为RP2040的,1是PC屏幕光标    global faceflag     #判断是进入初始页面还是其他页面的变量    if(Bbutton.value()==0 and rporcomflag==1): #相当于电脑鼠标左键按下        hid_mouse.press(hid_mouse.BUTTON_LEFT)    if(Bbutton.value()==1 and rporcomflag==1): #相当于电脑鼠标左键松开        hid_mouse.release(hid_mouse.BUTTON_LEFT)    if(Abutton.value()==0 and rporcomflag==1): #相当于电脑右键按下一次        hid_mouse.click(hid_mouse.BUTTON_RIGHT)    if(Bbutton.value()==0 and rporcomflag==0): #如果是rp2040按下B键,为确定键        if(mouse.y>70 and mouse.y<98 and mouse.x>=84 and mouse.x<=163): #移动到冰墩墩的位置            faceflag=1  #冰墩墩        elif(mouse.y>98 and mouse.y<128 and mouse.x>=84 and mouse.x<=163):            faceflag=2  #TEXT        elif(mouse.y>220 and mouse.y<240 and mouse.x>=110 and mouse.x<=240):            mouse.update(1)   #更新鼠标的速度            utime.sleep(0.05)        elif(mouse.y>220 and mouse.y<240 and mouse.x>=0 and mouse.x<=100):            mouse.update(2)   #更新鼠标的速度            utime.sleep(0.05)                tim=Timer(period=100, mode=Timer.PERIODIC, callback=lambda t:timercb(1))
解释:
  • 利用定时器不断地扫描按键,减少主循环中对摇杆判断的影响。

  • 利用rporcomflag来判断是操控哪个,从而判断B,A键按下时的效果。

  • 当操控RP2040鼠标图案时,判断鼠标位置,从而当B键按下时,进入不同的页面。


6.主循环,扫描摇杆进行对应的操作:
#定义hid鼠标hid_mouse=Mouse()rporcomflag=0enterflag=0  #每次进入图像后置1,不让再次刷新图像,返回后再置0,使得下一次得以进入图像。             #这样子可以避免影响返回键A的判断while True:    if (rporcomflag==1):                    #1为电脑鼠标控制        xValue = xAxis.read_u16()    #读取摇杆位移        yValue = yAxis.read_u16()        if buttonStart.value()==0:   #当按下START时,使rporcomflag置0            rporcomflag-=1            utime.sleep(0.2)        if  xValue <=600:            #当摇杆向左            hid_mouse.move(-1,0)     #进行对应的位移        elif xValue >= 60000:        #当摇杆向右            hid_mouse.move(1,0)        if yValue <= 600:            #当摇杆向上            hid_mouse.move(0,-1)        elif yValue >= 60000:        #当摇杆向下            hid_mouse.move(0,1)    elif rporcomflag==0 and faceflag==0:      #0为rp2040鼠标控制        xValue = xAxis.read_u16()        yValue = yAxis.read_u16()        if buttonStart.value()==0:            rporcomflag+=1            utime.sleep(0.2)        if xValue <= 600:#左            mouse.moveX(1)            utime.sleep(0.00835)        elif xValue >= 60000:            mouse.moveX(2)            utime.sleep(0.0083)        if yValue <= 600:            mouse.moveY(1)            utime.sleep(0.0083)        elif yValue >= 60000:            mouse.moveY(2)            utime.sleep(0.0083)        interface1()                  #每次移动后要再进行一次页面的刷新,防止鼠标图像清空时使背景色消失        mouse.draw(orange)    if(Abutton.value()==0 and rporcomflag==0):#返回操作        display.fill(st7789c.WHITE)        interface1()        faceflag=0        enterflag=0    elif(faceflag==1 and enterflag==0):  # 冰墩墩界面        display.jpg("bingdundun.jpg", 0, 0, st7789c.SLOW)        enterflag=1   #每次进入图像后置1,不让再次刷新图像,返回后再置0,使得下一次得以进入图像。                    #这样子可以避免影响返回键A的判断    elif(faceflag==2 and enterflag==0):  #text界面        display.jpg("text.jpg", 0, 0, st7789c.SLOW)        enterflag=1
解释:
  • 利用循环不断地扫描摇杆,并且判断是操作rp2040鼠标图案还是屏幕光标,当摇杆移动时,对rp2040和屏幕光标进行移动,屏幕光标的移动只需要利用硬禾学堂官方库中的hid的move进行对鼠标的移动即可。rp2040在鼠标移动后还需要再进行背景的刷新,避免背景被鼠标刷新时局部刷新掉。


 5

遇到的难题和解决方法

1. 问题一
1.1 问题:LCD屏鼠标闪烁频率过高:当鼠标进行移动时,鼠标会不停的进行闪烁,此时鼠标图案的效果太差。
1.2 原因:当进行一个新位置鼠标的绘画,此时再移动时,这个新位置鼠标会被擦除,这时由于擦除旧位置鼠标和绘制新位置鼠标的间隔太短,新的鼠标显示完成后就马上被擦除,这时就会出现闪烁的现象。
1.3 解决方法:在每次位移函数后,进行一个延时,从而增加鼠标的存在时长,从而减轻闪烁的问题,经试验,延时的时长在08秒到0.085秒之间效果最好。

2. 问题二
2.1 问题:当进入另一个界面时会出现返回键(A键)的检索不灵敏,会出现得按好多次的问题。
2.2 原因:当页面进入新的界面后,由于这时faceflag没有进行更改,所以会不断的进入这个if的分支语句里面,从而不断刷新页面,这时会对树莓派加深负担,从而影响对A按键的判断。
if(Abutton.value()==0 and rporcomflag==0):        display.fill(st7789c.WHITE)        interface1()        faceflag=0    elif(faceflag==1):  # 冰墩墩界面        display.jpg("bingdundun.jpg", 0, 0, st7789c.SLOW)
解决方法:定义一个变量,当进入一次界面后,便将其置1,并且只有当其为0时才能再次进入这个界面,这时就能控制其进入一次,并且,当按下返回键时,就会将该变量重新置为0,变成可进入的状态,从而解决问题。
if(Abutton.value()==0 and rporcomflag==0):        display.fill(st7789c.WHITE)        interface1()        faceflag=0        enterflag=0    elif(faceflag==1 and enterflag==0):  # 冰墩墩界面        display.jpg("bingdundun.jpg", 0, 0, st7789c.SLOW)        enterflag=1   #每次进入图像后置1,不让再次刷新图像,返回后再置0,使得下一次得以进入图像。                      #这样子可以避免影响返回键A的判断


6

成品展示

1. 初始界面:
2. 当位移到冰墩墩的文字并按下B键进入新页面
3. 当鼠标位移到TEXT并且按下B键后会进入TEXT说明的界面
4. 当鼠标位移到最下方数字的右边并且按下B键时,鼠标速度会对应增加。
5. 当鼠标位移到最下方数字的左边并且按下B键时,鼠标速度会对应减小。
6. 当按下START按键后,进入对PC屏幕光标的操控,摇杆控制光标移动,B键充当鼠标左键功能,A键充当鼠标右键功能,并且当长按B键并且移动摇杆时,能够进行多选。

 7

资料获取

作者已将项目分享在电子森林和百度网盘,大家可自行获取,如有参考请备注参考来源:
  • 电子森林链接:https://www.eetree.cn/project/detail/912

  • 百度网盘链接:https://pan.baidu.com/s/1w96ahikxAOgv7YJZrb5abQ?pwd=0000 提取码:0000


最后祝泥萌女神节快乐!

END


硬禾学堂

硬禾团队一直致力于给电子工程师和相关专业的同学,带来规范的核心技能课程,帮助大家在学习和工作的各个阶段,都能有效地提升自己的职业能力。

硬禾学堂

我们一起在电子领域探索前进

关注硬禾公众号,随时直达课堂


点击阅读原文查看更多



电子森林 讲述电子工程师需要掌握的重要技能: PCB设计、FPGA应用、模拟信号链路、电源管理等等;不断刷新的行业新技术 - 树莓派、ESP32、Arduino等开源系统;随时代演进的热点应用 - 物联网、无人驾驶、人工智能....
评论 (0)
  • 近期,金融界消息称,江西万年芯微电子有限公司申请一项名为“基于预真空腔体注塑的芯片塑封方法及芯片”的专利。此项创新工艺的申请,标志着万年芯在高端芯片封装领域取得重要突破,为半导体产业链提升注入了新动能。专利摘要显示,本发明公开了一种基于预真空腔体注塑的芯片塑封方法,方法包括将待塑封的大尺寸芯片平铺于下模盒腔体内的基板并将大尺寸芯片的背向表面直接放置于基板上以进行基板吸附;将上模盒盖合于下模盒形成塑封腔,根据基板将塑封腔分为上型腔以及下型腔;将下型腔内壁与大尺寸芯片间的空隙进行树脂填充;通过设置于
    万年芯 2025-04-22 13:28 74浏览
  •   北京华盛恒辉机场保障能力评估系统软件深度解析   在航空运输业快速发展的背景下,机场保障任务愈发复杂,传统人工评估方式已无法满足高效精准的管理需求。机场保障能力评估系统软件作为提升机场运行效率、保障飞行安全的关键工具,其重要性日益凸显。   应用案例   目前,已有多个机场保障能力评估系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润机场保障能力评估系统。这些成功案例为机场保障能力评估系统的推广和应用提供了有力支持。   一、系统功能模块   数据采集与整合模块  
    华盛恒辉l58ll334744 2025-04-22 10:28 94浏览
  •   北京华盛恒辉基于GIS的电磁态势可视化系统软件是将地理空间信息与电磁态势数据相结合,通过图形化手段直观展示电磁环境态势的系统。这类软件在军事、通信、无线电管理等领域具有广泛应用,能够辅助用户进行电磁频谱分析、干扰监测、态势研判和决策支持。以下是关于此类系统的详细介绍:   应用案例   目前,已有多个电磁态势可视化系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁态势可视化系统。这些成功案例为电磁态势可视化系统的推广和应用提供了有力支持。   一、系统功能   电磁
    华盛恒辉l58ll334744 2025-04-22 11:44 78浏览
  •   电磁兼容故障诊断系统平台深度解析   北京华盛恒辉电磁兼容(EMC)故障诊断系统平台是解决电子设备在复杂电磁环境下性能异常的核心工具。随着电子设备集成度提升与电磁环境复杂化,EMC 问题直接影响设备可靠性与安全性。以下从平台架构、核心功能、技术实现、应用场景及发展趋势展开全面剖析。   应用案例   目前,已有多个电磁兼容故障诊断系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁兼容故障诊断系统。这些成功案例为电磁兼容故障诊断系统的推广和应用提供了有力支持。  
    华盛恒辉l58ll334744 2025-04-22 14:29 87浏览
  •   电磁干扰抑制系统平台深度解析   一、系统概述   北京华盛恒辉电磁干扰抑制系统在电子技术快速发展、电磁环境愈发复杂的背景下,电磁干扰(EMI)严重影响电子设备性能、稳定性与安全性。电磁干扰抑制系统平台作为综合性解决方案,通过整合多元技术手段,实现对电磁干扰的高效抑制,确保电子设备稳定运行。   应用案例   目前,已有多个电磁干扰抑制系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁干扰抑制系统。这些成功案例为电磁干扰抑制系统的推广和应用提供了有力支持。   二
    华盛恒辉l58ll334744 2025-04-22 15:27 89浏览
  •   电磁兼容(EMC)故障诊断系统软件解析   北京华盛恒辉电磁兼容故障诊断系统软件是攻克电子设备电磁干扰难题的专业利器。在电子设备复杂度攀升、电磁兼容问题频发的背景下,该软件于研发、测试、生产全流程中占据关键地位。以下为其详细介绍:   应用案例   目前,已有多个电磁兼容故障诊断系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁兼容故障诊断系统。这些成功案例为电磁兼容故障诊断系统的推广和应用提供了有力支持。   一、软件核心功能   干扰与敏感分析:深度剖析电磁干
    华盛恒辉l58ll334744 2025-04-22 14:53 86浏览
  • 据国际精益六西格玛研究所(ILSSI)成员大卫·哈钦斯(David Hutchins)的回忆,在“六西格玛”名称出现前,摩托罗拉组建了约100个质量改进团队,接受朱兰博士制作的16盘录像带培训,名为《朱兰论质量改进》(Juran on Quality Improvement),为了推广这种严谨的分析方法(朱兰博士视频中的核心内容),摩托罗拉前首席执行官鲍勃·加尔文创造了“六西格玛”这一标签,用以表彰这种“最顶尖"的方法。大卫·哈钦斯(David Hutchins)是朱兰博士的好友,也为他的工作做
    优思学院 2025-04-22 12:03 73浏览
  •   有效数据智能分拣系统详解   北京华盛恒辉有效数据智能分拣系统融合人工智能、大数据分析与机器学习等前沿技术,实现海量数据自动化分类、筛选、整理及分配。凭借强大的数据处理效能,助力企业精准提取关键信息,优化决策流程,提升运营效率。以下从系统架构、核心功能、技术特性、应用场景及发展趋势展开解读。   应用案例   目前,已有多个有效数据智能分拣系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润有效数据智能分拣系统。这些成功案例为有效数据智能分拣系统的推广和应用提供了有力支持。
    华盛恒辉l58ll334744 2025-04-21 16:46 120浏览
  • 职场烂摊子,每个人都难免遇上如果你在职场待久了,总会碰到一些让人无奈的情况:比如刚接手的项目混乱不堪、前任同事留下的任务一团乱麻,甚至有时因为自己的疏忽造成麻烦。面对这种烂摊子,烦躁、焦虑、甚至怀疑人生的情绪都会扑面而来。但如果你冷静想想,会发现真正消耗你的,往往不是工作本身,而是持续不断的心理内耗。那么问题来了,如何摆脱内耗,快速有效地“自救”?摆脱内耗,从情绪中抽离我曾经历过一个典型的职场烂摊子:前任项目负责人突然辞职,项目资料缺失严重,进度远远落后,客户抱怨不断。当时接手后的第一反应就是慌
    优思学院 2025-04-21 18:21 45浏览
  •   卫星通信效能评估系统平台全面解析   北京华盛恒辉卫星通信效能评估系统平台是衡量卫星通信系统性能、优化资源配置、保障通信服务质量的关键技术工具。随着卫星通信技术的快速发展,特别是低轨卫星星座、高通量卫星和软件定义卫星的广泛应用,效能评估系统平台的重要性日益凸显。以下从技术架构、评估指标、关键技术、应用场景及发展趋势五个维度进行全面解析。   应用案例   目前,已有多个卫星通信效能评估系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润卫星通信效能评估系统。这些成功案例为卫
    华盛恒辉l58ll334744 2025-04-22 16:34 75浏览
  • 在消费金融的赛道上,马上消费曾是备受瞩目的明星企业。自2015年成立以来,它以年均 30% 的净利润增速一路狂奔,成为持牌消费金融公司的标杆,2023年更是斩获19.82亿元净利润,风光无限。然而,2024年却成了马上消费的一道分水岭。2024年上半年,其营收为77.38亿元,同比下降2.11%;净利润更是同比骤降20.66%,仅为10.68亿元,创下历史最大跌幅 。与此同时,不良贷款率攀升至2.5%,不良余额高达16.54亿元,核心资本充足率降至12.72%,融资
    用户1742991715177 2025-04-21 21:29 106浏览
  • 4 月 19 日,“增长无界・智领未来” 第十六届牛商大会暨电子商务十大牛商成果报告会在深圳凤凰大厦盛大举行。河南业之峰科技股份有限公司总经理段利强——誉峰变频器强哥凭借在变频器领域的卓越成就,荣膺第十六届电子商务十大牛商,携誉峰变频器品牌惊艳亮相,以十几年如一日的深耕与创新,书写着行业传奇。图 1:誉峰变频器强哥在牛商大会领奖现场,荣耀时刻定格牛商大会现场,誉峰变频器强哥接受了多家媒体的专访。面对镜头,他从容分享了自己在变频器行业二十年的奋斗历程与心路感悟。谈及全域营销战略的成功,誉峰变频器强
    电子与消费 2025-04-22 13:22 100浏览
  • 引言:工业安全与智能化需求的双重驱动在工业安全、环境保护及家庭安防领域,气体泄漏引发的安全事故始终是重大隐患。随着传感器技术、物联网及语音交互的快速发展,气体检测报警器正朝着智能化、低成本、高可靠的方向演进。WT588F02B-8S语音芯片,以“离在线语音更换+多协议通信”为核心优势,为气体检测报警器提供了一套高效、灵活的低成本语音解决方案,助力开发者快速响应市场需求。产品功能与市场需求1. 核心功能:从监测到预警的全流程覆盖实时气体监测:支持一氧化碳、臭氧、硫化氢等多种气体浓度检测,精度可达p
    广州唯创电子 2025-04-22 09:14 68浏览
  • 在汽车行业的变革浪潮中,智界汽车的诞生备受瞩目。作为华为与奇瑞两大巨头携手合作的结晶,智界汽车自孕育之初便承载着众人的期待,被视为融合前沿科技与卓越制造的典范,有望在竞争激烈的新能源汽车市场中开辟出一片新天地。2024年,智界品牌首款车型智界S7正式上市,凭借华为的技术赋能,如先进的鸿蒙智能座舱、强大的HUAWEI ADS高阶智能驾驶辅助系统,以及奇瑞多年积累的深厚造车底蕴,在上市前赚足了眼球。智界S7的亮相,犹如一颗投入平静湖面的石子,激起了层层涟漪,消费者对其充满了好奇与期待,行业内也纷纷将
    用户1742991715177 2025-04-21 20:28 80浏览
  • 引言:老龄化社会的健康守护需求随着全球老龄化进程加速,老年人的健康管理与生活质量成为社会焦点。记忆衰退、用药混乱、日程遗漏等问题频发,催生了智能健康设备的市场需求。WTR096录音语音芯片,凭借其高度集成的录放音、计时时钟与计划管理功能,为老年人量身打造了一站式健康管理方案,重新定义智能语音时钟的价值。功能亮点:1. 用药安全守护:多维度提醒,拒绝遗忘多时段精准提醒:支持一天内设置多个用药时间(如早、中、晚),适配复杂用药需求。个性化语音定制:家属可录制专属提醒语音(如“上午9点,请服用降压药”
    广州唯创电子 2025-04-22 08:41 99浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦