基于GEC6818的智能火锅点餐系统

这篇具有很好参考价值的文章主要介绍了基于GEC6818的智能火锅点餐系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本次项目开发环境:gec6818,QT5.14.2,SecureCRT。

所使用的相关技术:c/s架构,STL库,C++封装,标准化代码编写

实现的功能:用户登录页面,食品分区在不同页面,用户点餐页面,用户买单页面,数据整合并发送至后台,后台成功接受数据,返回主页面。

1、gec6818开发板的特点(性能强大):

        a:GEC6818开发平台,核心板采用10层板工艺设计,确保稳定可靠。

        b:该平台搭载三星Cortex-A53系列高性能八核处理器S5P6818,最高主频高达1.4GHz。

        c:开发板留有丰富的外设,支持千兆以太网、板载LVDS接口、MIPI接口、USB接口等。

        d:可应用于嵌入式Linux和Android等操作系统的驱动、应用开发。

        c:搭载7.0英寸LCD屏支持32位真彩色,触摸屏使用电容屏触点多达1,536,000个以上。

gec6818,项目,arm开发,tcp/ip,list

2、连接电源,串口和网络接口,通过SecureCRT来设置开发板。

3、编写代码:

        思路:初始化显示屏和触摸屏,生成自定义坐标X轴Y轴,根据触摸坐标发出的信号来响应事件。通过STL库中的正向迭代器使文件中的图片按顺序输出,在通过TCP通信发送整合的数据到服务器。为防止项目代码又长又丑,采用分文件编写,精简,直观也方便查询。

        注意:本次项目只展现部分重要代码

main.cpp

#include <iostream>
using namespace std;
#include "application.h"

int main()
{
    Application a1;    //自定义开始状态

    a1.exec();    //只做一个项目入口

    return 0;
}

application.cpp


#include "application.h"

Application::Application()
{
    m_state = E_APP_STATE_START;        //初始化状态,使其固定在开始状态
}

//这里设计的是按流程一步步往下走
int Application::exec()
{
    while(1)
    {
        switch (m_state) {
            case E_APP_STATE_NONE:
                break;
            case E_APP_STATE_START://进入开始画面的状态
                {
                     staticInterface s1;
                     s1.show();
                }
                m_state = E_APP_STATE_LOGIN;
                break;
            case E_APP_STATE_LOGIN://进入登录界面的状态
                {
                    LoginInterface l1;
                    l1.show();
                }
                m_state = E_APP_STATE_MAIN;
                break;
            case E_APP_STATE_MAIN://进入主界面的状态
                {
                    MainWidget m1;
                    m1.show();
                }
                 m_state = E_APP_STATE_LOGIN;
                break;
        }
    }
}

  staticInterface.cpp

#include "staticinterface.h"

在.h文件中类私有成员里面定义的容器
//std::list<std::string> m_bmpList; //定义容器


staticInterface::staticInterface()
{
    //初始化容器,将staticBmp文件夹里面的图片按顺序放入容器中
    m_bmpList = Dir::entryList("./bmp/staticBmp");
}

void staticInterface::show()
{
    Bmp b1;
    //使用常量正向迭代器
    for(std::list<std::string>::iterator it = m_bmpList.begin() ; it!=m_bmpList.end(); it++)
    {
        b1.setFileName(*it);
        b1.show();       //将容器中的图片一个个显示,1秒的间隔,形成一个简单的开始动画动图效果

        sleep(1);
    }
}

 登录页面代码过长切基本上重复代码,不做演示,其原理是固定x轴和y轴的大小,当点击时触发信号,显示数字并记录在类内中,同时设置9个数字也就是9个x轴和y轴的大小,点击设置好的确定按钮区,即可进入下一个页面。

maininterface.cpp

void MainWidget::show()
{
    //显示主界面图片
    Bmp b1("./bmp/main.bmp");
    b1.show();
    //显示菜单界面图片
    m_menuWidget->show();

    SendData s1;

    while(1){
        int x,y;
        //等待触摸屏 触摸
        TouchSreen touch;
        touch.waitTouch(x,y);

        if(x>=0 && x<800 && y>=0 && y<480) //点击到了  菜单界面区域
        {
            std::cout<<"点击到了菜单界面区域...."<<std::endl;
            //判断当前点击的是 哪个  菜单界面的按钮,然后切换不同的  页面
            //这里采用了枚举
            m_menuWidget->setPageWidget(x,y);

        }
    }
}
menuinterface.cpp
int MenuInterface::setPageWidget(int x, int y)
{
    int m_page;
    bool isExit = false;
    //根据点击的不同 坐标 ,判断点击的是哪个按钮,然后进行  换页
    if(x>=0 && x<=120 && y>=0 && y<100) //第一页  --缩略图
    {
        std::cout<<"肉太特么香了"<<std::endl;
        m_page = E_MENU_PAGE1;
    }
    else if(x>=0 && x<=120 && y>=100 && y<200)//第二页
    {
        std::cout<<"蔬菜太特么健康了"<<std::endl;
        m_page = E_MENU_PAGE2;
    }
    else if(x>=0 && x<=120 && y>=200 && y<300)//第3页
    {
        std::cout<<"水果太特么好看了"<<std::endl;
        m_page = E_MENU_PAGE3;
    }
    else if(x>=0 && x<=120 && y>=300 && y<400)//第4页
    {
        std::cout<<"饮料太特么爽了"<<std::endl;
        m_page = E_MENU_PAGE4;
    }
    else if(x>=740 && x<800 && y>=420 && y<480)//结算页面
    {
        std::cout<<"结算中......."<<std::endl;
        m_page = E_MENU_PAGE5;
    }
}
//后面有做一个图片缩略图,就不展示了

只展示一个,展示肉区

page1interface.cpp

void Page1Interface::show()
{
    //在 界面的右边  120 ~800 这个区域显示 四张  缩小后的图片
    int startX = 200;
    int startY = 50;

    int i=0;

    //使用stl库的正向迭代器顺序输出图片
    for(std::list<std::string>::iterator it=m_bmpList.begin(); it!=m_bmpList.end(); it++,i++)
    {

        Bmp b1(it->data());

        switch (i%4) {
            case 0:
                b1.scaleShow(startX,startY);
                break;
            case 1:
                b1.scaleShow(startX+200+100,startY);
                break;
            case 2:
                b1.scaleShow(startX,startY+120+80);
                break;
            case 3:
                b1.scaleShow(startX+200+100,startY+120+80);
                break;
        }
    }
}

//设置加菜减菜图片设计
void Page1Interface::addShow()
{
    Bmp b1("./bmp/jian.bmp");   //60*60
    b1.show(200,178);
    Bmp b2("./bmp/jia.bmp");    //60*60
    b2.show(340,178);
    Bmp b3("./bmp/jian.bmp");
    b3.show(500,178);
    Bmp b4("./bmp/jia.bmp");
    b4.show(640,178);
    Bmp b5("./bmp/jian.bmp");
    b5.show(200,(178+120+16+60));
    Bmp b6("./bmp/jia.bmp");
    b6.show(340,(178+120+16+60));
    Bmp b7("./bmp/jian.bmp");
    b7.show(500,(178+120+16+60));
    Bmp b8("./bmp/jia.bmp");
    b8.show(640,(178+120+16+60));

}



 然后就是计算肉区点餐的数量,设置每个菜的价格,同一保存至一个类中,由于代码过长且重复,暂不予展示。其他菜区也是同样的操作不展示。

初始化TCP通信,发送数据

    //创建接口
    t1.applyInterface();        //封装成函数

    ssize_t wr_size;
    wr_size = write(t1.return_skt_fd(), buffer, strlen(buffer));//接受数据,拥有阻塞,如果没有数据将会阻塞在这里
    if(wr_size == -1)//出错了
    {
        perror("读取出错,那他走\n");
        return -1;
    }

    //关闭接口
    t1.closeCustomer();

此时后台成功接受数据

最后一步,将代码烧写进开发板

        通过SecureCRT串口连接开发板,传输编译好的arm文件(arm-linux-g++),再将项目所需图片下载进开发板,运行,实验,无BUG,数据接受完整,ok交差。

项目视频演示连接:https://live.csdn.net/v/287185文章来源地址https://www.toymoban.com/news/detail-521091.html

到了这里,关于基于GEC6818的智能火锅点餐系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

    项目设计开发环境: (1)VMware Workstation Pro软件 (2)ubuntu12 .04 (能交叉编译就行) (3)SecureCRT  (4)代码编译器(notepad++/Visual Studio Code) 项目功能描述: (1)幻灯片:开始进行图片幻灯片显示,结束后进入RFID刷卡开锁界面。 (2)RFID:刷卡成功和刷卡失败两种状态(

    2024年02月04日
    浏览(22)
  • 基于粤嵌gec6818开发板嵌入式开发电子相册,音乐播放,视频播放,2048游戏

    实现功能:本系统需要使用粤嵌的GEC-6818开发板设计一款娱乐影音系统,其中包括图片显示(相册)、音乐播放、视频播放,游戏四个部分,在每个部分内部,具有操控各个部分的功能触摸按键。本系统还应具有蓝牙远程操控功能。 具体要求:对使用者具有良好的可视交互体

    2024年02月13日
    浏览(45)
  • LCD(GEC6818)

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

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

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

    2024年01月17日
    浏览(42)
  • 粤嵌Linux GEC6818开发板实现电子相册

    最近学校要求使用粤嵌的开发板实现电子相册,具体的功能要有点击特定的区域实现上一张、下一张、自动播放图片、黑屏退出应用程序、左右滑动切换图片相关功能。其中涉及到的知识点也比较多(文件IO、内存映射、触摸屏、bmp图片格式、进程、线程创建和同步、字符串

    2024年02月04日
    浏览(31)
  • 语音识别开源库 FastARS 移植到GEC6818开发版

    移植 安装fftw3 移植 OpenBLAS 移植 FastARS 3.编写交叉编译的cmake 脚本 4.生成makefile 脚本 5.编译安装 6.进入 examples 目录看看是否成功生成   1.把生成的 k2_rnnt2_cli 下载到开发板的 /bin 目录 2.把所有的库文件下载到开发板的 /lib 目录     3.下载语音网络模型到开发版中 (模型转换请看

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

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

    2024年02月16日
    浏览(95)
  • 学习笔记(1)——粤嵌gec6818实现电子相册,音乐播放器,视频播放器。

    (1)设计一个初始界面,并且设置电子相册,音乐播放器,视频播放器三个触摸按键。 (2)电子相册——能够实现相册的幻灯片功能,实现相册左右滑动切换相片。 (3)音乐播放器实现——切歌,播放和暂停功能。 (4)视频播放器实现——播放、暂停、音量大小、快进倒

    2024年02月11日
    浏览(38)
  • GEC6818网络编程——服务器端与客户端tcp的双向通信

    网络编程之实现服务器和客户端的tcp双向通信,前面是双向通信的详细流程介绍,后面附上完整的代码o(  ̄▽ ̄ )ブ 1.1 服务器端双向通信的详细流程叙述 创建TCP套接字 : 使用 socket 函数创建一个TCP套接字。这里使用了IPv4地址族 AF_INET 和流式套接字 SOCK_STREAM 。 绑定IP和端口

    2024年02月21日
    浏览(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)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包