6.模拟风扇(满分50分)版本1:满分15分模拟实现电风扇,可以调3档速度(慢速、中速、快速);
开关按钮;
定时吹风;
描述风扇的扇叶大小、颜色等。
设计Fan类,属性包括:3个常量SLOW(1)、MEDIUM(2)、FAST(3)代表风扇的速度;
1个int属性speed指定速度,默认值为SLOW;
1个boolean属性on指定开关机,默认值false;
1个double属性radius指定风扇扇叶大小;
1个String属性color指定扇叶颜色,默认值为blue。
方法包括这些属性的访问器、构造函数、重写Object类的toString()和equals()方法等。
运行测试代码:publicstaticvoidmain(String[]args){Fan1fan1=newFan1();fan1.setSpeed(Fan1.FAST);fan1.setRadius(10);fan1.setColor("yellow");fan1.setOn(true);System.out.println(fan1.toString());}版本2:满分15分修改版本1中Fan类,让其继承JPanel类,并且把color属性设置为Color类型,默认属性为red。
随机产生radius,取值范围为1-5;
随机产生颜色,取值范围为red、blue、yellow、green、orange;
根据color、radius属性值绘制风扇。
运行如下图:版本3:满分20分让版本2中的风扇转起来。
创建一个FanControl类包含以下内容:Start、Stop、Reverse按钮,用于开启、关闭、反转控制;
一个滚动条控制速度。
运行示例如下:
2025/11/12 18:12:44 17KB java程序 模拟风扇 课程设计 CQUT
1
实验简介:手眼协调是一种眼睛和手一起工作执行一项任务的能力,反应计时器电路能够测量一个人在看见一种视觉刺激后,手的响应有多快。
实验要求:1.基本部分(1)电路有三个输入按键:clear,start和stop,使用一个LED作为视觉刺激指示灯,在七段数码管上显示相应的信息。
(2)当按下clear键时,电路回到初始状态,七段数码管给出一个初始显示,同时LED指示灯熄灭。
(3)当按下start键,七段数码管熄灭,固定间隔一段时间(时长不做规定,例如3s)之后,LED指示灯点亮,计时器开始计数。
计时器每1ms加1,它的值以XXX的格式显示在数码管上。
(4)被测试者看到LED指示灯点亮后,立即按下stop键,此时计时器暂停计数,数码管显示的就是被测试者的反应时间。
(5)如果不按下stop键,计时器达到999之后停止计数。
(6)如果LED指示灯点亮前,按下stop键,被视为犯规,数码管上应给出犯规指示。
2.提高部分(1)按下start键后,随机间隔一段时间(1~6s)之后,LED指示灯点亮;
(2)连续进行多次测试后,可查阅所有测试结果中的最短时间和最长时间;
(3)两个人比赛,显示获胜者的反应时间。
2025/11/12 14:34:28 3.55MB 毫秒计时器
1
http://blog.csdn.net/xiaoxiao108/archive/2010/12/18/6084473.aspx记得在大学学java时,同学在下载了很多java的视频,看到里面有些是介绍简单游戏开发的,马士兵老师讲的,挺感兴趣的。
一起看了看视频写了写程序。
现在毕业了,因为工作中用的是C#,最近很想拿C#把以前写的坦克大战重写下,来熟悉熟悉C#的基本语法。
程序很简单,跟java代码相比没有多大改动开发环境vs2008实现方法如下1.在form中添加一个panel,在panel的Paint方法中得到Graphics对象2.通过Graphics对象再panel画出坦克,子弹等相关内容3.添加timer控件来控制panel的重画实现坦克,子弹的运动4.根据电脑按下的方向键,确定出坦克的方向,panel重画时根据坦克的方向修改坦克的X,Y轴坐标,来实现坦克的移动5.通过Rectangle的IntersectsWith函数来进行碰撞检测,实现子弹打击坦克具体实现代码1.在项目里面添加枚举类型//////表示方向的的枚举类型///publicenumDirection{L,U,D,R,STOP}2.添加子弹类的相关常量,属性//////子弹X轴的速度,单位PX///publicstaticintXSPEED=10;//////子弹Y轴的速度,单位PX///publicstaticintYSPEED=10;//////子弹的宽度///publicstaticintWIDTH=10;//////子弹的高度///publicstaticintHEIGHT=10;//////子弹的坐标///intx,y;//////子弹的方向///Directiondir;//////子弹的存活状态///privateboollive=true;//////TankClient窗体实例///privateTankClienttankClient;//////敌我双方的标记///privateboolgood;3.添加draw方法来画出子弹publicvoidDraw(Graphicsg){if(!live){tankClient.missiles.Remove(this);return;}//通过画椭圆函数在界面上显示子弹g.FillEllipse(Brushes.Black,x,y,Missile.WIDTH,Missile.HEIGHT);Move();}4.添加子弹打击坦克的方法publicboolHitTank(Tankt){//用IntersectsWith来检测两个矩形相碰撞if(GetRectangle().IntersectsWith((t.GetRectangle()))&&t.Live&&t
2025/8/19 18:41:23 73KB C# 坦克大战 双缓冲 碰撞检测
1
二、支持的功能2.1支持三菱GXDeveloer/GXWORKS2兼容三菱GXDeveloper/GXWORKS2,支持PLC写入、PLC读出、PLC校验、在线监视、在线监视软元件批量监视、在线监视(写入模式)以及远程操作RUN/STOP等功能。
2.2、兼容一般的组态触摸屏(如昆仑通态触摸屏)、变频器、仪表等2.3、基础版本程序支持如下指令(其他指令亲可以自己添加):RSTRSTSRSTTCOUTOUTSSETSETSADDSUBMULDIVLDLDILDPLDFANDANIORORIANDPANDFORPORFADDPSUBPMULPDIVPMOVMOVPENDFENDCJCALLRETINVLD=LD>LD=AND=AND>AND=2.4、FX2N源码优化版本升级记录:1)优化程序风格,规整代码,并新增部分注释,方便读懂2)新增指令如下:INCINCPDECDECPMPPLDOR=OR>OR=ORWANDWORWXORNEGROLRORRCLRCRSQRSWAP3)新增波特率自适应功能9600、192004)完善功能,当远程STOP或者硬件开关使PLC为STOP状态时,将内部寄存器,定时器,计数器等清零功能,与三菱FX2N兼容,具体清零寄存器包括(D0-D8000;
C0-C255;
T0-T255;
M000--M3072,其余不清零)5)新增断电保持功能,更改相关断电保持寄存器,具体如下:450个数据寄存器:D500--D950150个计数器:C101--C150150个定时器:T100--T150512个内部继电器:M512--M1024其他寄存器STOP或者断电将清零6)新增模拟量功能:2AD+2DA(若有需要可以多加)2AD路模拟量输入对应寄存器:D8030D8031(0~10V-->0~4095)2DA路模拟量输出对应寄存器:D7030D7031(0~4095-->0~10V)7)新增I2C函数功能:方便外部EEPROM扩展8)优化定时器功能(与三菱兼容):8.1)常规定时器T0~T255共256点T0~T199为100ms定时器,共200点T200~T245为10ms定时器,共46点8.2)积算定时器T246~T255共10点T246~T249为1ms积算定时,共4点T250~T255为100ms积算定时器,共6点2.5、PLC编程支持的功能编程语言梯形图程序容量8K步内部寄存器D8000个定时器T 256个记数器C256个输入点X256个输出点Y256个壮态继电器S600个辅助继电器M3071点M0-M3071特殊功能:M8000(运行监视触点)M8001(运行监视反触点).M8002(初始化脉冲触点)M8003(初始化脉冲反触点)M8004(错误指示触点)M8011(10毫秒时钟脉冲)M8012(100毫秒时钟脉冲)M8013(1秒时钟脉冲)M8014(1分时钟脉冲)M8020(零位标志)M8021(借位标志)M8022(进位标志)M8029(指令执行结束标志)M8033(内存保持触点)M8034(禁止输出触点).更多参考FX2N系列。
2025/8/16 7:58:10 7.63MB PLC源码
1
1、 点击“Start”按钮,计时开始,在按钮与文本框之间显示流逝的时间,并在窗口打印开始时间等信息。
2、 “Stop”按钮计时结束,打印结束时间等信息。
3、 Lap按钮:打印从开始起流逝的总时间,及单圈时间。
4、 Clear按钮:清除打印的信息。
5、 Save按钮:将打印的信息写到日志文件。
6、 时间精确到毫秒。
2025/7/20 11:58:32 11KB 秒表程序
1
用STM32F407开发的一款示波器,以UCOSIII做操作系统,默认4.3寸电容屏显示(可修改)。
下侧数据框,可显示幅值、Vmax、Vmin、频率、period、占空比、V/div、T/div等参数。
右侧按钮控制框,具有Auto、Stop、cursor、time/div、V/div、Signal功能。
Signal可作为信号发生器,测试示波器波形显示。
2025/6/26 22:45:20 10.07MB STM32F407 示波器 信号发生器 正点原子
1
简介:
在本文中,我们将深入探讨如何使用Qt框架与Video for Linux 2(V4L2)接口相结合,实现在Linux系统上显示摄像头视频流。
V4L2是Linux内核提供的一种标准接口,用于与视频捕获设备(如摄像头)进行交互,而Qt则是一个跨平台的C++图形用户界面应用程序开发框架。
我们需要了解V4L2的基本概念。
V4L2是V4L(Video4Linux)的升级版,提供了更多的功能,包括对多种视频格式的支持、多设备并发访问以及高级缓冲区管理。
它通过/dev/videoX设备节点与摄像头通信,X为设备编号。
接下来,我们要引入Qt。
Qt库提供了一套完整的图形用户界面工具,包括窗口、控件、布局等,以及多媒体模块(QMultimedia),可以方便地处理音频和视频数据。
在Qt中,我们可以通过QCamera类来操作摄像头,并使用QCameraViewfinder或QVideoWidget来显示视频流。
实现"v4l2摄像头显示视频流"的关键步骤如下:1. **初始化Qt环境**:确保系统已安装Qt库,然后创建一个Qt项目,选择合适的Qt版本和构建系统。
2. **导入相关模块**:在代码中导入必要的Qt模块,如`<QtWidgets>`(用于窗口和控件)、`<QCamera>`(摄像头操作)和`<QCameraViewfinder>`(显示视频流)。
3. **创建QCamera对象**:使用QCamera类创建一个摄像头对象,传入设备ID(通常是"/dev/video0")作为参数。
例如: ```cpp QCamera camera(new QCamera("/dev/video0", this)); ``` 如果需要检测可用摄像头,可以使用`QCameraInfo`类列出所有设备。
4. **设置视频源**:V4L2摄像头作为视频源,可以通过设置`QCamera::setCaptureDevice`方法来实现: ```cpp camera.setCaptureDevice(QCamera::CaptureDevice::DeviceType, "video0"); ```5. **启动相机**:在确保设置正确后,启动相机: ```cpp camera.start(); ```6. **显示视频流**:创建一个`QCameraViewfinder`实例并将其设置为相机的视图finder,然后将视图finder添加到窗口布局中: ```cpp QCameraViewfinder *viewfinder = new QCameraViewfinder(this); camera.setViewfinder(viewfinder); layout->addWidget(viewfinder); // 假设layout是窗口的布局 ```7. **处理错误和状态改变**:为QCamera对象添加信号连接,以便在出现错误或状态改变时进行相应的处理。
8. **关闭相机**:在应用退出或不再需要视频流时,记得停止并释放相机资源: ```cpp camera.stop(); delete camera; ```以上就是使用Qt结合V4L2显示摄像头视频流的基本步骤。
实际应用中可能还需要处理分辨率设置、帧率控制、色彩格式转换等更复杂的细节。
同时,为了保证兼容性和稳定性,可能需要针对不同的硬件和驱动进行适配。
此外,还可以利用QMediaPlayer和QVideoSurfaceFormat等类来实现自定义的视频播放器功能。
通过这些知识,开发者可以构建出功能丰富的摄像头应用,不仅限于简单的视频显示,还能进行录像、图像处理等多种功能。
对于嵌入式系统或者需要在Linux环境下处理摄像头数据的应用来说,Qt结合V4L2是一个高效且灵活的选择。
2025/6/15 19:50:07 12KB
1
vc实现的ftp客户端断点续传:__fastcallTMultiFtp::TMultiFtp(TComponent*Owner):TComponent(Owner){lock=false;isUseFile=false;runningThreadCnt=0;stop=false;this->Owner=Owner;}
2025/6/7 18:33:07 97KB ftp客户端
1
在LibVLC增加了libvlc_media_player_recorder_start和libvlc_media_player_recorder_stop这两个接口。
定义是:LIBVLC_APIintlibvlc_media_player_recorder_start(libvlc_media_player_t*p_mi,constchar*pFileName);LIBVLC_APIintlibvlc_media_player_recorder_stop(libvlc_media_player_t*p_mi);
2025/2/6 19:42:53 54.38MB LibVLC 录像
1
有些情况需要在windows搭建sftp服务,如果用openssh,还需要安装;
找到一个好工具,直接start,stop即可,超级方便
2024/11/12 16:13:14 1.03MB sftp
1
共 47 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡