python 슈퍼마켓 스 캔 기 요금 계산 실현

python 은 슈퍼마켓 스 캔 기기 의 비용 계산 을 실현 하 는 절 차 는 주로 슈퍼마켓 스 캔 기 를 이용 하여 상품 의 바 코드 를 스 캔 하고 상품 정 보 를 읽 으 며 비용 계산 기능 을 실현 합 니 다.주로 사용 되 는 기술 은 직렬 통신,데이터 베 이 스 를 조작 하 는 것 입 니 다.필요 한 환경 은 python 환경,my sql,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 을 배우 기 시 작 했 기 때문에 코드 규범 상 잘 하지 못 했 습 니 다.마지막 프로그램의 운행 은 다음 과 같 습 니 다.

그 중에서 제 프로그램 에서 중국 어 를 사용 할 수 있 습 니 다.바로 어 지 러 운 코드 를 표시 하 는 것 입 니 다)이 문 제 는 제 가 앞의 블 로그 에서 이야기 한 적 이 있 습 니 다.데이터 베 이 스 를 처리 하고 데이터 베 이 스 를 통 해 읽 은 데 이 터 를 인 코딩 하 는 방식 이 필요 합 니 다.만약 여러분 이 무슨 잘못 을 알 아 차 렸 거나 의견 이 있 으 면 여러분 의 메 시 지 를 즐겁게 드 세 요.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기