python實現(xiàn)超市掃碼儀計費
python實現(xiàn)超市掃碼儀計費的程序主要是使用超市掃碼儀掃商品的條形碼,讀取商品信息,實現(xiàn)計費功能。主要用到的技術是串口通信,數(shù)據(jù)庫的操作,需要的環(huán)境包括:python環(huán)境,mysql,python庫(serial,MySQLdb)等等。
這個程序的主要過程是:使用掃碼儀掃描商品條形碼,通過串口通信獲取商品條形碼,通過該條形碼獲取商品信息,顯示該商品信息并統(tǒng)計總費用。其中商品信息保存在數(shù)據(jù)庫中,可事先導入或者手動導入商品信息,而我的在這里是事先導入的(也可以邊掃邊倒入信息),導入到數(shù)據(jù)庫中的信息如下:
程序代碼如下:
#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] #最后面有一個空格,需要去掉,否則會影響讀數(shù)據(jù)庫 print data ret = 0.0 try: cur = db.cursor() sql="set names utf8" #這一條語句是告訴數(shù)據(jù)庫編碼方式為 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肯定是不行的,需要轉(zhuǎn)化為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,所以代碼規(guī)范上做的還不是很好,希望大家多多指出,最后程序的運行如下:
其中我的程序中可以使用中文(剛剛開始不是顯示?就是顯示亂碼),這個問題我在前面的博客中談論過,需要處理數(shù)據(jù)庫以及從數(shù)據(jù)庫讀取的數(shù)據(jù)的編碼方式。若是大家看出什么錯誤或是有意見的話,歡飲大家留言。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
python+mongodb數(shù)據(jù)抓取詳細介紹
這篇文章主要介紹了python+mongodb數(shù)據(jù)抓取詳細介紹,具有一定參考價值,需要的朋友可以了解下。2017-10-10基于django micro搭建網(wǎng)站實現(xiàn)加水印功能
這篇文章主要介紹了基于django micro搭建網(wǎng)站實現(xiàn)加水印功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05詳解pyqt中解決國際化tr()函數(shù)不起作用的問題
本文主要介紹了pyqt中解決國際化tr()函數(shù)不起作用的問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02Python如何使用Gitlab API實現(xiàn)批量的合并分支
這篇文章主要介紹了Python如何使用Gitlab API實現(xiàn)批量的合并分支,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11