嵌入式蓝牙点菜系统
初级状态:
一对多的方式,有2种系统,一个服务器端,多个手持终端,项目中,服务器端可以用一台电脑模拟,手持终端是用实验箱模拟,一个实验箱对应一个手持终端。由于硬件受限,我们只要完成一对一的方式,即只有一个手持终端,也就是一个实验箱和一个电脑主机,两者采用直连网线相连。
实验箱端:
1. 采用ARM+Linux平台
2. 需要有外接键盘模拟手持终端的输入,支持0~9数字输入,支持某些扩展字符输入,比如OK键,Cancel键,这个可以由同学们自由发挥。
3. 完成外接键盘的驱动,这可以作为第一个模块,是信息的输入模块。
4. 把键盘输入的信息,很可能是菜的一个编号,同时可能有座位的编号,进行封装,发送出去,注意,这里可以使用嵌入式数据库查询进行转化,也可以只发送编码,转化的过程留给主机端完成,如果都有数据库,就要小心同步问题,建议只有一段有数据库,如果是采用嵌入式数据库,手持终端可以及时打印出编码对应的菜名以便顾客确认,更加能增加客户的满意度。
5. 如果实验箱端含数据库,要注意提供增加删除的功能。
6. 信息在传送过程中,可以考虑自定义的协议传送。实验箱端完成封包发送,使用Socket编程实现,优选TCP协议作为传输层协议。
主机端:
1. 采用x86+Window平台
2. 采用QT图形系统实现订菜情况的显示,查询功能
3. 接收到实验箱端的信息后,能进行解析,获取菜名,座位号,订菜时间,价格等重要信息,并传递给应用层。
4. 要考虑先进先出,菜的排队系统,让先点的人能尽量先获得菜,也要考虑下同样的菜是否可以一起通知厨房,同学们自由发挥。
5. 系统要能自动统计每天的收入,各个菜被点的次数,月收入等信息,以便管理人员能根据信息来调整菜单,淘汰一些没人点的菜。
6. 如果数据库在主机端,要注意能增加删除等功能。
7. 注意,有的菜可能有2种价格,普通价和会员价,这些小细节同学们可以自由发挥。
最后同学们完成后的一个基本情况应该包括:
键盘驱动模块,负责点菜信息的录入,服务员根据顾客的点单情况录入一些重要信息,比如,点几个菜,点菜时间,座位号,点菜员编号。
信息传输模块,负责主机端和实验箱的通讯,采用Socket编程,自定义协议结构。
信息输出模块,在主机端,让餐厅经理即使看到所有的点菜情况,能统计各种信息,方便管理者总结调整。
中级状态:
相比于初级状态,中级状态应该能部分放弃以太网,可以采用蓝牙进行通讯传输,达到一对多的效果。相比于初级状态,需要增加的东西:
1. 蓝牙模块,负责通讯,需要有驱动支持,能搜索范围内的其它蓝牙设备。
2. 需要有一个实验箱作为主机端的一个中转,可以认为是服务端的实验箱,它把蓝牙通讯获取的信息通过直连网线传送给主机系统。
3. 要考虑蓝牙协议的特性,注意一对多蓝牙设备连接的问题,不是想象那么简单的,要注意怎么能让系统实现这样类似的功能,需要同学们能参考一些资料。
最后同学们完成的一个基本情况应该是:
相比于初级,需要增加一个蓝牙模块,蓝牙模块最终实现后,有可能对于系统来说是个串口,也可以使用简单的字符设备作为流输入输出,还需要同学们查询相关资料,学习完成。
中级相比于初级,在调试中可能会遇到很多问题,需要注意,因为蓝牙一般是点对点传输,要模拟出一对多,势必会有很多同步问题,需要考虑。
最后完成的状态应该是,一个实验箱作为主机端,并用网线连接到一台电脑,其它2个以上的实验箱模拟成手持终端,这些实验箱都可以用键盘输入来点菜,能输入餐桌号,菜名,时间等信息。测试中要同时用2个以上的环境进行点菜,并能保证不出现问题。点好的菜能在主机的电脑中正确显示出来,包括相关所有信息。
高级状态:
完成到中级状态的要求,基本已经完成一个嵌入式蓝牙点菜系统了,但还有更多的东西可以在高级状态中进行考虑,同学们也可以选择一些,觉得比较容易实现的,去实现它们。
高级状态主要是要发挥同学们的主观能动性,设身处地得为客户着想,站在客户的角度去思考一些问题,这也是作为研发人员的比较高的境界。我列举一些供大家参考:
1. 我们的客户希望厨房也应该有一个终端能及时显示菜单信息,而且在某些菜没有材料可以做的情况下,厨房能及时通知主机,能通知点菜的手持终端。
2. 我们的客户是一个多功能餐厅,它不但提供中餐,还随时提供冷饮和面点,冷饮台,面点房也需要一个终端能显示客户的需求,当然这种地方一般是不存在缺料的情况的。
3. 我们的客户认为,他们的客人很纠结,经常要更换菜单,或者吃着吃着,需要加个菜,而且这些加的菜必须加急,要排到其它客人菜的前面,我们的系统应该能辅助我们的客户满足他们客人的这些变更要求,当然,不能造成餐厅的损失。
4. 我们客户的客人有时候会要求点一些餐厅没有在菜单上的东西,我们餐厅也想做这样的生意,
1