この記事では、主にスーパーマーケットのスキャナー請求を実装するためのPythonを詳しく紹介します。これには特定の参考値があります。興味のある友人はそれを参照してください。
スーパーマーケットのスキャナー請求を実装するためのPythonのプログラムは、主にスーパーマーケットのスキャナーを使用して商品のバーコードをスキャンします。 、製品情報を読み取り、課金機能を実装します。使用される主なテクノロジーはシリアル通信とデータベース操作です。必要な環境には、Python 環境、mysql、Python ライブラリ (シリアル、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を学び始めたばかりなので、コード仕様がまだあまり良くありませんが、最終的なプログラムは次のように実行されます:
私のプログラムでは中国語も使用できます(最初は表示されませんでしたが、文字化けが表示されただけです)。この問題については、データベースの処理と、データベースから読み取ったデータのエンコード方法が必要です。 。間違いを見つけた場合やコメントがある場合は、メッセージを残してください。 関連する推奨事項:以上がPython でスーパーマーケットのスキャナーの課金を実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。