毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 计算机安全 >> 正文

基于zigbee的无线电子点菜系统 第11页

更新时间:2014-6-28:  来源:毕业论文

基于zigbee的无线电子点菜系统 第11页|
图5-6 串口接收流程图

5.3无线点菜系统后台PC功能实现
 在PC后台上主要有两大功能,就是结账和统计餐厅一个月内的营业情况。
 在PC机上装有SQLite数据库,在该数据库中建立一张和点菜终端一摸一样的表,PC机可以通过从点菜终端发过来的ID进行查表,主要是调用SQLite提供的函数sqlite3_get_table(db,sql,&foods,&row,&column,&errmsg),sql为要查询的SQL语句。根据ID查询出来的菜的价格存储到一个数组里,当顾客要结账时就对该数据的成员进行累加,得出的金额就是顾客所付的金额。

5.4本章小结
 在本章主要论述了如何实现点菜系统的功能。主要分三大模块开实现:点菜终端实现、ZigBee通讯模块实现、后台PC机模块实现。在三大模块中重点是讲述点菜终端的实现。在点菜终端模块中可以独立出三大子模块的实现分别是:嵌入式数据库SQLite实现、MiniGui模块实现、PXA270实现。

6  总结与展望.
 基于ZigBee无线电子点菜系统分成前端和后台两大部分,在前端部分中主要有点菜、呼叫酒水,取消预点菜和酒水,以及发送预点菜和酒水到后台PC机,所以的前端功能都是通过点击触摸屏来实现的。后台PC端具有结账和统计功能。在整个无线点菜系统中,重点是在前端点菜终端的实现,其中在点菜终端中难点是MiniGui界面编写、移植和 MiniGui在PXA270上实现触摸屏。在经过了一个多月的苦战,我终于把这些难点一一击破。在这段时间里,曾经遇到了很多难题,尝试了很多失败,在困难和挫折面前曾经想过要放弃,可就在我想要放弃的那一霎那:如果我想在放弃了那么我将带着我遗憾毕业,带着我的挫败感毕业,大学四年我真的不想就带着这种心里阴影毕业,如果我不放弃继续坚持下去,即使我没做出来,那也证明我是努力过,为着我的毕业作品奋斗过,那毕业时我也不会有什么遗憾,我可以骄傲地毕业。就在这种心理的作用下,我每天都除了睡觉时间,其余时间都是在做我的毕业作品。在MiniGui触摸屏那一模块中,我花了有差不多三个星期去搞,每天早出晚归留在实验室做我的毕业作品。晚上回到宿舍也继续苦干到两三点。最后老天不负苦心人,总于让我实现了MiniGui在PXA270上的触摸屏功能。在接下来的工作中我就开始修改我的点菜界面,开始的界面做得比较简单,后来在老师的指导下,我开始重新去规划我的点菜终端界面,让它实现更多的功能,以及更完善更美观。
在整个做无线点菜系统的过程中,我不但学会了很多嵌入式的知识,更重要的是我在学习的过程中领悟到了很多人生宝贵的真理。只要你不放弃,永远都会有奇迹发生,只要有毅力有信心有恒心,面对的苦难都不是困难,这就证明:一分耕耘一分收获。
  在本人毕业设计—基于ZigBee无线电子点菜系统中,基本已经实现了点菜,呼叫酒水以及结账等功能,能够成功地把所点的菜以及酒水等信息通过ZigBee无线设备发送到后台PC机上,在后台PC机可以对ZigBee发送过来的信息进行查表处理。整个系统可以逼真地模拟顾客在餐厅点菜的流程,体现了高新技术服务于人。在该系统中有些地方时需要完善。第一MiniGui的软键盘的实现,这是为了方便顾在点同种菜、酒水的时候可以输入份数,而不用一个个地点。第二MiniGui触摸屏的校正问题,需要有更精确的算法。
参考文献
 [1]周立功:《ARM嵌入式MiniGui初步与应用开发范例》[M],北京航空航天大学出版社
[2]石秀名 魏洪兴:《嵌入式系统原理与应用》[M],北京航空航天大学出版社
[3]孟庆昌 牛欣源:《Linux 教程》[M],电子工业出版社
[4]魏永明:《嵌入式软件开发及C语言实现-MiniGui剖析》[M],电子工业出版社
[5]《MiniGui编程指南》[-EB/OL],北京飞漫软件技术有限公司
    [6]何玉洁:《数据库原理与应用》[M],机械工业出版社
 [7]李洋 :《UML和模式应用》[M],机械工业出版社
 [8]周明德:《微机原理与接口技术》[M],人民邮电出版社
[9]严蔚敏 吴伟民:《数据结构》[M],清华大学出版社
[10]王军 崔同良:《ADO.NET》[M], 程序设计教程与实验
附  录
menu.c 代码如下:
/////////////////////////////////////////////////////////////////////数据库建立

static void open_sqlite()
{
               int rc;
  rc = sqlite3_open("dish.db", &db);
  if( rc )
  {
   fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
   sqlite3_close(db);
   exit(1);
  }
  //else printf("OK\n");
}
static void init(char ***out)
{       
          
}
//////////////////////////////////////////////////////////////////////////////////////////////////////

static void clean_up(HWND hWnd)
{
}
static void show_win(HWND hWnd,int page)   //显示窗口
{       
    
}
////////////////////////////////////////////////////////////////////////////////////////////////////填充到列表框中
static void initdish(HWND hDlg,char *foodstring,char **out)
{
 
}

static void fill_food (HWND hDlg,char **dish,char **dish_tosec)
{               
                  
}

//菜系回调函数
static void foods_notif_proc(HWND hwnd,int id,int nc,DWORD add_data)
{            
  if(nc==LBN_CLICKED||nc==LBN_ENTER)
  {       
   int clickn=SendMessage(hwnd,LB_GETCURSEL,0,0L);
    if(clickn>=0)
              {
     char string[50];                  SendMessage(hwnd,LB_GETTEXT,clickn,(LPARAM)string);
     food=string;
     initdish(GetParent(hwnd),string,dish_tosec);
     fill_food(GetParent(hwnd),dish,dish_tosec);
                                       
    }
  
               }

}

static void calue(HWND hDlg) //计算金额
{
     
}
static void  foods_notif_add (HWND hWnd,int id,int nc,DWORD add_data)
{          
       char *errmsg=0;
              char value[100];
              open_sqlite();
              sprintf(value,"INSERT INTO  t1 VALUES('%s')",dish_tosec[next]);
              sqlite3_exec(db,value,0,0,&errmsg);
              
               SendDlgItemMessage(GetParent(hWnd),IDL_Add,LB_ADDSTRING,0,dish_tosec[next]);
              calue(hWnd);
}
static void  foods_notif_next(HWND hDlg,int id,WPARAM nc,DWORD add_data)
{                             
                               
         HDC hdc;
                   RECT rect;  
    char **result,**result1;
    char *errmsg,*errmsg1;
                   int nrow,nrow1,ncolumn,ncolumn1;   
     char value[100],value1[100];
                                   next++;
                                   if(next>=(hang+1)*lie)
                                         next=1;  
                            sprintf(value,"select b from cdish where dishname='%s'",dish_tosec[next]);
              sqlite3_get_table(db,value,&result,&nrow,&ncolumn,&errmsg );
       sprintf(value1,"select b1 from cdish where dishname='%s'",dish_tosec[next]);
            sqlite3_get_table(db,value1,&result1,&nrow1,&ncolumn1,&errmsg1 );
                      
                   hdc = GetClientDC(GetParent(hDlg));
    rect.left = 200+50;
    rect.right =rect.left+150;
                  rect.top = 90;
    rect.bottom = rect.top+110;
    SetBkMode(hdc,BM_TRANSPARENT);                  InvalidateRect (GetParent(hDlg),&rect,TRUE);
     if(LoadBitmap(hdc,&delet,result[1]))
       DrawText(hdc,"不能打开图片 ",-1,&rect,DT_LEFT) ;         
     else
            FillBoxWithBitmap(hdc, 200+50, 90, 150, 110,&delet);
                  ReleaseDC(hdc);
                  UnloadBitmap (&delet);   
                
      hdc = GetClientDC(GetParent(hDlg));
    rect.left = 360+50;
    rect.right =rect.left+150;
                  rect.top = 90;
    rect.bottom = rect.top+110;
    SetBkMode(hdc,BM_TRANSPARENT);                  InvalidateRect (GetParent(hDlg),&rect,TRUE);
    DrawText(hdc,result1[1],-1,&rect,DT_LEFT);
           ReleaseDC(hdc); 
                             

                         if(next>(hang+1)*lie)
                          next=1;
      
}

static void foods_notif_chose(HWND hwnd,int id,int nc,DWORD add_data)
{
   
               if(nc==LBN_CLICKED||nc==LBN_ENTER)
   {       
    int clickn=SendMessage(hwnd,LB_GETCURSEL,0,0L);
     if(clickn>=0)
              {
     char string[50];//如果改成指针,出现内存错误,花了三个小时查找!
                  SendMessage(hwnd,LB_GETTEXT,clickn,(LPARAM)del);
 

 << 上一页  [11] [12] [13] 下一页

基于zigbee的无线电子点菜系统 第11页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。