粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

这篇具有很好参考价值的文章主要介绍了粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目设计开发环境:

(1)VMware Workstation Pro软件

(2)ubuntu12 .04 (能交叉编译就行)

(3)SecureCRT 

(4)代码编译器(notepad++/Visual Studio Code)

项目功能描述:

(1)幻灯片:开始进行图片幻灯片显示,结束后进入RFID刷卡开锁界面。

(2)RFID:刷卡成功和刷卡失败两种状态(刷卡成功后进入功能选择界面 )。

(3)功能选择界面:四个功能——电子相册、游戏、音乐播放、视频播放。

(4)电子相册:手动切换图片。

(5)游戏:后续待开发。

(6)音乐播放:手动切换歌曲,控制播放和暂停功能。

(7)视频播放:播放、退出。

设计步骤:

1、使用linux创建共享文件夹

2、程序编写

3、Linux的使用(交叉编译)

4、使用SecureCRT传输图片、视频(可U盘传输)

5、程序写入开发板

6、项目成果图:

 文章来源地址https://www.toymoban.com/news/detail-478306.html

1、创建共享文件夹

(1)打开虚拟机->菜单->管理->虚拟机设置->选项->共享文件夹->总是启用->添加。

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 (2)验证是否创建成功

    快捷键:Ctrl+ALT+T 进入命令输入窗口,然后输入cd➕空格➕/mnt/hgfs➕回车,再输入ls➕回车。

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

 2、程序编写

查看man手册:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频) man 2 手册函数概述:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

头文件:

#ifndef _MAIN_H_//头文件名字大写
#define _MAIN_H_
//看一下这个头文件有没有被重复包含

//头文件
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>
#include <sys/mman.h>
#include <strings.h>

#include <stdlib.h>   //man 3 system ,man手册第三本书
#include "rfid.h"    //

//全局变量
int x,y;//这是触摸屏的坐标变量
int fd;//触摸屏在文件描述符
int lcd_fd;//LCD的文件描述符
int * FB;//内存映射的起始指针
int num;
int ret;
int RD;
int yy;
int aa;
int dd;

//函数声明
int project_init();//初始化函数
void touch_init();//触摸屏函数
void project_show();//主机界面
void project_delete();//释放销毁函数
int bmp_show(char *phtname);//显示图片函数
int system(const char *command);//
//结构体定义
//定义一个结构体存储读取触摸屏的信息
struct input_event touch;
int open_serial(void);
int PiccRequest(int fd);
int init_mplayer();
//宏定义
//联合体,枚举

#endif//结束

 

部分程序:


//主要程序
void project_show()
{
	//幻灯片
	bmp_show("/cry/hzw1.bmp");//刷海贼王1图片
	sleep(2);
	bmp_show("/cry/hzw2.bmp");//刷海贼王2图片
	sleep(2);
	bmp_show("/cry/hzw3.bmp");//刷海贼王3图片
	sleep(2);
	bmp_show("/cry/hzw4.bmp");//刷海贼王4图片
	sleep(2);
	bmp_show("/cry/hzw5.bmp");//刷海贼王5图片
	sleep(2);
    bmp_show("/cry/hzw6.bmp");//刷海贼王6图片
    sleep(2);
	bmp_show("/cry/skks.bmp");//刷刷卡开锁图片
    sleep(2);
	while(1)
	{ 
        ret = PiccRequest(RD);
		if(ret == -1)  //若是请求超时退出,必须要关闭串口后,重新打开才能再次读取数据
		{
			usleep(500000);
			close(RD);
			//打开串口文件
			RD = open_serial();
			/*初始化串口*/
			init_tty(RD);
			timeout.tv_sec = 1;
			timeout.tv_usec = 0;
			continue;
		}	

		else//(ret == 0)
		{
			printf("ok!\n");
		}

		//发送B命令 和获取卡号
		ret = PiccAnticoll(RD);

		//若获取的cardid为0,或获取id超时,则需重新发送'A'命令
		if(cardid == 0 || ret == -1) continue; 

		else if(ret == 0)
		{
			printf("card ID = %x\n", cardid);  //打印cardid号
			usleep(500000);
			//break;
		}
	    //close(RD);
	    if (cardid==0x6333f3ad)  //选择固定卡号
		{
            printf("刷卡成功\n");
			bmp_show("/cry/skcg.bmp");//刷卡成功
			sleep(3);
			bmp_show("/cry/xuanzhe.bmp");//刷卡成功
			while (1)
			{
		             touch_init();//触摸屏在初始化
		             if(touch.type == EV_KEY && touch.code == BTN_TOUCH && touch.value == 0)
		             {
			          printf("(%d,%d)\n",x,y);
			         //界面选择、界面跳转

                     //图片切换
		             if(x>25&&x<340&&y>70&&y<180)
					 {
						while(1)
						{
						touch_init();//触摸屏在初始化
		                if(touch.type == EV_KEY && touch.code == BTN_TOUCH && touch.value == 0)
		                    {
			                       printf("(%d,%d)\n",x,y);

		                    if(x > 615 && x < 800 && y > 390 && y < 480)
			                    {
				                     num++;
				                      printf("触碰左边屏幕");
			                    }
			                if(x > 0 && x < 185 && y > 390 && y < 480)
			                    {
				                  num--;
                                  printf("触碰右边屏幕");
			                    }
								if (num==0)
								{
									bmp_show("/cry/hzw11.bmp");//显示图片 
								}
					        if(num==1)
					            {
									printf("(%d,%d)\n",x,y);
						           bmp_show("/cry/hzw22.bmp");//显示图片
					            }
					        if (num==2)
					            {
									printf("(%d,%d)\n",x,y);
						           bmp_show("/cry/hzw33.bmp");//显示图片
					            }
					        if(num==3)
					            {
									printf("(%d,%d)\n",x,y);
						           bmp_show("/cry/hzw44.bmp");//显示图片
					            }
				            if(num==4)
					            {
									printf("(%d,%d)\n",x,y);
					             	bmp_show("/cry/hzw55.bmp");//显示图片
					            }
					        if(num==5)
					            {
									printf("(%d,%d)\n",x,y);
					            	bmp_show("/cry/hzw66.bmp");//显示图片
					            }
								if (num<0){num=5;}
								if (num>5){num=0;}

					        }
					        if(x > 310 && x < 500 && y > 390 && y < 480)  
					            {
					               printf("退出头像显示界面");
					               bmp_show("/cry/xuanzhe.bmp");//退出至选择界面图片
					               break;
					            }
					    }  
					}

					//播放音乐
					if (x > 450 && x < 730 && y > 290 && y < 400)
					{
						bmp_show("/cry/bofangyingyue.bmp");//显示播放界面
                         while (1)
						 {
							touch_init();//触摸屏在初始化
							num=0;
		                if(touch.type == EV_KEY && touch.code == BTN_TOUCH && touch.value == 0)
		                    {
			                 printf("(%d,%d)\n",x,y);
						    
                       if(x > 620 && x < 800 && y > 390 && y <475)
			            {
				                     yy++;
									 printf("触碰右上角屏幕");
			            }
                         if(x > 29 && x < 190 && y > 390 && y < 475)
			             {
				                  yy--;
                                  printf("触碰左上角屏幕");
			            }
                         if(yy==1)
					    {
							       system("killall -9 madplay");
						           system("madplay yanyuxingzhou.mp3 &");
					    }
						if (yy==2)
						{
							system("killall -9 madplay");
						    system("madplay GuitarType.mp3 &");
						}
                        if (yy==3)
						{
							system("killall -9 madplay");
							system("madplay dongmian.mp3 &");
						}
                        if (yy<0){yy=3;}
						if (yy>3){yy=0;}

						 if(x > 230 && x < 380 && y >390&& y < 475)//暂停
			              {
		                     system("killall -19 madplay");
			              }

                         if(x > 430 && x < 580 && y > 390 && y < 475)//继续
			              {
		                     system("killall -18 madplay");
			              }
						 if(x > 630 && x < 780 && y > 15 && y < 80)//退出
			              {
		                     system("killall -9 madplay");
							 bmp_show("/cry/xuanzhe.bmp");//退出至选择界面图片
							 break;
			              } 
					    }
						 }
					}

                   //播放视频有bug
					if (x > 25 && x < 340 && y > 290 && y < 400)
					{
						int dd =init_mplayer();
                        bmp_show("/cry/chupeng.bmp");//退出至选择界面图片
						   while (1)
						 {
							touch_init();//触摸屏在初始化
		                    if(touch.type == EV_KEY && touch.code == BTN_TOUCH && touch.value == 0)
		                        {
			                        printf("(%d,%d)\n",x,y);
						          if (x > 0 && x < 800 && y > 0 && y < 480)
						           {
					        		 system("mplayer -slave -quiet -input file=/fifo -geometry 0:0 -zoom -x 800 -y 480 sp2.avi &");
						           }
						          if(x > 600 && x < 800 && y > 410 && y < 480)//左下角
			                       {
                                     //write(dd,"quit\n",5);
		                             system("killall -9 mplayer");
							         bmp_show("/cry/xuanzhe.bmp");//退出至选择界面图片
							          break;
			                       }
					            }
						 }
					} 

					//游戏假的界面
                     if (x > 450 && x < 730 && y > 70 && y < 180)
					 {
                          //bmp_show("/cry/yxjm.bmp");//游戏开始界面
						  //sleep(2);
						  bmp_show("/cry/.bmp");//游戏界面
                             while (1)
						 {
							touch_init();//触摸屏在初始化
		                if(touch.type == EV_KEY && touch.code == BTN_TOUCH && touch.value == 0)
		                    {
			                 printf("(%d,%d)\n",x,y);
						     

						 if(x > 600 && x < 800 && y > 410 && y < 480)//左下角
			              {
		                           printf("退出头像显示界面");
					               bmp_show("/cry/xuanzhe.bmp");//退出至选择界面图片
					               break;
			              }
					        }
						 }

					 }

                     if (x > 25 && x < 340 && y > 410 && y < 480)
					 {
						printf("退出头像显示界面");
						bmp_show("/cry/skks.bmp");//刷卡开锁照片
                        break;  
					 }
					 }
					}
					
		}
		else
		{
			  printf("刷卡失败\n");
			  bmp_show("/cry/sksb.bmp");//刷卡失败
			  while (1)
			  {
			     touch_init();//触摸屏在初始化
		           if(touch.type == EV_KEY && touch.code == BTN_TOUCH && touch.value == 0)
		            {
			              printf("(%d,%d)\n",x,y);
			              //界面选择、界面跳转
		
			            if(x > 600 && x < 800 && y > 410 && y < 480)  
			             {
					         printf("退出头像显示界面");
					          bmp_show("/cry/skks.bmp");//退出至刷卡开锁图片
					          break;
				         }
		            }
		       }
		}
    }
}

3、Linux的使用(交叉编译)

编译命令:

arm-linux-gcc *.c -std=c99   (默认生成a.out文件)

arm-linux-gcc *.c -o a.out -std=c99 (指定生成a.out文件)

arm-linux-gcc *.c -I../inc -o../bin/main -std=c99 (指定生成main文件并存在共享文件夹中的bin文件夹中)

arm-linux-gcc *.c  -std=gnu99

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 项目框架:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

 4、使用SecureCRT传输图片、视频(可U盘传输)

绿勾表示连接成功:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

可以将图片或者文件拖到CRT里面选择Xmodem发送:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

查看开发板有没有mplayer:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

传输文件命令:

rx+空格+你想传输的图片(修改图片宽度像素800x480,后缀为.bmp格式)

rx+空格+你想传输的视频或者音乐(音频格式.mp3、视频格式.avi)

 

U盘传输:

默认路径为:cd + 空格+/mnt/udisk:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

cp+U盘中想传输的文件+/想要存在的路径:

下图意思是拷贝hzw1.bmp文件到根目录文件中的cry文件夹中

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 查看当前路径或文件夹下有什么文件命令: ls粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

调成中文字符:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

5、程序写入开发板

把交叉编译生成的a.out文件或main等文件拖到 SecureCRT中点击发送即可。

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

 

6、项目成果图:

粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)

源码关注后私聊!!!

 

 

 

到了这里,关于粤嵌Gec6818---小项目功能实现(RFID+图片显示+音乐+视频)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 粤嵌 GEC-6818 蓝牙智能家庭影音 arm开发记录

    注意:未经允许不得转载,引用请注明出处 文件操作:创建、删除、复制、移动 环境:VMware15.5,ubantu16.04,串口驱动HI-340,secureCRT 设置共享文件夹,设置后ubantu系统和windows系统可以共享使用该文件夹里面的内容。 1.gcc编译:将c文件进行编译 2.交叉编译:将c文件编译成arm文

    2024年01月22日
    浏览(47)
  • 6.串口通信和传感器的使用----粤嵌gec6818开发板上实现智能家居(光照气度,压强,海拔,湿度,温度达到临界值蜂鸣器自动警报等)

    串口是一种简单的通信接口,也是单片机中最常用,最简单的通信方式 通常传感器都是采用串口作为与上位机的通信接口 ARM板上提供了三个可以外接传感器的串口接口,位于开发板的右上角, 从上到下分别是: ​ 串口号 串口驱动设备文件名 ​ CON2 “/dev/ttySAC1” ​ CON3 “

    2024年02月16日
    浏览(95)
  • 基于6818粤嵌开发板的2048游戏项目

    小白笔记 目录 前言 一、lcd.c代码 lcd屏幕初始化 在lcd屏幕上任意一点显示颜色  关闭lcd屏幕 lcd.h 二、bmp.c代码 bmp格式 bmp图片读取 bmp.h 三、work.c部分源码 触摸屏 2048方块移动算法 在随机位置上生成2或者4 绘出4*4矩阵 四、流程框图和界面功能描述 板子是6818粤嵌开发板,为8

    2024年02月01日
    浏览(34)
  • GEC6818开发板JPG图像显示,科大讯飞离线语音识别包Linux_aitalk_exp1227_1398d7c6运行demo程序,开发板实现录音

    体积小,使用到数据结构里面的 霍夫曼树(哈夫曼树) 对数据进行压缩 1.对jpegsrc.v8c.tar.gz进行arm移植 移植方式如下: 1.将jpegsrc.v8c.tar.gz解压缩到ubuntu ~ 2.进入~/jpeg-8c对jpeg库进行配置 3.编译 4.安装,将动态库存放到 /home/gec/armJPegLib 5.清空编译记录 6.自己查看下 /home/gec/armJPegLib目

    2024年01月17日
    浏览(40)
  • LCD(GEC6818)

    此篇博客是基于GEC6818开发板使用 1、液晶屏的基本概念 像素:屏幕上显示颜色的最小单位,英文叫pixel。注意,位图(jpg,bmp等格式的常见图片)也是由一个个的像素点构成的,跟屏幕的像素点的概念一样。原理上讲,将一张位图显示到屏幕上,就是将图片上的像素点一个个

    2024年02月09日
    浏览(24)
  • 基于GEC6818的触摸屏

    连接操作系统的输入设备,可不止一种,也许是一个标准PS/2键盘,也许是一个USB鼠标,或者是一块触摸屏,甚至是一个游戏机摇杆,Linux在处理这些纷繁各异的输入设备的时候,采用的办法还是找中间层来屏蔽各种细节,请看下图: 在Linux的内核中,对输入设备的使用,实际

    2024年02月05日
    浏览(41)
  • 基于GEC6818开发板的相册

    1.图片的显示 2.上滑,下滑,左滑,右滑切换图片 3.幻灯片播放相册 4.显示图片的缩略图 pic.h main.c 获取滑动方向,控制图片切换 幻灯片播放 保存图片到链表 显示图片 触屏判断

    2024年02月12日
    浏览(28)
  • GEC6818科大讯飞离线语音识别

    在下载SDK时需要注意选择Linux的版本!! 在官网下载离线语音的包,解压后可以得到下面的一些文件夹: 解压后你需要知道自己命令放在下面的文件夹中 关于Make file文件: 关于asr_offline_sample.c文件: asr_offline_sample.c 文件是我们更改为自己的逻辑的文件,但是也不需要都了解

    2024年01月17日
    浏览(42)
  • 基于GEC6818的智能火锅点餐系统

    本次项目开发环境:gec6818,QT5.14.2,SecureCRT。 所使用的相关技术:c/s架构,STL库,C++封装,标准化代码编写 实现的功能:用户登录页面,食品分区在不同页面,用户点餐页面,用户买单页面,数据整合并发送至后台,后台成功接受数据,返回主页面。 1、gec6818开发板的特点

    2024年02月12日
    浏览(23)
  • 粤嵌实习智能家居day5--基于6818开发板

    # 传感器数据的实时获取及实时显示     接线方式:         ARM板                    GY39         Vcc 接电源   ---------   Vcc         GND 接地     --------    GND         TX  发送数据线 --------   RX(DR)         Rx  接收数据线 --------   Tx(CT)         传感器和开发板的通信

    2024年02月11日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包