条码生成器,工厂生产烧录SN用临时写的
By
瞌睡蟲子
at 2023-01-17 • 0人收藏 • 777人看过
由于SN是随机生成没法顺序生产,为了规避人工输入错误,只能用扫码枪扫条码烧录。临时整了个工具。
main.aardio
//文件对话框 import fonts.fontAwesome; import win.ui; /*DSG{{*/ var winform = win.form(text="条码生成器";right=399;bottom=447;bgcolor=16777215;border="dialog frame";max=false;min=false) winform.add( btnIFileOpenDir={cls="plus";text="打开目录";left=288;top=16;right=400;bottom=46;align="left";color=3947580;dr=1;dt=1;font=LOGFONT(h=-13);iconStyle={align="left";font=LOGFONT(h=-13;name='FontAwesome');padding={left=8}};iconText='\uF07C';notify=1;textPadding={left=25};z=1}; button={cls="button";text="下一条";left=272;top=48;right=384;bottom=80;z=3}; checkbox={cls="checkbox";text="记录历史位置";left=32;top=56;right=136;bottom=72;checked=1;z=12}; editPath={cls="plus";left=24;top=16;right=272;bottom=42;align="right";border={bottom=1;color=-6908266};dl=1;dr=1;dt=1;editable=1;font=LOGFONT(h=-13);textPadding={top=6;bottom=2};z=2}; edit_mac={cls="edit";left=72;top=408;right=336;bottom=432;edge=1;readonly=1;z=9}; edit_num={cls="edit";text="-";left=176;top=56;right=240;bottom=80;align="right";color=16711680;disabled=1;edge=1;font=LOGFONT(h=-14;weight=700);readonly=1;z=13}; edit_sn={cls="edit";left=72;top=232;right=336;bottom=256;edge=1;readonly=1;z=6}; plus_mac={cls="plus";left=32;top=264;right=384;bottom=400;repeat="scale";z=7}; plus_sn={cls="plus";left=32;top=88;right=384;bottom=224;repeat="scale";z=4}; static={cls="static";text="第";left=160;top=56;right=184;bottom=80;color=255;font=LOGFONT(h=-14;weight=700);transparent=1;z=10}; static2={cls="static";text="条";left=240;top=56;right=264;bottom=80;color=255;font=LOGFONT(h=-14;weight=700);transparent=1;z=11}; static_mac={cls="static";text="MAC:";left=32;top=416;right=80;bottom=432;color=255;font=LOGFONT(weight=700);transparent=1;z=8}; static_sn={cls="static";text="SN:";left=32;top=240;right=72;bottom=256;color=255;font=LOGFONT(weight=700);transparent=1;z=5} ) /*}}*/ import fsys.dlg; import win.dlg.message; import config; winform.bindConfig( config.winform,{ edit = "text"; radiobutton = "checked"; checkbox = "checked"; combobox = "selIndex"; plus ={ ["^chk"] = "checked"; ["^edit"] = "text"; }; } ); winform.btnIFileOpenDir.oncommand = function(id,event){ var path = fsys.dlg.open('Excel文件(*.xlsx)|*.xlsx|',,,winform); if(path){ winform.editPath.text = path; winform.edit_sn.text = ""; winform.edit_mac.text = ""; winform.plus_sn.background = null; winform.plus_mac.background = null; winform.edit_num.text = "-"; index = 1; xlsData = readExcel(winform.editPath.text,0); } } winform.btnIFileOpenDir.skin({ color={ active=0xFF00FF00; default=0xFF3C3C3C; disabled=0xFF6D6D6D; hover=0xFFFF0000 } }) // 获取excel数据 function readExcel(xlsPath,sheetName=0){ import py3; import web.json; import py3.lib.xls; var xls = py3.lib.xls.Excel07(); var objExcelWorkBook = xls.OpenExcel(xlsPath); if(type(sheetName) == "number"){ sheetName = xls.GetSheetsName()[sheetName]; } var row = xls.GetRowsCount(sheetName); var data = xls.ReadRange(sheetName,"A2:B"+tostring(row)); xls.CloseExcel(); return data; } // 生产条码 function createBmp(str){ import libzint; var zsd = libzint(); //参考 https://www.chengxu.xyz/t/365 zsd.symbology = 0x14/*_BARCODE_CODE128*/; zsd.borderWidth = 2; zsd.foregroundColor = 0x9613B2; zsd.height = 50; if( zsd.encode(str) ){ error(zsd.err); } return zsd.saveBitmap() ; } var xlsData = null; var index = 0; import console; winform.button.oncommand = function(id,event){ if(winform.editPath.text == ""){ winform.msgFrown("请先选择Excel文件!",1000); winform.btnIFileOpenDir.oncommand(); return ; }elseif(not io.exist(winform.editPath.text)){ winform.msgFrown("Excel文件不存在,请重新选择!",1000); winform.btnIFileOpenDir.oncommand(); return ; } if(xlsData == null){ xlsData = readExcel(winform.editPath.text,0); } index += 1; var data = xlsData[index]; winform.edit_sn.text = data[0]; winform.plus_sn.background = createBmp(winform.edit_sn.text); winform.edit_mac.text = data[1]; winform.plus_mac.background = createBmp(winform.edit_mac.text); winform.edit_num.text = index; } if(winform.checkbox.checked){ if(#winform.edit_sn.text){ winform.plus_sn.background = createBmp(winform.edit_sn.text); } if(#winform.edit_mac.text){ winform.plus_mac.background = createBmp(winform.edit_mac.text); } if(#winform.edit_num.text && winform.edit_num.text != "-"){ index = tonumber(winform.edit_num.text); } }else { winform.edit_sn.text = ""; winform.edit_mac.text = ""; winform.plus_sn.background = null; winform.plus_mac.background = null; winform.edit_num.text = "-"; } winform.show(); win.loopMessage();
python的excel库。放在aardio\lib\py3\lib下面
1 个回复 | 最后更新于 2023-01-17
登录后方可回帖
感谢分享,新年快乐