python实现超市扫码仪计费
作者:_从未止步 发布时间:2023-01-11 03:53:31
标签:python,扫码仪
python实现超市扫码仪计费的程序主要是使用超市扫码仪扫商品的条形码,读取商品信息,实现计费功能。主要用到的技术是串口通信,数据库的操作,需要的环境包括:python环境,mysql,python库(serial,MySQLdb)等等。
这个程序的主要过程是:使用扫码仪扫描商品条形码,通过串口通信获取商品条形码,通过该条形码获取商品信息,显示该商品信息并统计总费用。其中商品信息保存在数据库中,可事先导入或者手动导入商品信息,而我的在这里是事先导入的(也可以边扫边倒入信息),导入到数据库中的信息如下:
程序代码如下:
#coding:utf8
import serial
import MySQLdb
ser = serial.Serial('COM5',9600)
#获取一行信息
def recv(serial):
data = ''
while serial.inWaiting() > 0:
data += serial.read(1)
return data
def GetInfo(db,data):
data = data[0:-1] #最后面有一个空格,需要去掉,否则会影响读数据库
print data
ret = 0.0
try:
cur = db.cursor()
sql="set names utf8" #这一条语句是告诉数据库编码方式为 utf8
cur.execute(sql)
sql = "select * from productinfo where code=%s"%(data)
#print sql
cur.execute(sql)
#sql = "select * from productinfo where(code=%s)"
#cur.execute(sql,data)
results = cur.fetchall()
#print results
for row in results:
code = row[0]
#print code
price = row[1]
#print price
info = row[2]
#print info
ret = price
#解析出来的信息可能为中文,直接print肯定是不行的,需要转化为windows下的GBK编码
print 'coding=',row[0],'price=',row[1],'info=',info.decode('UTF-8').encode('GBK')
except:
print 'it has no infomation about %s'%(data)
return ret
db = MySQLdb.connect('localhost','root','',"zou",3306,'utf8')
cursor = db.cursor()
#cursor.execute("DROP TABLE IF EXISTS productinfo")
'''''
sql="""CREATE TABLE productinfo(
code CHAR(18),
price double(9,2),
info CHAR(25))"""
cursor.execute(sql)
'''
sum = 0.0
while True:
data = recv(ser)
if data != '':
#print data
sum += GetInfo(db,data)
print '总付款:',sum
db.close()
ser.close()
由于刚刚开始学习python,所以代码规范上做的还不是很好,希望大家多多指出,最后程序的运行如下:
其中我的程序中可以使用中文(刚刚开始不是显示?就是显示乱码),这个问题我在前面的博客中谈论过,需要处理数据库以及从数据库读取的数据的编码方式。若是大家看出什么错误或是有意见的话,欢饮大家留言。
来源:https://blog.csdn.net/zr1076311296/article/details/51759480
0
投稿
猜你喜欢
- 我们都知道有很多的非常著名的注册服务器,例如: Consul、ZooKeeper、etcd,甚至借助于redis完成服务注册发现。但是本篇文
- Ajax(Asynchronous Javascript And XML)翻译成英文就是“异步Javascript和XML”。即用Javas
- Opera, 作为 A-Grade 浏览器,在现在的前端开发中务必支持。它很优秀,很不幸,bug是每个浏览器都不可避免的问题,Opera亦难
- FCKeditor是目前互联网上最好的在线编辑器,功能强大,支持IE 5.5+ (Windows), Fire
- 阅读上一节:美化段落文本 Ⅰweb标准知识——美化段落文本 Ⅱ懒,可能是唯一解释为什么这么长时间才写这一篇的主要原因。不述详情,以此责心。上
- 将PHP的执行页面预先转换成HTML,是所谓的PHP静态化方法之一。其他还有模板替换法,opcache等方法。静态化的作用:提高网站的响应速
- 首先,把这个“功能”包含到页首:<!--#include virtual="/readini/inifile.in
- 本文实例讲述了PHP中PDO事务处理操作。分享给大家供大家参考,具体如下:概要:将多条sql操作(增删改)作为一个操作单元,要么都成功,要么
- 本文实例讲述了PHP登录验证功能。分享给大家供大家参考,具体如下:登录界面具体实现方法如下:login.html<!DOCTYPE h
- gojson是快速解析json数据的一个golang包,你使用它可以快速的查找json内的数据安装 go get github.com/wi
- 每个电子商务数据分析师必须掌握的一项数据聚类技能如果你是一名在电子商务公司工作的数据分析师,从客户数据中挖掘潜在价值,来提高客户留存率很可能
- 代码如下: <!--[if IE 6]><script type="text/javascript"&
- 1. 安装 Sublime Text 3虽然现在的 Sublime 3 还处于 beta 阶段, 但已经非常稳定了, 而且速度比 Subli
- 1、设置字体、风格代码主题选择Monokai会是彩色的代码。2、配置CI代码提示<1>下载代码提示项目:https://gith
- 一、Sql Server中的日期与时间函数 1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加
- 思路改进原博主文章(Python GUI–Tkinter简单实现个性签名设计)的代码,原先的代码是基于Python2的,我这份代码基于Pyt
- Django带来了一个高级的聚合生成框架,它使得创建RSS和Atom feeds变得非常容易。什么是RSS? 什么是Atom?RSS和Ato
- 看到很多站长工具网,都提供了通过域名获取网站IP的方法。自己也想做一个,网上查了不少代码。有说用WSHSHELL,也有说用ASPPING组件
- 什么是组播点对点连接可以处理很多通信需求,不过随着直接连接数的增加,在多对通信方之间传递相同的消息会变得越来越困难。单独地向各个接收方发送消
- check.asp 代码如下:<% '''''''''