Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >智能小车的图像播放器

智能小车的图像播放器

作者头像
用户1170933
发布于 2022-05-10 06:41:34
发布于 2022-05-10 06:41:34
45300
代码可运行
举报
文章被收录于专栏:python开发者python开发者
运行总次数:0
代码可运行

智能小车的图像播放器

作者:一点一滴的Beer http://beer.cnblogs.com/

图像播放器:

     智能小车利用车载摄像头采集跑道数据,然后存储到小车中央控制主板的存储器中。等小车跑完一周后,再串口通讯传到电脑上,并保存为二进制文件。

     然后这个软件就是读取这个二进制文件,每次读取40*80=3200个数据上来,然后用GDI绘制3200个灰度像素点,用定时器,每隔一段时间从文件中读取数据并重新绘制一次,然后就形成了这种动画类似于播放器的功能了。

     这是自己大三的时候用VC6.0写的一个软件,现在想来,其实实用性不强,仅可以把现场的数据采集上来,做一些上位机的仿真。不过,也算是自己大三的一点小心血吧。现在清理硬盘,把这个软件的效果演示做成一个视频,作个纪念,然后再删除吧。

主要的技术问题就是:读文件,GDI绘图,定时器。

1.读文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void CPicMovieDlg::OnOpenfile() 
{
	// TODO: Add your control notification handler code here
	//打开文件
	//创建文件名缓存(fileBuffer)和文件读取缓存(rBuffer)
	//此处如果不把缓存置,在后面的设定中就会出错,如果是动态申请的,请用memset或者for循环把数组清零
	char fileBuffer[5010] = {0}, rBuffer[row * column] = {0};

	//定义一个CFile类,用来处理文件
//	CFile in;//放到此对话框的成员变量中。因为我要持续对此文件进行操作。要有较长的生成周期。???权宜之计
	//定义一个CFileDialog类,用来显示标准的打开文件对话框
	CFileDialog inDlg(FALSE, NULL, NULL, NULL, _T("自定义文件类型(*.sav)|*.sav|所有文件(*.*)|*.*||"), NULL);
	inDlg.m_ofn.lpstrTitle = _T("打开自定义文件");
	//设定一个文件名缓存,因为CFileDialog内置的文件名缓存长度只有,但是很多时候,文件的路径远大于这个数,为了保险起见,所以要自己设定一个文件名缓存
	inDlg.m_ofn.lpstrFile = fileBuffer;
	//设定缓存长度
	inDlg.m_ofn.nMaxFile = 5000;
	//显示对话框,并处理按了确定按钮的事件
	if(inDlg.DoModal() == IDOK) {
		//以只读方式打开文件
		if(in.Open(inDlg.GetPathName(), CFile::modeRead)) {			


			OperateFile();	
			bStopFlag = 1;//打开文件后,不自动播放。
			//关闭文件		
			//in.Close();//将此语句放在程序结束时。		
			
		//	MessageBox("打开文件成功", "搞定了", MB_ICONEXCLAMATION | MB_OK);
		} else {
			MessageBox("打开文件失败,可能您没有关闭当前文件", "失败了", MB_ICONSTOP | MB_OK);
			bOpenFlag = 0;
		}
}
	
}

2.GDI绘制像素点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void CPicMovieDlg:: DrawOrigin(BYTE dataTemp[][column],CDC* pDC)
{
	for (int i=0;i<row;i++)
		for (int j=0;j<column;j++)
		{	
			int recWidth=8;
			int recHeight=14;
			COLORREF clrRec=RGB(dataTemp[i][j],dataTemp[i][j],dataTemp[i][j]);
			pDC->Rectangle(recWidth*j/2,recHeight*i/2,recWidth*(j+1)/2,recHeight*(i+1)/2);
			//下面的填充函数将原来有的笔刷效果全部给覆盖了。
			pDC->FillSolidRect(recWidth*j/2,recHeight*i/2,recWidth/2,recHeight/2,clrRec);	
			
		}
}

3.定时器

    在对话框初始化的时候,设置定时器,然后再到定时器的事件中执行绘图函数。具体用法可以到网上查阅。

    结尾:本文不作为技术文,只是作为自己的一个回忆纪念文吧。所以,没有详细对解决问题的细节进行说明了。写完本文后,就直接将源代码全部删除了。只留下了上面的那些思路了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【MFC】MFC基础篇(1)
CFrameWnd: 框架窗口,负责创建应用主窗口,含标题栏,菜单栏,工具栏,状态栏等 。
半生瓜的blog
2023/05/13
1.8K0
【MFC】MFC基础篇(1)
VC6.0基础知识使用小结
这段时间在使用MFC做媒体播放器项目,查询了不少资料,用到的技术主要有ADO、多线程、DirectShow、MFC相关控件包括ActiveX控件(Windows Media Player、Active Movie3)的使用等等一些东西。用的主要参考文档有Windows Media Player相关的开发文档、MSDN。
ccf19881030
2019/04/24
1.3K0
OpenCV与MFC实战之图像处理 样本采集小工具制作 c++MFC课程设计
原文链接:https://www.cnblogs.com/DOMLX/p/12111102.html
徐飞机
2019/12/31
1.4K0
FFmpeg+SDL2 实现简易音视频同步播放器
这是实现的简易播放器的线程模型,通过这张图再结合我们之前博客中学习的内容,基本可以了解播放器的一个整体运行流程。具体代码也是根据这张图来实现。
字节流动
2023/09/04
6370
FFmpeg+SDL2 实现简易音视频同步播放器
Qt | windows视频播放器小项目
点击ctrl+r 运行 目前我测试了gif和MP4,其他文件应该也可以,留给大家完成。
Qt历险记
2024/10/28
2140
Qt | windows视频播放器小项目
MFC批量修改文件名工具
按下“添加文件”按钮后,打开一个文件对话框objFileDlg。但是要设置objFileDlg最大文件名缓冲区。然后获得第一个文件的起始位置,依次把全部的文件完整名添加到列表控件中,这里列表控件使用升序排序功能。
立羽
2023/08/24
3490
MFC批量修改文件名工具
QT入门10个小demo——MP4视频播放器
学完qt好几个月了,一直没做相关的项目巩固,这次分享10个qt相关的小项目来练练手。
秋名山码神
2023/10/16
2.4K0
QT入门10个小demo——MP4视频播放器
emWin视频播放器,含uCOS-III和FreeRTOS两个版本
第10期:视频播放器 配套例子: V6-918_STemWin提高篇实验_视频播放器(RTX版本,仅支持MDK4.74)
Simon223
2018/09/04
1.4K0
emWin视频播放器,含uCOS-III和FreeRTOS两个版本
​ZYNQ从放弃到入门(七)-三重定时器计数器 (TTC)
之前重点介绍了 Zynq All Programmable SoC 处理器系统 (PS) 中可用的私有定时器和看门狗。Zynq SoC 的 PS 还包含两个三重定时器计数器 (TTC),可提供更加灵活的定时资源。您可以将这些 TTC 用作定时器或在 Zynq SoC 的 EMIO 或 MIO 引脚上输出波形。
碎碎思
2022/06/06
2.4K0
​ZYNQ从放弃到入门(七)-三重定时器计数器 (TTC)
二、Qt定时器与文本编辑器制作《QT 入门到实战》
在 Qt 中使用 Label 可以显示文本,但 Label 不止可以显示文本,还可以用于图片的显示。
1_bit
2022/12/18
1.1K0
二、Qt定时器与文本编辑器制作《QT 入门到实战》
制作音乐播放器(C#)
实现音乐播放器的基本功能,可以选择文件播放,也可以拖拉文件播放。 本项目中,使用的是.wav文件。
跋扈洋
2021/04/25
1.2K0
制作音乐播放器(C#)
C++实现哈夫曼编码压缩软件
一个简单的压缩软件,利用哈夫曼思想,构造哈夫曼编码,实现对文件的二进制压缩,以及解压,再利用MFC制作可视化操作界面,美化软件又简化文件操作。(各个步骤有解释可看)
HcodeBlogger
2020/07/14
2.2K0
C++实现哈夫曼编码压缩软件
【MFC】 MFC文件操作和注册表操作
const char* p == char const *p 常量指针,表示指向的内容为常量,指针的指向可以修改,指针指向的内容不能修改。
半生瓜的blog
2023/05/13
1.4K0
【MFC】 MFC文件操作和注册表操作
基于emWin的WAV,MP3软解软件播放器,带类似千千静听频谱,含uCOS-III和FreeRTOS两个版本
第9期:WAV,MP3软解播放器,带类似千千静听频谱 配套例子: V6-916_STemWin提高篇实验_WAV,MP3软解播放器,带类似千千静听频谱(uCOS-III) V6-917_STemWin提高篇实验_WAV,MP3软解播放器,带类似千千静听频谱(FreeRTOS)
Simon223
2018/09/04
7160
基于emWin的WAV,MP3软解软件播放器,带类似千千静听频谱,含uCOS-III和FreeRTOS两个版本
基于Qt的音乐播放器(一)添加音频文件,播放音乐,更新进度条
和其他应用程序一样,我们希望通过点击文件并打开文件对话框,选择要播放的音频文件,下面我们来实现它。
全栈程序员站长
2022/08/29
2.3K0
基于Qt的音乐播放器(一)添加音频文件,播放音乐,更新进度条
MFC文件操作
文件操作:二进制文件和文本文件的区别。二进制文件将数据在内存中存在的模式原封不动的搬到文件中,而文本文件是将数据的asc码搬到文件中。 首先做一个读写文件的菜单,在CxxView里响应 1.C的方式: fwrite: size:Item size in bytes 每次写多少个字节 count:Maximum number of items to be written ,总共写几次。
全栈程序员站长
2022/07/18
2.4K0
基于Qt的音乐播放器(一)添加音频文件,播放音乐,更新进度条
和其他应用程序一样,我们希望通过点击文件并打开文件对话框,选择要播放的音频文件,下面我们来实现它。
花狗Fdog
2020/10/28
6.2K0
基于Qt的音乐播放器(一)添加音频文件,播放音乐,更新进度条
iOS-QQ音乐播放器的简单实现
一. QQ音乐播放器的简单实现 每个音乐播放器的实现都大致相同,个人认为难点在于歌曲播放与Slider的同步,歌词的解析与播放的同步。这些过程虽然繁琐,但是理解起来并不难。先来看看简单实现结果吧。 Q
xx_Cc
2018/05/10
2.9K0
课设-基于51单片机的智能小车(循迹+避障+APP控制)[通俗易懂]
原则:硬件搭建的不好,会让我们在调试过程中遇到很多玄学问题,比如:杜邦线接触不良,杜邦线短路等等,为了调试更加舒服,在搭建硬件平台时,接口要做一些处理,比如接口处用热熔胶粘好,防止脱落,布线要尽量整齐一些,如果要参加智能车类的比赛,一个好的布线布局,会让你的对手瞬间感受到压力!
全栈程序员站长
2022/11/07
4.3K0
课设-基于51单片机的智能小车(循迹+避障+APP控制)[通俗易懂]
《Android FFmpeg 播放器开发梳理》第一章 播放器初始化与解复用流程
这一章,我们来讲解播放器解复用(从文件中读取数据包)的流程。在讲解播放器的读数据包流程之前,我们先定义一个播放器状态结构体,用来记录播放器的各种状态。
音视频开发进阶
2019/08/09
1.4K0
推荐阅读
相关推荐
【MFC】MFC基础篇(1)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验