条码生成器,工厂生产烧录SN用临时写的

By 瞌睡蟲子 at 2023-01-17 • 0人收藏 • 777人看过

由于SN是随机生成没法顺序生产,为了规避人工输入错误,只能用扫码枪扫条码烧录。临时整了个工具。

image.png

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下面

xls.zip


1 个回复 | 最后更新于 2023-01-17
2023-01-17   #1

感谢分享,新年快乐

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...