banboshi_V1/halftoneproject-master/Code/UI/UICodeScanner.cs
2023-10-31 13:19:29 +08:00

127 lines
4.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Advantech.Motion;
using Newtonsoft.Json;
using ProductionControl.Device;
using ProductionControl.UI.PropExtend;
using ProductionControl.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using static ProductionControl.Device.Axis;
using static ProductionControl.UI.UIAxis;
namespace ProductionControl.UI
{
public partial class UICodeScanner : UserControl
{
SynchronizationContext SyncContext = null;
public Action<int, string> log;
//
public class CodeScannerProp
{
[PropertyOrder(1), Browsable(true), Category("数据"), DisplayName("Code"), Description("Code"), ReadOnly(true), JsonIgnore]
public string code { get; set; }
}
private CodeScannerProp prop = new CodeScannerProp();
private CodeScanner dev;
public UICodeScanner()
{
InitializeComponent();
//获取UI线程同步上下文
SyncContext = SynchronizationContext.Current;
//init();
}
public void init()
{
try
{
this.propertyGrid1.SelectedObject = prop;
dev = new CodeScanner();
dev.log = log;
dev.start();
//IN
dev.ScanerEvent += new System.Action<string>((data) => {
prop.code = data;
this.refreshUI();
});
//this.toolStrip1.Enabled = true;
this.propertyGrid1.Enabled = true;
}
catch (Exception ex)
{
//this.toolStrip1.Enabled = false;
this.propertyGrid1.Enabled = false;
//MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.closeDev();
}
}
private void refreshUI()
{
SyncContext.Post(m =>
{
var result = m as string;
propertyGrid1.Refresh();
//tbtnJogOnOff.Text = (prop.AxState == AxisState.STA_AX_EXT_JOG) ? "关闭Jog" : "开启Jog";
//tbtnLeft.Enabled = tbtnRight.Enabled = (prop.AxState == AxisState.STA_AX_EXT_JOG);
}, "异步操作完成结果");
}
private void closeDev()
{
try
{
if (dev == null)
return;
dev.stop();
}
catch (Exception ex)
{
//this.toolStrip1.Enabled = false;
this.propertyGrid1.Enabled = false;
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
protected override void OnHandleDestroyed(EventArgs e)
{
base.OnHandleDestroyed(e);
// 在此添加需要手动释放资源的代码
this.closeDev();
}
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
{
//其中包含了两个重要的属性OldValue和ChangeItem。
//ChangeItem是“PropertyDescriptorGridEntry”类型。一般可以通过ChangeItem.PropertyDescriptor.ComponentType查找到属性的实际类型。
//而通过ChangeItem的Label则可以查看到当前在属性编辑输入框中显示的值。
string className = e.ChangedItem.PropertyDescriptor.ComponentType.Name;
string propertyName = e.ChangedItem.PropertyDescriptor.Name;
var oldValue = e.OldValue;
var newValue = e.ChangedItem.Value;
switch (propertyName)
{
case "xxx":
//refreshAxisVelParam();
break;
}
}
}
}