Commit 5ad947ef 张东亮

1

1 个父辈 776848ce
...@@ -19,6 +19,9 @@ namespace AutoScanAndLabel ...@@ -19,6 +19,9 @@ namespace AutoScanAndLabel
[STAThread] [STAThread]
static void Main() static void Main()
{ {
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
DeviceLibrary.LabelParam labelParam = new DeviceLibrary.LabelParam(); DeviceLibrary.LabelParam labelParam = new DeviceLibrary.LabelParam();
labelParam.codeInfos = new List<CodeLibrary.CodeInfo>(); labelParam.codeInfos = new List<CodeLibrary.CodeInfo>();
//##340093060037##01410000441770##012100000224##Q3000 //##340093060037##01410000441770##012100000224##Q3000
...@@ -53,8 +56,23 @@ namespace AutoScanAndLabel ...@@ -53,8 +56,23 @@ namespace AutoScanAndLabel
Application.Run(new Form1()); Application.Run(new Form1());
} }
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
LogUnhandledException("CurrentDomain_UnhandledException", e.ToString() + "" + e.ExceptionObject.ToString() + " ");
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
LogUnhandledException("Application_ThreadException", e.ToString() + "" + e.Exception.ToString() + " ");
}
static void LogUnhandledException(string type, string exceptionobj)
{
//这里可以进一步地写日志
LogUtil.error("【" + type + "】" + exceptionobj);
MessageBox.Show(exceptionobj, type);
LogUtil.error("【" + type + "】" + exceptionobj);
}
#region Win32函数的声明 #region Win32函数的声明
/// <summary> /// <summary>
......
...@@ -40,9 +40,9 @@ namespace AutoScanAndLabel ...@@ -40,9 +40,9 @@ namespace AutoScanAndLabel
{ {
cb_printerselect.Items.Add(sPrint); cb_printerselect.Items.Add(sPrint);
} }
if (RobotManage.PrintBean != null) if (RobotManage.printerHelper != null)
{ {
foreach (string labelname in RobotManage.PrintBean.GetLabelName()) foreach (string labelname in RobotManage.printerHelper.GetLabelList())
{ {
cb_labelselect.Items.Add(labelname); cb_labelselect.Items.Add(labelname);
} }
......
...@@ -9,6 +9,7 @@ using System.Linq; ...@@ -9,6 +9,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Threading;
namespace DeviceLibrary namespace DeviceLibrary
{ {
...@@ -40,17 +41,20 @@ namespace DeviceLibrary ...@@ -40,17 +41,20 @@ namespace DeviceLibrary
LabelMoveInfo.log("Label_X转到取标点,等待标签打印完毕"); LabelMoveInfo.log("Label_X转到取标点,等待标签打印完毕");
break; break;
case MoveStep.Lbl_WaitPrint: case MoveStep.Lbl_WaitPrint:
if (LastPrintStatus == Asa.PrintLabel.PrinterStatus.Idle) { var isPrinted = RobotManage.printerHelper.IsLabelOnPeeler();
isPrinted.Wait();
if (isPrinted.Result.Item1)
{
LabelMoveInfo.NextMoveStep(MoveStep.Lbl_Printted); LabelMoveInfo.NextMoveStep(MoveStep.Lbl_Printted);
Thread.Sleep(500);
} }
break; break;
case MoveStep.Lbl_Printted: case MoveStep.Lbl_Printted:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl03); LabelMoveInfo.NextMoveStep(MoveStep.Lbl03);
LastPrintStatus = Asa.PrintLabel.PrinterStatus.Unknown;
IOMove(IO_Type.LabelCylinder_Work, IO_VALUE.HIGH); IOMove(IO_Type.LabelCylinder_Work, IO_VALUE.HIGH);
Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P3, Config.Label_Z_P3_speed); Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P3, Config.Label_Z_P3_speed);
//CylinderMove(LabelMoveInfo, IO_Type.LabelCylinder_Bck, IO_Type.LabelCylinder_Fwd); //CylinderMove(LabelMoveInfo, IO_Type.LabelCylinder_Bck, IO_Type.LabelCylinder_Fwd);
LabelMoveInfo.log("标签打印完毕,取标气缸下降,开始吸气."); LabelMoveInfo.log("标签打印完毕,取标气缸下降,开始吸气.");
break; break;
case MoveStep.Lbl03: case MoveStep.Lbl03:
...@@ -64,16 +68,29 @@ namespace DeviceLibrary ...@@ -64,16 +68,29 @@ namespace DeviceLibrary
LabelMoveInfo.log("标签打印完毕,取标气缸上升,取起标签."); LabelMoveInfo.log("标签打印完毕,取标气缸上升,取起标签.");
break; break;
case MoveStep.Lbl05: case MoveStep.Lbl05:
var ip = RobotManage.printerHelper.IsLabelOnPeeler();
ip.Wait();
var r = ip.Result;
if (r.Item1)
{
Msg.add("标签取起失败!", MsgLevel.warning);
}
else
LabelMoveInfo.NextMoveStep(MoveStep.Lbl06);
break;
case MoveStep.Lbl06:
if (LeftMoveInfo.MoveStep == MoveStep.L20_WaitLabel) if (LeftMoveInfo.MoveStep == MoveStep.L20_WaitLabel)
{ {
LabelMoveInfo.NextMoveStep(MoveStep.Lbl10); LabelMoveInfo.NextMoveStep(MoveStep.Lbl10);
} }
else if (LabelMoveInfo.IsTimeOut(60)) { else if (LabelMoveInfo.IsTimeOut(60))
{
LabelMoveInfo.log("等待左侧料串可贴标."); LabelMoveInfo.log("等待左侧料串可贴标.");
} }
break; break;
case MoveStep.Lbl10: case MoveStep.Lbl10:
if (!Label_Y_Axis.IsSafe(Config.Label_Y_P3,out string msg)) { if (!Label_Y_Axis.IsSafe(Config.Label_Y_P3, out string msg))
{
Msg.add(msg, MsgLevel.warning); Msg.add(msg, MsgLevel.warning);
return; return;
} }
...@@ -81,7 +98,8 @@ namespace DeviceLibrary ...@@ -81,7 +98,8 @@ namespace DeviceLibrary
Point Right_Batch_Point = new Point(RobotManage.Config.Right_Batch_X, RobotManage.Config.Right_Batch_Y); Point Right_Batch_Point = new Point(RobotManage.Config.Right_Batch_X, RobotManage.Config.Right_Batch_Y);
//不同尺寸料盘需要在照片上便宜的贴标像素 //不同尺寸料盘需要在照片上便宜的贴标像素
int widthOffset = Config.Label_Offset_Pixel_7; int widthOffset = Config.Label_Offset_Pixel_7;
switch (LabelMoveInfo.MoveParam.PlateW) { switch (LabelMoveInfo.MoveParam.PlateW)
{
case 13: case 13:
widthOffset = Config.Label_Offset_Pixel_13; widthOffset = Config.Label_Offset_Pixel_13;
break; break;
...@@ -98,7 +116,7 @@ namespace DeviceLibrary ...@@ -98,7 +116,7 @@ namespace DeviceLibrary
//计算贴标角度的脉冲值 //计算贴标角度的脉冲值
int labelAxisPos = Config.Label_R_360 / 350 * labelAngle; int labelAxisPos = Config.Label_R_360 / 350 * labelAngle;
//计算像素点位与中心点的差 //计算像素点位与中心点的差
Label_p3 = new Point(p.X - Right_Batch_Point.X , p.Y - Right_Batch_Point.Y); Label_p3 = new Point(p.X - Right_Batch_Point.X, p.Y - Right_Batch_Point.Y);
//计算像素*脉冲像素比得到脉冲值+中心点基准脉冲 //计算像素*脉冲像素比得到脉冲值+中心点基准脉冲
Label_p3.X = (int)(Label_p3.X * Config.Cam_Pixel_X_Ratio) + Config.Label_X_P3; Label_p3.X = (int)(Label_p3.X * Config.Cam_Pixel_X_Ratio) + Config.Label_X_P3;
Label_p3.Y = (int)(Label_p3.Y * Config.Cam_Pixel_Y_Ratio) + Config.Label_Y_P3; Label_p3.Y = (int)(Label_p3.Y * Config.Cam_Pixel_Y_Ratio) + Config.Label_Y_P3;
...@@ -107,7 +125,7 @@ namespace DeviceLibrary ...@@ -107,7 +125,7 @@ namespace DeviceLibrary
LabelMoveInfo.NextMoveStep(MoveStep.Lbl10_1); LabelMoveInfo.NextMoveStep(MoveStep.Lbl10_1);
Label_X_Axis.AbsMove(LabelMoveInfo, Config.Label_X_P1, Config.Label_X_P1_speed); Label_X_Axis.AbsMove(LabelMoveInfo, Config.Label_X_P1, Config.Label_X_P1_speed);
Label_R_Axis.AbsMove(LabelMoveInfo, labelAxisPos, Config.Label_R_P2_speed); Label_R_Axis.AbsMove(LabelMoveInfo, labelAxisPos, Config.Label_R_P2_speed);
Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P4, Config.Label_Z_P4_speed); Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P4, Config.Label_Z_P4_speed);
LabelMoveInfo.log("Label_X到待机点,Z转到贴标点."); LabelMoveInfo.log("Label_X到待机点,Z转到贴标点.");
break; break;
case MoveStep.Lbl10_1: case MoveStep.Lbl10_1:
...@@ -132,7 +150,7 @@ namespace DeviceLibrary ...@@ -132,7 +150,7 @@ namespace DeviceLibrary
break; break;
case MoveStep.Lbl13: case MoveStep.Lbl13:
LabelMoveInfo.NextMoveStep(MoveStep.Lbl14); LabelMoveInfo.NextMoveStep(MoveStep.Lbl14);
Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P4, Config.Label_Z_P4_speed); Label_Z_Axis.AbsMove(LabelMoveInfo, Config.Label_Z_P4, Config.Label_Z_P4_speed);
LabelMoveInfo.log("上升."); LabelMoveInfo.log("上升.");
break; break;
case MoveStep.Lbl14: case MoveStep.Lbl14:
...@@ -146,18 +164,20 @@ namespace DeviceLibrary ...@@ -146,18 +164,20 @@ namespace DeviceLibrary
} }
} }
string LabelState() { string LabelState()
{
string state = ""; string state = "";
if (LabelMoveInfo.MoveStep >= MoveStep.Lbl_Printted) { if (LabelMoveInfo.MoveStep >= MoveStep.Lbl_Printted)
state += crc.GetString("Res0072","标签已打印,当前ReelID:") + LabelMoveInfo.MoveParam.WareCode; {
state += crc.GetString("Res0072", "标签已打印,当前ReelID:") + LabelMoveInfo.MoveParam.WareCode;
} }
if (LabelMoveInfo.MoveStep == MoveStep.Lbl01) if (LabelMoveInfo.MoveStep == MoveStep.Lbl01)
{ {
state += crc.GetString("Res0073","等待标签打印"); state += crc.GetString("Res0073", "等待标签打印");
} }
if (LabelMoveInfo.MoveStep == MoveStep.Wait) if (LabelMoveInfo.MoveStep == MoveStep.Wait)
{ {
state += crc.GetString("Res0074","等待中"); state += crc.GetString("Res0074", "等待中");
} }
return state; return state;
} }
......
...@@ -256,7 +256,7 @@ namespace DeviceLibrary ...@@ -256,7 +256,7 @@ namespace DeviceLibrary
void LeftBatchAxisToP1() void LeftBatchAxisToP1()
{ {
int targetP1 = Config.Left_Batch_P1; int targetP1 = Config.Left_Batch_P1;
int targetSpeed = Config.Left_Batch_P2_speed; int targetSpeed = Config.Left_Batch_P2_speed/10;
LeftMoveInfo.TimeOutSeconds = 200; LeftMoveInfo.TimeOutSeconds = 200;
LeftMoveInfo.CanWhileCount = 0; LeftMoveInfo.CanWhileCount = 0;
......
...@@ -122,14 +122,25 @@ namespace DeviceLibrary ...@@ -122,14 +122,25 @@ namespace DeviceLibrary
} }
else if (LeftMoveInfo.MoveStep == MoveStep.L10_WaitReelPut) else if (LeftMoveInfo.MoveStep == MoveStep.L10_WaitReelPut)
{ {
MiddleMoveInfo.NextMoveStep(MoveStep.M08);
if (true || clampTool.IsClamp()) if (true || clampTool.IsClamp())
{ {
Take_Middle_Axis.AbsMove(MiddleMoveInfo, Config.Take_Middle_P3, Config.Take_Middle_P3_speed); Take_Middle_Axis.AbsMove(MiddleMoveInfo, Config.Take_Middle_P3, Config.Take_Middle_P3_speed);
MiddleMoveInfo.log("左侧允许放料,旋转轴P3"); MiddleMoveInfo.log("左侧允许放料,旋转轴P3");
//MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftArm_Check, IO_VALUE.HIGH)); //MiddleMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LeftArm_Check, IO_VALUE.HIGH));
//调用标签打印 //调用标签打印
DoPrint(MiddleMoveInfo.MoveParam); var kv = MiddleMoveInfo.MoveParam.Keyword.Select(k => $"{k.Key}={k.Value}").ToArray();
LogUtil.info("调用 PrintLabel 打印标签 StartPrintLabel ,[" + string.Join(", ", kv) + "] 开始");
string labelName = ConfigHelper.Config.Get(Setting_Init.LabelName);
if (RobotManage.printerHelper.Print(labelName, MiddleMoveInfo.MoveParam.Keyword, out msg))
{
MiddleMoveInfo.NextMoveStep(MoveStep.M08);
}
else
{
Msg.add(msg, MsgLevel.warning);
}
LogUtil.info("PrintLabel 打印标签 StartPrintLabel 结束 " + msg);
} }
else else
{ {
......
using CodeLibrary;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DeviceLibrary
{
partial class MainMachine
{
//Asa.PrintLabel PrintBean = null;
public void InitPrint()
{
//RobotManage.PrintBean = new Asa.PrintLabel(Application.StartupPath + "\\Label");
RobotManage.PrintBean.PrintStatusChanged += Print_PrintStatusChanged;
/*
System.Drawing.Printing.PrintDocument print = new System.Drawing.Printing.PrintDocument();
string sDefault = print.PrinterSettings.PrinterName;//默认打印机名
LogUtil.info("PrintLabel 本机默认打印机:" + sDefault);
int index = 1;
foreach (string sPrint in System.Drawing.Printing.PrinterSettings.InstalledPrinters)//获取所有打印机名称
{
LogUtil.info("PrintLabel 打印机_" + index + "_名称:" + sPrint);
index++;
}*/
}
public Asa.PrintLabel.PrinterStatus LastPrintStatus = Asa.PrintLabel.PrinterStatus.Unknown;
void Print_PrintStatusChanged(Asa.PrintLabel.PrinterStatus sta, string msg)
{
if (sta.Equals(LastPrintStatus).Equals(false))
{
LogUtil.info("PrintLabel 收到打印机新状态:【" + sta + "】【" + msg + "】,替换原来的状态【" + LastPrintStatus + "】 ");
}
else
{
if (sta == Asa.PrintLabel.PrinterStatus.Idle) {
//Task.Run(()=> {
// while (true)
// {
// if (LabelMoveInfo.IsStep(MoveStep.Lbl_WaitPrint))
// {
// LabelMoveInfo.NextMoveStep(MoveStep.Lbl_Printted);
// break;
// }
// Task.Delay(500).Wait();
// }
//});
}
LogUtil.info(" PrintLabel 收到打印机新状态:【" + sta + "】【" + msg + "】,与之前状态一样 ");
}
LastPrintStatus = sta;
}
public string LastPrintLabel="";
void StartPrintLabel(LabelParam labelParam)
{
try
{
LastPrintStatus= Asa.PrintLabel.PrinterStatus.Unknown;
var kv = labelParam.Keyword.Select(k => $"{k.Key}={k.Value}").ToArray();
LogUtil.info("调用 PrintLabel 打印标签 StartPrintLabel ,[" + string.Join(", ", kv) + "] 开始");
//LastPrintLabel = labelParam.PN;
RobotManage.PrintBean.Print(labelParam.Keyword);
LogUtil.info("PrintLabel 打印标签 StartPrintLabel 结束 ");
}
catch (Exception ex)
{
LogUtil.error("PrintLabel 打印标签 StartPrintLabel 错误:" + ex.ToString());
}
}
public Task DoPrint(LabelParam labelParam) {
return Task.Run(() =>
{
StartPrintLabel(labelParam);
});
}
}
}
...@@ -71,7 +71,7 @@ namespace DeviceLibrary ...@@ -71,7 +71,7 @@ namespace DeviceLibrary
{ {
//RightMoveInfo.NextMoveStep(MoveStep.R02); //RightMoveInfo.NextMoveStep(MoveStep.R02);
RightMoveInfo.log("CheckHasTray:上料轴开始慢速上升到P2[" + Config.Right_Batch_P2 + "],等待检测到料盘"); RightMoveInfo.log("CheckHasTray:上料轴开始慢速上升到P2[" + Config.Right_Batch_P2 + "],等待检测到料盘");
RightBatchAxisToP2(false); RightBatchAxisToP2(false);
return; return;
} }
...@@ -85,12 +85,12 @@ namespace DeviceLibrary ...@@ -85,12 +85,12 @@ namespace DeviceLibrary
case MoveStep.R06_GettedReelHigh: case MoveStep.R06_GettedReelHigh:
if (RightScanTask.IsCompleted) if (RightScanTask.IsCompleted)
{ {
var (x,k,s) = RightScanTask.Result; var (x, k, s) = RightScanTask.Result;
if (ConfigHelper.Config.Get(Setting_Init.SaveReelPhoto, false)) if (ConfigHelper.Config.Get(Setting_Init.SaveReelPhoto, false))
{ {
string d = ConfigHelper.Config.Get(Setting_Init.ReelPhotoSaveDir); string d = ConfigHelper.Config.Get(Setting_Init.ReelPhotoSaveDir);
string fn = Path.GetFileName(s); string fn = Path.GetFileName(s);
string df = Path.Combine(d,fn); string df = Path.Combine(d, fn);
File.Copy(s, df); File.Copy(s, df);
} }
if (x.Count == 0) if (x.Count == 0)
...@@ -105,12 +105,13 @@ namespace DeviceLibrary ...@@ -105,12 +105,13 @@ namespace DeviceLibrary
RightMoveInfo.MoveParam.codeInfos = x; RightMoveInfo.MoveParam.codeInfos = x;
RightMoveInfo.MoveParam.Keyword = k; RightMoveInfo.MoveParam.Keyword = k;
RightMoveInfo.MoveParam.bitmapfilename = s; RightMoveInfo.MoveParam.bitmapfilename = s;
if (!Common.codeProcess(RightMoveInfo.MoveParam,out string debugmsg)) if (!Common.codeProcess(RightMoveInfo.MoveParam, out string debugmsg))
{ {
RightMoveInfo.log($"未识别到有效码,转入NG箱"+ debugmsg); RightMoveInfo.log($"未识别到有效码,转入NG箱" + debugmsg);
RightMoveInfo.log(JsonHelper.SerializeObject(x)); RightMoveInfo.log(JsonHelper.SerializeObject(x));
RightMoveInfo.MoveParam.IsNg = true; RightMoveInfo.MoveParam.IsNg = true;
}else }
else
RightMoveInfo.log($"已完成扫码,等待料盘被取走 Count={x.Count}"); RightMoveInfo.log($"已完成扫码,等待料盘被取走 Count={x.Count}");
} }
RightMoveInfo.NextMoveStep(MoveStep.R10_WaitReelLeave); RightMoveInfo.NextMoveStep(MoveStep.R10_WaitReelLeave);
...@@ -121,13 +122,14 @@ namespace DeviceLibrary ...@@ -121,13 +122,14 @@ namespace DeviceLibrary
} }
break; break;
case MoveStep.R10_WaitReelLeave: case MoveStep.R10_WaitReelLeave:
Msg.add(crc.GetString("Res0099","等待料盘取走"), MsgLevel.info); Msg.add(crc.GetString("Res0099", "等待料盘取走"), MsgLevel.info);
break; break;
case MoveStep.R11_NextReel: case MoveStep.R11_NextReel:
RightCount++; RightCount++;
if (SafeReleaseRightShelf) { if (SafeReleaseRightShelf)
{
SafeReleaseRightShelf = false; SafeReleaseRightShelf = false;
RightMoveInfo.NextMoveStep(MoveStep.R12_ShelfNoTray); RightMoveInfo.NextMoveStep(MoveStep.R12_ShelfNoTray);
RightMoveInfo.log($"用户请求释放料架."); RightMoveInfo.log($"用户请求释放料架.");
} }
...@@ -149,10 +151,10 @@ namespace DeviceLibrary ...@@ -149,10 +151,10 @@ namespace DeviceLibrary
RightMoveInfo.log($"结束运动"); RightMoveInfo.log($"结束运动");
RightMoveInfo.EndMove(); RightMoveInfo.EndMove();
break; break;
//} //}
//料串出料流程 //料串出料流程
//switch (RightMoveInfo.MoveStep) //switch (RightMoveInfo.MoveStep)
//{ //{
case MoveStep.R30_OutShelf: case MoveStep.R30_OutShelf:
RightMoveInfo.NextMoveStep(MoveStep.R31); RightMoveInfo.NextMoveStep(MoveStep.R31);
Right_Batch_Axis.AbsMove(RightMoveInfo, Config.Right_Batch_P1, Config.Right_Batch_P1_speed); Right_Batch_Axis.AbsMove(RightMoveInfo, Config.Right_Batch_P1, Config.Right_Batch_P1_speed);
...@@ -183,10 +185,10 @@ namespace DeviceLibrary ...@@ -183,10 +185,10 @@ namespace DeviceLibrary
IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH, false, 500); IOMove(IO_Type.RightMoto_Reverse, IO_VALUE.HIGH, false, 500);
RightMoveInfo.log($"电滚停止"); RightMoveInfo.log($"电滚停止");
break; break;
//} //}
//料串入料流程 //料串入料流程
//switch (RightMoveInfo.MoveStep) //switch (RightMoveInfo.MoveStep)
//{ //{
case MoveStep.R40_InShelf: case MoveStep.R40_InShelf:
RightMoveInfo.NextMoveStep(MoveStep.R41); RightMoveInfo.NextMoveStep(MoveStep.R41);
Right_Batch_Axis.AbsMove(RightMoveInfo, Config.Right_Batch_P1, Config.Right_Batch_P1_speed); Right_Batch_Axis.AbsMove(RightMoveInfo, Config.Right_Batch_P1, Config.Right_Batch_P1_speed);
...@@ -213,10 +215,10 @@ namespace DeviceLibrary ...@@ -213,10 +215,10 @@ namespace DeviceLibrary
break; break;
case MoveStep.R44: case MoveStep.R44:
RightMoveInfo.NextMoveStep(MoveStep.R45); RightMoveInfo.NextMoveStep(MoveStep.R45);
IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH, false,500); IOMove(IO_Type.RightMoto_Run, IO_VALUE.HIGH, false, 500);
CylinderMove(null, IO_Type.RightStopDown, IO_Type.RightStopUP); CylinderMove(null, IO_Type.RightStopDown, IO_Type.RightStopUP);
RightMoveInfo.log($"电滚筒停止,阻挡上升"); RightMoveInfo.log($"电滚筒停止,阻挡上升");
break; break;
case MoveStep.R45: case MoveStep.R45:
if (IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH))
{ {
...@@ -227,33 +229,35 @@ namespace DeviceLibrary ...@@ -227,33 +229,35 @@ namespace DeviceLibrary
{ {
RightMoveInfo.NextMoveStep(MoveStep.REND); RightMoveInfo.NextMoveStep(MoveStep.REND);
RightMoveInfo.log($"料串进入失败"); RightMoveInfo.log($"料串进入失败");
} }
break; break;
default: default:
RightMoveInfo.log($"未找到对应步骤:{RightMoveInfo.MoveStep}"); RightMoveInfo.log($"未找到对应步骤:{RightMoveInfo.MoveStep}");
break; break;
} }
} }
string RightState() { string RightState()
{
string state = ""; string state = "";
if (IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH)) if (IOValue(IO_Type.RightEnd_Check).Equals(IO_VALUE.HIGH))
{ {
state += $"有料串,已提取{RightCount}张料盘"; state += $"有料串,已提取{RightCount}张料盘";
if (RightShelfNoTray) if (RightShelfNoTray)
state += crc.GetString("Res0100",",料串已清空. "); state += crc.GetString("Res0100", ",料串已清空. ");
else else
state += "."; state += ".";
state += crc.GetString("Res0045","当前ReelID:")+ RightMoveInfo.MoveParam.WareCode; state += crc.GetString("Res0045", "当前ReelID:") + RightMoveInfo.MoveParam.WareCode;
} }
else else
{ {
return crc.GetString("Res0046","无料串"); return crc.GetString("Res0046", "无料串");
} }
return state; return state;
} }
public bool IsScanRunning() { public bool IsScanRunning()
{
if (RightScanTask == null) if (RightScanTask == null)
return false; return false;
...@@ -262,15 +266,16 @@ namespace DeviceLibrary ...@@ -262,15 +266,16 @@ namespace DeviceLibrary
/// <summary> /// <summary>
/// 扫码线程 /// 扫码线程
/// </summary> /// </summary>
Task<(List<CodeInfo>,Dictionary<string,string>,string)> RightScanTask; Task<(List<CodeInfo>, Dictionary<string, string>, string)> RightScanTask;
void ScanCode() { void ScanCode()
{
RightMoveInfo.log("开始扫码"); RightMoveInfo.log("开始扫码");
//RightMoveInfo.OneWaitCanEndStep = true; //RightMoveInfo.OneWaitCanEndStep = true;
//RightMoveInfo.WaitList.Add(WaitResultInfo.WaitScanCode()); //RightMoveInfo.WaitList.Add(WaitResultInfo.WaitScanCode());
//RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); //RightMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
try try
{ {
RightScanTask = Task.Run(new Func<(List<CodeInfo>, Dictionary<string, string>,string)>(()=> RightScanTask = Task.Run(new Func<(List<CodeInfo>, Dictionary<string, string>, string)>(() =>
{ {
IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH); IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH);
string filename; string filename;
...@@ -280,7 +285,7 @@ namespace DeviceLibrary ...@@ -280,7 +285,7 @@ namespace DeviceLibrary
(LastCodeList, keyword, filename) = CodeManager.CameraScan(new List<string> { Config.RightCameraName }); (LastCodeList, keyword, filename) = CodeManager.CameraScan(new List<string> { Config.RightCameraName });
LabelParam labelParam = new LabelParam(); LabelParam labelParam = new LabelParam();
labelParam.codeInfos = new List<CodeInfo>(LastCodeList); labelParam.codeInfos = new List<CodeInfo>(LastCodeList);
if (!Common.codeProcess(labelParam, out _)) if (!Common.codeProcess(labelParam, out _))
{ {
Task.Delay(500).Wait(); Task.Delay(500).Wait();
...@@ -316,7 +321,7 @@ namespace DeviceLibrary ...@@ -316,7 +321,7 @@ namespace DeviceLibrary
} }
RightMoveInfo.log("BatchAxisToP2 目标P2: " + targetP2 + "(" + currPosition + ")"); RightMoveInfo.log("BatchAxisToP2 目标P2: " + targetP2 + "(" + currPosition + ")");
} }
//targetSpeed = Config.BatchAxis_P3Speed / 2; targetSpeed = Config.Right_Batch_P2_speed / 10;
} }
RightMoveInfo.TimeOutSeconds = 200; RightMoveInfo.TimeOutSeconds = 200;
RightMoveInfo.CanWhileCount = 0; RightMoveInfo.CanWhileCount = 0;
...@@ -375,7 +380,7 @@ namespace DeviceLibrary ...@@ -375,7 +380,7 @@ namespace DeviceLibrary
} }
} }
if (LastHeight <= 8) { LastHeight = 8; } if (LastHeight <= 8) { LastHeight = 8; }
string msg = Name + $" 计算盘高:上升前 [{RightStartMovePosition}]实时[{RightEndMovePosition}]差值[{(RightEndMovePosition - RightStartMovePosition)}]系数[{ AxisChangeValue}] 计算后{ buchongStr }[{ height }],归类为【{ LastHeight }mm】"; string msg = Name + $" 计算盘高:上升前 [{RightStartMovePosition}]实时[{RightEndMovePosition}]差值[{(RightEndMovePosition - RightStartMovePosition)}]系数[{AxisChangeValue}] 计算后{buchongStr}[{height}],归类为【{LastHeight}mm】";
LogUtil.info(msg); LogUtil.info(msg);
return LastHeight; return LastHeight;
} }
......
...@@ -111,7 +111,6 @@ namespace DeviceLibrary ...@@ -111,7 +111,6 @@ namespace DeviceLibrary
CodeManager.LoadCamera(true); CodeManager.LoadCamera(true);
AlarmBuzzer.SetOnOffAction(() => { IOMove(IO_Type.Alarm_Buzzer, IO_VALUE.HIGH); }, () => { IOMove(IO_Type.Alarm_Buzzer, IO_VALUE.LOW); }); AlarmBuzzer.SetOnOffAction(() => { IOMove(IO_Type.Alarm_Buzzer, IO_VALUE.HIGH); }, () => { IOMove(IO_Type.Alarm_Buzzer, IO_VALUE.LOW); });
InitPrint();
LedProcessInit(); LedProcessInit();
agvService.StartHttpServer(); agvService.StartHttpServer();
ServerCM = new ServerCommunication(); ServerCM = new ServerCommunication();
......
...@@ -107,6 +107,7 @@ namespace DeviceLibrary ...@@ -107,6 +107,7 @@ namespace DeviceLibrary
Lbl03, Lbl03,
Lbl04, Lbl04,
Lbl05, Lbl05,
Lbl06,
Lbl10, Lbl10,
Lbl10_1, Lbl10_1,
Lbl10_2, Lbl10_2,
......
...@@ -14,6 +14,7 @@ namespace DeviceLibrary ...@@ -14,6 +14,7 @@ namespace DeviceLibrary
{ {
public static class RobotManage public static class RobotManage
{ {
public static event EventHandler<bool> UserPauseSet;
public static MainMachine mainMachine; public static MainMachine mainMachine;
public static Robot_Config Config; public static Robot_Config Config;
public static bool IsLoadOk = true; public static bool IsLoadOk = true;
...@@ -21,7 +22,7 @@ namespace DeviceLibrary ...@@ -21,7 +22,7 @@ namespace DeviceLibrary
public delegate void LoadFinish(bool state, string msg); public delegate void LoadFinish(bool state, string msg);
public static event LoadFinish LoadFinishEvent; public static event LoadFinish LoadFinishEvent;
public static bool isRunning = false; public static bool isRunning = false;
public static Asa.PrintLabel PrintBean; public static PrinterHelper printerHelper = new PrinterHelper();
/// <summary> /// <summary>
/// 抓取料盘夹具 /// 抓取料盘夹具
/// </summary> /// </summary>
...@@ -39,7 +40,6 @@ namespace DeviceLibrary ...@@ -39,7 +40,6 @@ namespace DeviceLibrary
Config = new Robot_Config(0, "", configFile); Config = new Robot_Config(0, "", configFile);
Config = (Robot_Config)CSVConfigReader.LoadConfig(Config); Config = (Robot_Config)CSVConfigReader.LoadConfig(Config);
CodeManager.LoadConfig(); CodeManager.LoadConfig();
PrintBean = new Asa.PrintLabel(Application.StartupPath + "\\Label", 100);
clampTool = new ClampTool(); clampTool = new ClampTool();
if (!clampTool.Open()) if (!clampTool.Open())
...@@ -54,6 +54,16 @@ namespace DeviceLibrary ...@@ -54,6 +54,16 @@ namespace DeviceLibrary
IsLoadOk = false; IsLoadOk = false;
msg += crc.GetString("Res0189", "IO板卡初始化失败") + "\n"; msg += crc.GetString("Res0189", "IO板卡初始化失败") + "\n";
} }
if (!printerHelper.Connection(""))
{
msg += "标签打印机打开失败" + "\n";
IsLoadOk = false;
}
else
{
LogUtil.info("标签打印机打开成功");
}
IOManager.IOMove(IO_Type.Device_Led, IO_VALUE.HIGH); IOManager.IOMove(IO_Type.Device_Led, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH); IOManager.IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH);
LoadFinishEvent?.Invoke(IsDebug ? IsDebug : IsLoadOk, msg); LoadFinishEvent?.Invoke(IsDebug ? IsDebug : IsLoadOk, msg);
...@@ -111,7 +121,7 @@ namespace DeviceLibrary ...@@ -111,7 +121,7 @@ namespace DeviceLibrary
} }
public static void UserPause(bool userpause) public static void UserPause(bool userpause)
{ {
mainMachine.UserPause = userpause; UserPause("", userpause);
if (userpause) if (userpause)
LogUtil.info("用户暂停"); LogUtil.info("用户暂停");
else else
...@@ -137,10 +147,23 @@ namespace DeviceLibrary ...@@ -137,10 +147,23 @@ namespace DeviceLibrary
{ {
string PrintName = ConfigHelper.Config.Get(Setting_Init.PrinterName); string PrintName = ConfigHelper.Config.Get(Setting_Init.PrinterName);
string labelName = ConfigHelper.Config.Get(Setting_Init.LabelName); string labelName = ConfigHelper.Config.Get(Setting_Init.LabelName);
RobotManage.PrintBean.LoadLabel(labelName);
RobotManage.PrintBean.Printer(PrintName, false);
//RobotManage.printerHelper.Print(labelName, new Dictionary<string, string>(), out string msg);
LogUtil.info("PrintLabel 打印机初始化完成【" + labelName + "】【" + PrintName + "】"); LogUtil.info("PrintLabel 打印机初始化完成【" + labelName + "】【" + PrintName + "】");
} }
public static void UserPause(string msg = "", bool userpause = true)
{
UserPauseSet?.Invoke(null, userpause);
mainMachine.UserPause = userpause;
if (userpause)
{
if (string.IsNullOrEmpty(msg))
LogUtil.info("用户暂停");
else
LogUtil.info("系统暂停: " + msg);
}
else
LogUtil.info("用户取消暂停:" + msg);
}
} }
} }
\ No newline at end of file \ No newline at end of file
...@@ -32,7 +32,8 @@ ...@@ -32,7 +32,8 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Asa.PrintLabel"> <Reference Include="Asa.PrintLabel, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\dll\Asa.PrintLabel.dll</HintPath> <HintPath>..\dll\Asa.PrintLabel.dll</HintPath>
</Reference> </Reference>
<Reference Include="CodeLibrary"> <Reference Include="CodeLibrary">
...@@ -84,6 +85,9 @@ ...@@ -84,6 +85,9 @@
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="ZebraPrinterHelper">
<HintPath>..\dll\ZebraPrinterHelper.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="AGVService\Controllers\deviceOperateController.cs" /> <Compile Include="AGVService\Controllers\deviceOperateController.cs" />
...@@ -98,7 +102,6 @@ ...@@ -98,7 +102,6 @@
<Compile Include="AutoScanAndLabel\MainMachine _IOMonitor.cs" /> <Compile Include="AutoScanAndLabel\MainMachine _IOMonitor.cs" />
<Compile Include="AutoScanAndLabel\MainMachine _LedProcess.cs" /> <Compile Include="AutoScanAndLabel\MainMachine _LedProcess.cs" />
<Compile Include="AutoScanAndLabel\MainMachine _BtnProcess.cs" /> <Compile Include="AutoScanAndLabel\MainMachine _BtnProcess.cs" />
<Compile Include="AutoScanAndLabel\MainMachine _Printer.cs" />
<Compile Include="AutoScanAndLabel\MainMachine _LabelProcess.cs" /> <Compile Include="AutoScanAndLabel\MainMachine _LabelProcess.cs" />
<Compile Include="AutoScanAndLabel\MainMachine _MiddleProcess.cs" /> <Compile Include="AutoScanAndLabel\MainMachine _MiddleProcess.cs" />
<Compile Include="AutoScanAndLabel\MainMachine _LeftProcess.cs" /> <Compile Include="AutoScanAndLabel\MainMachine _LeftProcess.cs" />
...@@ -120,6 +123,7 @@ ...@@ -120,6 +123,7 @@
<Compile Include="DeviceLibrary\HC\HCIOManager.cs" /> <Compile Include="DeviceLibrary\HC\HCIOManager.cs" />
<Compile Include="DeviceLibrary\I_IOManager.cs" /> <Compile Include="DeviceLibrary\I_IOManager.cs" />
<Compile Include="DeviceLibrary\IOManager.cs" /> <Compile Include="DeviceLibrary\IOManager.cs" />
<Compile Include="DeviceLibrary\PrinterHelper.cs" />
<Compile Include="DeviceLibrary\RemoteDecodeHelper.cs" /> <Compile Include="DeviceLibrary\RemoteDecodeHelper.cs" />
<Compile Include="DeviceLibrary\ServerCommunication.cs" /> <Compile Include="DeviceLibrary\ServerCommunication.cs" />
<Compile Include="DeviceLibrary\ZebraPrinter.cs" /> <Compile Include="DeviceLibrary\ZebraPrinter.cs" />
......
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DeviceLibrary
{
public class PrinterHelper
{
public Asa.PrintLabel print;
ZebraPrinterHelper.ZebraManger zebraManger;
string Port;
public PrinterHelper()
{
print = new Asa.PrintLabel(Application.StartupPath + "\\Label", 300);
}
public static CustPrinterStatus LastPrintStatus = CustPrinterStatus.Unknown;
public bool Connection(string port)
{
Port = port;
//zebraManger = new ZebraPrinterHelper.ZebraManger(Port, ZebraPrinterHelper.ConnectionType.Network);
zebraManger = new ZebraPrinterHelper.ZebraManger("", ZebraPrinterHelper.ConnectionType.UsbDirect);
if (!zebraManger.Connection(out string msg))
{
LogUtil.error(msg);
return false;
}
else
{
print = new Asa.PrintLabel(Application.StartupPath + "\\Label", zebraManger.PrinterDPI);
return true;
}
}
public void Close()
{
zebraManger.Close();
}
public void EditLabel()
{
print.EditLabel();
}
public string[] GetLabelList()
{
return print.GetLabelName();
}
public bool Print(string labelname, Dictionary<string, string> data, out string msg)
{
print.LoadLabel(labelname);
var bmp = print.PrintPreview(data);
if (!zebraManger.PrintImage(bmp, out msg))
{
LogUtil.error(msg);
return false;
}
bmp.Dispose();
return true;
}
public Task<(bool, string)> IsLabelOnPeeler()
{
return Task.Run(() =>
{
bool rtn = zebraManger.IsLabelOnPeeler;
if(rtn)
{
LastPrintStatus = CustPrinterStatus.HasLabel;
}
else
{
LastPrintStatus = CustPrinterStatus.NoLabel;
}
return (rtn, "");
});
}
}
public enum CustPrinterStatus
{
Unknown,
NoLabel,
HasLabel,
}
}
...@@ -100,11 +100,11 @@ public class RemoteDecodeHelper_mod ...@@ -100,11 +100,11 @@ public class RemoteDecodeHelper_mod
{ {
lock (p) lock (p)
{ {
var pss = Process.GetProcessesByName("SmartScan"); var pss = Process.GetProcessesByName("Neo Scan");
if (pss.Length > 0) if (pss.Length > 0)
return; return;
var f = "NeoScan\\SmartScan.exe"; var f = "NeoScan\\Neo Scan.exe";
if (!File.Exists(f)) if (!File.Exists(f))
throw new Exception("找不到扫码服务器文件"); throw new Exception("找不到扫码服务器文件");
p.StartInfo = new ProcessStartInfo(f); p.StartInfo = new ProcessStartInfo(f);
......
此文件类型无法预览
此文件类型无法预览
...@@ -155,6 +155,18 @@ ...@@ -155,6 +155,18 @@
保存设置 保存设置
</summary> </summary>
</member> </member>
<member name="P:ConfigHelper.Config.Configlist">
<summary>
获取所有配置文本
</summary>
</member>
<member name="M:ConfigHelper.Config.FileSave(System.String,System.String)">
<summary>
不通过系统缓存立刻写入磁盘
</summary>
<param name="content"></param>
<param name="destfilename"></param>
</member>
<member name="M:ConfigHelper.Config.PropertyBind(System.Object,System.Object,System.String,System.String,System.String)"> <member name="M:ConfigHelper.Config.PropertyBind(System.Object,System.Object,System.String,System.String,System.String)">
<summary> <summary>
绑定UI属性 绑定UI属性
......
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
此文件类型无法预览
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1"/>
</startup>
</configuration>
此文件类型无法预览
此文件类型无法预览
<?xml version="1.0"?>
<doc>
<assembly>
<name>zxing.presentation</name>
</assembly>
<members>
<member name="T:ZXing.Presentation.BarcodeReader">
<summary>
A smart class to decode the barcode inside a bitmap object which is derived from BitmapSource
</summary>
</member>
<member name="M:ZXing.Presentation.BarcodeReader.#ctor">
<summary>
Initializes a new instance of the <see cref="T:ZXing.Presentation.BarcodeReader"/> class.
</summary>
</member>
<member name="M:ZXing.Presentation.BarcodeReader.#ctor(ZXing.Reader,System.Func{System.Windows.Media.Imaging.BitmapSource,ZXing.LuminanceSource},System.Func{ZXing.LuminanceSource,ZXing.Binarizer})">
<summary>
Initializes a new instance of the <see cref="T:ZXing.Presentation.BarcodeReader"/> class.
</summary>
<param name="reader">Sets the reader which should be used to find and decode the barcode.
If null then MultiFormatReader is used</param>
<param name="createLuminanceSource">Sets the function to create a luminance source object for a bitmap.
If null, default is used</param>
<param name="createBinarizer">Sets the function to create a binarizer object for a luminance source.
If null then HybridBinarizer is used</param>
</member>
<member name="M:ZXing.Presentation.BarcodeReader.#ctor(ZXing.Reader,System.Func{System.Windows.Media.Imaging.BitmapSource,ZXing.LuminanceSource},System.Func{ZXing.LuminanceSource,ZXing.Binarizer},System.Func{System.Byte[],System.Int32,System.Int32,ZXing.RGBLuminanceSource.BitmapFormat,ZXing.LuminanceSource})">
<summary>
Initializes a new instance of the <see cref="T:ZXing.Presentation.BarcodeReader"/> class.
</summary>
<param name="reader">Sets the reader which should be used to find and decode the barcode.
If null then MultiFormatReader is used</param>
<param name="createLuminanceSource">Sets the function to create a luminance source object for a bitmap.
If null, default is used</param>
<param name="createBinarizer">Sets the function to create a binarizer object for a luminance source.
If null then HybridBinarizer is used</param>
<param name="createRGBLuminanceSource">The create RGB luminance source.</param>
</member>
<member name="T:ZXing.Presentation.BarcodeWriter">
<summary>
A smart class to encode some content to a barcode image
</summary>
</member>
<member name="M:ZXing.Presentation.BarcodeWriter.#ctor">
<summary>
Initializes a new instance of the <see cref="T:ZXing.Presentation.BarcodeWriter"/> class.
</summary>
</member>
<member name="T:ZXing.Presentation.BarcodeWriterGeometry">
<summary>
A smart class to encode some content to a barcode image into a geometry
Autor: Rob Fonseca-Ensor
</summary>
</member>
<member name="M:ZXing.Presentation.BarcodeWriterGeometry.#ctor">
<summary>
Initializes a new instance of the <see cref="T:ZXing.Presentation.BarcodeWriterGeometry"/> class.
</summary>
</member>
<member name="M:ZXing.BitmapSourceLuminanceSource.#ctor(System.Int32,System.Int32)">
<summary>
Initializes a new instance of the <see cref="T:ZXing.BitmapSourceLuminanceSource"/> class.
</summary>
<param name="width">The width.</param>
<param name="height">The height.</param>
</member>
<member name="M:ZXing.BitmapSourceLuminanceSource.#ctor(System.Windows.Media.Imaging.BitmapSource)">
<summary>
Initializes a new instance of the <see cref="T:ZXing.BitmapSourceLuminanceSource"/> class.
</summary>
<param name="bitmap">The bitmap.</param>
</member>
<member name="M:ZXing.BitmapSourceLuminanceSource.CreateLuminanceSource(System.Byte[],System.Int32,System.Int32)">
<summary>
Should create a new luminance source with the right class type.
The method is used in methods crop and rotate.
</summary>
<param name="newLuminances">The new luminances.</param>
<param name="width">The width.</param>
<param name="height">The height.</param>
<returns></returns>
</member>
<member name="T:ZXing.Rendering.GeometryRenderer">
<summary>
Renders a barcode into a geometry
Autor: Rob Fonseca-Ensor
</summary>
</member>
<member name="M:ZXing.Rendering.GeometryRenderer.Render(ZXing.Common.BitMatrix,ZXing.BarcodeFormat,System.String)">
<summary>
Renders the specified matrix.
</summary>
<param name="matrix">The matrix.</param>
<param name="format">The format.</param>
<param name="content">The content.</param>
<returns></returns>
</member>
<member name="M:ZXing.Rendering.GeometryRenderer.Render(ZXing.Common.BitMatrix,ZXing.BarcodeFormat,System.String,ZXing.Common.EncodingOptions)">
<summary>
Renders the specified matrix.
</summary>
<param name="matrix">The matrix.</param>
<param name="format">The format.</param>
<param name="content">The content.</param>
<param name="options">The options.</param>
<returns></returns>
</member>
<member name="T:ZXing.Rendering.WriteableBitmapRenderer">
<summary>
Renders a <see cref="T:ZXing.Common.BitMatrix" /> to a <see cref="T:System.Windows.Media.Imaging.WriteableBitmap" />
</summary>
</member>
<member name="P:ZXing.Rendering.WriteableBitmapRenderer.Foreground">
<summary>
Gets or sets the foreground color.
</summary>
<value>
The foreground color.
</value>
</member>
<member name="P:ZXing.Rendering.WriteableBitmapRenderer.Background">
<summary>
Gets or sets the background color.
</summary>
<value>
The background color.
</value>
</member>
<member name="P:ZXing.Rendering.WriteableBitmapRenderer.FontFamily">
<summary>
Gets or sets the font family.
</summary>
<value>
The font family.
</value>
</member>
<member name="P:ZXing.Rendering.WriteableBitmapRenderer.FontSize">
<summary>
Gets or sets the size of the font.
</summary>
<value>
The size of the font.
</value>
</member>
<member name="P:ZXing.Rendering.WriteableBitmapRenderer.FontStretch">
<summary>
Gets or sets the font stretch.
</summary>
<value>
The font stretch.
</value>
</member>
<member name="P:ZXing.Rendering.WriteableBitmapRenderer.FontStyle">
<summary>
Gets or sets the font style.
</summary>
<value>
The font style.
</value>
</member>
<member name="P:ZXing.Rendering.WriteableBitmapRenderer.FontWeight">
<summary>
Gets or sets the font weight.
</summary>
<value>
The font weight.
</value>
</member>
<member name="M:ZXing.Rendering.WriteableBitmapRenderer.#ctor">
<summary>
Initializes a new instance of the <see cref="T:ZXing.Rendering.WriteableBitmapRenderer"/> class.
</summary>
</member>
<member name="M:ZXing.Rendering.WriteableBitmapRenderer.Render(ZXing.Common.BitMatrix,ZXing.BarcodeFormat,System.String)">
<summary>
Renders the specified matrix.
</summary>
<param name="matrix">The matrix.</param>
<param name="format">The format.</param>
<param name="content">The content.</param>
<returns></returns>
</member>
<member name="M:ZXing.Rendering.WriteableBitmapRenderer.Render(ZXing.Common.BitMatrix,ZXing.BarcodeFormat,System.String,ZXing.Common.EncodingOptions)">
<summary>
Renders the specified matrix.
</summary>
<param name="matrix">The matrix.</param>
<param name="format">The format.</param>
<param name="content">The content.</param>
<param name="options">The options.</param>
<returns></returns>
</member>
</members>
</doc>
此文件的差异太大,无法显示。
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!