Commit 2e33aa18 董杰

1.增加一个状态灯,双面三色灯兼容,2.增加选择库位打印二维码功能

1 个父辈 faf29547
...@@ -34,5 +34,5 @@ def get_locale(): ...@@ -34,5 +34,5 @@ def get_locale():
return request.accept_languages.best_match(LANGUAGES.keys()) return request.accept_languages.best_match(LANGUAGES.keys())
from app import routes,post,led_strip,driver_gpio,autoback from app import routes,post,led_strip,driver_gpio,autoback,qr_code
# return app # return app
\ No newline at end of file \ No newline at end of file
import os
import sys
import qrcode
# from PIL import Image
from PIL import Image, ImageDraw, ImageFont, ImageFilter
import numpy
from app import app
from flask import jsonify,render_template,request,send_from_directory
import matplotlib.font_manager as fm
import logging
code_path = '/prog/smartshelf/app/static/uploads'
def make_qrcode(file_code):
# for line in all_data:
# A_NUMBER = line[0]
# c_start = int(line[1])
# c_stop = int(line[2])
# dirs_str = deal_line_code(project_number,A_NUMBER,c_start,c_stop)
# resize(project_number,dirs_str)
# current_path_file=os.path.join(code_path,t_file)
qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=0)
qr.add_data(file_code)
qr.make(fit=True)
img = qr.make_image()
file = "{}/{}.png".format(code_path,file_code)
img.save(file)
# img1.save("./{}_qr_jpg/{}/{}.jpg".format(project_number,dirs_str,filename[:-4]))
return True
def resize(file_code):
# path = './{}_qr_png/{}'.format(project_number,dirs_str)
# path_list = os.listdir(path)
img1 = Image.open("{}/{}.png".format(code_path,file_code))
# img1 = Image.open("E:/qr_png/code/0/{}.png".format(filename))
img1 = img1.resize((300, 300),Image.ANTIALIAS)
# print (filename[:-4])
img1.save("{}/{}.jpg".format(code_path,file_code))
def deal_number(file_code):
print (file_code)
color = "White"
img_str = Image.new("RGB",(480,90),color)
img_str.save("{}/temp_number.jpg".format(code_path))
im = Image.open("{}/temp_number.jpg".format(code_path))
# font = ImageFont.truetype('simsun.ttc',55)
# font = ImageFont.truetype(fm.findfont(fm.FontProperties(family='DejaVu Sans')),63)
if os.path.isfile("/usr/share/fonts/truetype/dejavu/simsun.ttf"):
font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/simsun.ttf",75)
draw = ImageDraw.Draw(im)
draw.text((50,20), file_code, font=font, fill='#000')
else:
font = ImageFont.truetype(fm.findfont(fm.FontProperties(family='DejaVu Sans')),75)
draw = ImageDraw.Draw(im)
draw.text((30,20), file_code, font=font, fill='#000')
# draw.text((60,13), filename, font=font, fill='#000') #602项目改动
im.save("{}/temp_number.jpg".format(code_path))
def paste(file_code):
color = 'white'
target = Image.new("RGB",(300,390),color)
# qr = Image.open("E:/qr_png/jpg_code/B/{}".format(filename))
# qr = Image.open("E:/code_tool/{}/{}/{}.jpg".format(source_path,path_str,filename))
qr = Image.open('{}/{}.jpg'.format(code_path,file_code))
im = Image.open('{}/temp_number.jpg'.format(code_path))
a = 0 # 图片距离左边的大小
b = 0 # 图片距离上边的大小
c = 300 # 图片距离左边的大小 + 图片自身宽度
d = 300 # 图片距离上边的大小 + 图片自身高度
target.paste(qr, (a, b, c, d))
e = 0
f = 300
# target.paste(im, (e, f))
target.save("{}/code_img_str.jpg".format(code_path))
targeta = Image.new("RGB",(480,480),color)
targetb = Image.open("{}/code_img_str.jpg".format(code_path))
targeta.paste(targetb, (90, 60))
targeta.paste(im, (0, 360))
targeta.save("{}/{}.jpg".format(code_path,file_code))
logging.warning("库位二维码生成成功:{}".format(file_code))
@app.route('/downqrcode/', methods=['GET','POST'], strict_slashes=False)
def downqrcode():
# file_code = '001-01-001'
file_code = str(request.args.get("code"))
make_qrcode(file_code)
resize(file_code)
deal_number(file_code)
paste(file_code)
c_path = '/prog/smartshelf/app/static/uploads/'
filename = '{}.jpg'.format(file_code)
if request.method == "GET":
if os.path.isfile(os.path.join(c_path, filename)):
return send_from_directory(c_path, filename, as_attachment=True)
\ No newline at end of file \ No newline at end of file
...@@ -15,6 +15,7 @@ from rpi_ws281x import Adafruit_NeoPixel, Color,PixelStrip ...@@ -15,6 +15,7 @@ from rpi_ws281x import Adafruit_NeoPixel, Color,PixelStrip
from app import app,babel from app import app,babel
# from app import socketio # from app import socketio
from app.led_strip import get_strip from app.led_strip import get_strip
from app import driver_gpio
import logging import logging
import RPi.GPIO as GPIO import RPi.GPIO as GPIO
from flask_babel import Babel, gettext as _ from flask_babel import Babel, gettext as _
...@@ -49,7 +50,7 @@ try: ...@@ -49,7 +50,7 @@ try:
except Exception as e: except Exception as e:
logging.warning("配置文件加载失败,请上传配置文件") logging.warning("配置文件加载失败,请上传配置文件")
config_state = '加载失败,请在配置页面上传配置文件' config_state = '加载失败,请在配置页面上传配置文件'
SET_CHANNEL = {'greenA':5,'redA':6,'greenB':17,'redB':27} SET_CHANNEL = {'greenA':5,'yellowA':6,'redA':16,'greenB':17,'yellowB':27,'redB':23}
SET_LED_CHANNEL = {'1':12,'2':21} SET_LED_CHANNEL = {'1':12,'2':21}
led_lights1 = {} led_lights1 = {}
...@@ -94,16 +95,22 @@ def workinglight(): ...@@ -94,16 +95,22 @@ def workinglight():
if channel == 'channel1': if channel == 'channel1':
if color == 'green': if color == 'green':
pin = SET_CHANNEL['greenA'] pin = SET_CHANNEL['greenA']
elif color == 'yellow':
pin = SET_CHANNEL['yellowA']
else: else:
pin = SET_CHANNEL['redA'] pin = SET_CHANNEL['redA']
else: else:
if color == 'green': if color == 'green':
pin = SET_CHANNEL['greenB'] pin = SET_CHANNEL['greenB']
elif color == 'yellow':
pin = SET_CHANNEL['yellowB']
else: else:
pin = SET_CHANNEL['redB'] pin = SET_CHANNEL['redB']
GPIO.setmode(GPIO.BCM) # GPIO.setmode(GPIO.BCM)
GPIO.setup(pin,GPIO.OUT) # GPIO.setup(pin,GPIO.OUT)
GPIO.output(pin,GPIO.HIGH) # GPIO.output(pin,GPIO.HIGH)
driver_gpio.init(pin)
driver_gpio.gpio_high(pin)
msg = "通道:{};状态灯{}点亮".format(channel,color) msg = "通道:{};状态灯{}点亮".format(channel,color)
logging.warning(msg) logging.warning(msg)
info = [] info = []
...@@ -119,16 +126,22 @@ def workingoff(): ...@@ -119,16 +126,22 @@ def workingoff():
if channel == 'channel1': if channel == 'channel1':
if color == 'green': if color == 'green':
pin = SET_CHANNEL['greenA'] pin = SET_CHANNEL['greenA']
elif color == 'yellow':
pin = SET_CHANNEL['yellowA']
else: else:
pin = SET_CHANNEL['redA'] pin = SET_CHANNEL['redA']
else: else:
if color == 'green': if color == 'green':
pin = SET_CHANNEL['greenB'] pin = SET_CHANNEL['greenB']
elif color == 'yellow':
pin = SET_CHANNEL['yellowB']
else: else:
pin = SET_CHANNEL['redB'] pin = SET_CHANNEL['redB']
GPIO.setmode(GPIO.BCM) # GPIO.setmode(GPIO.BCM)
GPIO.setup(pin,GPIO.OUT) # GPIO.setup(pin,GPIO.OUT)
GPIO.output(pin,GPIO.LOW) # GPIO.output(pin,GPIO.LOW)
driver_gpio.init(pin)
driver_gpio.gpio_low(pin)
msg = "通道:{};状态灯{}关闭".format(channel,color) msg = "通道:{};状态灯{}关闭".format(channel,color)
logging.warning(msg) logging.warning(msg)
info = [] info = []
......
...@@ -118,6 +118,7 @@ ...@@ -118,6 +118,7 @@
<div class="col-sm-3"> <div class="col-sm-3">
<select id='workcolor' class="form-control"> <select id='workcolor' class="form-control">
<option>green</option> <option>green</option>
<option>yellow</option>
<option>red</option> <option>red</option>
</select> </select>
</div> </div>
...@@ -127,6 +128,27 @@ ...@@ -127,6 +128,27 @@
</div><!-- /.col-sm-4 --> </div><!-- /.col-sm-4 -->
</div> </div>
</div> </div>
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">{{ _('下载库位二维码') }}</h3>
</div>
<div class="panel-body">
<form action="/downqrcode" method="GET">
<div class="col-sm-3">
<select name="code" class="form-control">
{% for optionv in option_list %}
<option>{{ optionv }}</option>
{% endfor %}
</select>
</div>
<div class="col-sm-3">
<input type="submit" class="btn btn-info" value={{ _('下载二维码') }}>
</div>
<label for="cha11" class="col-sm-4">{{ _('单个二维码尺寸(含白色底框)尺寸为16*16mm,黑码尺寸为10*10mm') }}</label>
</form>
</div>
</div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<h2>{{ _('运行日志&状态信息') }}</h2> <h2>{{ _('运行日志&状态信息') }}</h2>
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!