Commit 8955813d 张东亮

分级管理

1 个父辈 ac414820
正在显示 30 个修改的文件 包含 891 行增加38 行删除
......@@ -15,6 +15,7 @@ namespace OnlineStore.DeviceLibrary
{
public class StoreManager
{
public static bool IsConfigMode = false;
public static int OutMoveId = 7;
public static bool TrayToOutLineTest = false;
......
......@@ -301,6 +301,7 @@ namespace OnlineStore.DeviceLibrary
/// 料仓出库:料斗拉取进出轴到P1(待机点)
/// </summary>
SO_13_InoutBack,
SO_13_InoutBack_1,
/// <summary>
/// 料仓出库:取料完成,准备去出料口
/// </summary>
......
......@@ -130,6 +130,21 @@ namespace OnlineStore.DeviceLibrary
InitPosDebugInfo();
alarmRedLedType = AlarmType.IoSingleTimeOut;
}
public void DeviceLED(bool on)
{
if (on)
{
IOMove(IO_Type.DeviceLed, IO_VALUE.HIGH);
}
else
{
IOMove(IO_Type.DeviceLed, IO_VALUE.LOW);
}
}
public bool IsDeviceLEDOn()
{
return IOValue(IO_Type.DeviceLed).Equals(IO_VALUE.HIGH);
}
void InitRowColumnSig()
{
trayAColumns = new string[] { IO_Type.SuddenStop_BTN,
......@@ -680,7 +695,7 @@ namespace OnlineStore.DeviceLibrary
if (IOValue(IO_Type.ForkB_Tray_Check).Equals(IO_VALUE.HIGH))
{
posId = $"{CID}BB{1.ToString().PadLeft(2, '0')}{1.ToString().PadLeft(2, '0')}0101";
MoveInfo.MoveParam.PosInfoBack = new InOutPosInfo("ResetNG_B",posId);
MoveInfo.MoveParam.PosInfoBack = new InOutPosInfo("ResetNG_B", posId);
MoveInfo.MoveParam.PosInfoBack.IsNG = true;
}
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready);
......
......@@ -73,7 +73,7 @@ namespace OnlineStore.DeviceLibrary
isInProcess = false;
}
}
public bool SendStoreState(string posid,DeviceStatus storeStatus)
public bool SendStoreState(string posid,string barcode,DeviceStatus storeStatus)
{
if (Monitor.TryEnter(serverLoc))
{
......@@ -89,6 +89,12 @@ namespace OnlineStore.DeviceLibrary
{
operation.boxStatus[1].data[ParamDefine.posId] = posid;
}
if (!string.IsNullOrEmpty(barcode) && !operation.boxStatus[1].data.ContainsKey(ParamDefine.barcode))
operation.boxStatus[1].data.Add(ParamDefine.barcode, barcode);
else if (!string.IsNullOrEmpty(barcode) && operation.boxStatus[1].data.ContainsKey(ParamDefine.barcode))
{
operation.boxStatus[1].data[ParamDefine.barcode] = barcode;
}
operation.boxStatus[1].status = (int)storeStatus;
LogUtil.info(JsonHelper.SerializeObject(operation));
Operation resultOperation = HttpHelper.Post(SServerManager.GetPostApi(server), operation, false);
......
......@@ -272,7 +272,7 @@ namespace OnlineStore.DeviceLibrary
case StepEnum.SI_05_GetReel:
if (!CheckReel(true))
{
WarnMsg = "未检测到料叉上的料盘,请检查";
WarnMsg = $"未检测到{MoveInfo.MoveParam.PosInfo.GetPosSide()}面料叉上的料盘,请检查";
return;
}
ignoreCurFork = false;
......@@ -337,7 +337,7 @@ namespace OnlineStore.DeviceLibrary
case StepEnum.SI_08_ToPosition:
if (!CheckReel(true))
{
WarnMsg = "未检测到料叉上的料盘,请检查";
WarnMsg = $"未检测到{MoveInfo.MoveParam.PosInfo.GetPosSide()}面料叉上的料盘,请检查";
return;
}
ignoreCurFork = false;
......
......@@ -151,13 +151,12 @@ namespace OnlineStore.DeviceLibrary
break;
case StepEnum.SO_12_PutTrayMiddle:
MoveInfo.NextMoveStep(StepEnum.SO_12_PutTrayDown);
LogInfo($"出库 {MoveInfo.SLog}:放下抽屉,移栽旋转轴到取放料水平点P2,抽屉拉取升降轴到抽屉提取低点P4[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
LogInfo($"出库 {MoveInfo.SLog}:放下抽屉,抽屉拉取升降轴到抽屉提取低点P4[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
AddHookCheck(false);
PullAxis_UpdownToLowP4();
MiddleAxis_To_P2();
break;
case StepEnum.SO_12_PutTrayDown:
MoveInfo.NextMoveStep(StepEnum.SO_13_InoutBack);
MoveInfo.NextMoveStep(StepEnum.SO_13_InoutBack_1);
//AddReelCheck(true);
LogInfo($"出库 {MoveInfo.SLog}:抽屉拉取进出轴到拍照点,检测料叉信号,同时检测{trayAColumns[GetPosColumn()]}=1 [{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
if (CheckASide())
......@@ -172,6 +171,17 @@ namespace OnlineStore.DeviceLibrary
}
PullAxis_Inout_To_Cam();
break;
case StepEnum.SO_13_InoutBack_1:
if (!CheckReel(true))
{
WarnMsg = $"未检测到{MoveInfo.MoveParam.PosInfo.GetPosSide()}面料叉上的料盘,请检查";
return;
}
ignoreCurFork = false;
MoveInfo.NextMoveStep(StepEnum.SO_13_InoutBack);
LogInfo($"出库 {MoveInfo.SLog}:抽屉拉取进出轴已到达拍照点,移栽旋转轴到取放料水平点P2[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
MiddleAxis_To_P2();
break;
case StepEnum.SO_13_InoutBack:
//检查另一面是否有出库任务
//if (MoveInfo.MoveParam.PosInfoBack == null)
......@@ -221,12 +231,6 @@ namespace OnlineStore.DeviceLibrary
// }
//}
//直接出库,执行该步骤的情况:1.另一个料叉有料;2.另一面有出库任务但出料口有料;3.另一面没有出库任务;
if(!CheckReel(true))
{
WarnMsg = "未检测到料叉上的料盘,请检查";
return;
}
ignoreCurFork = false;
MoveInfo.NextMoveStep(StepEnum.SO_14_GetReels_Ready);
MoveAxisToP1();
PullAxis_UpdownToP1();
......@@ -281,7 +285,7 @@ namespace OnlineStore.DeviceLibrary
UpdownAxisTo_P5_P11();
break;
case StepEnum.SO_18_PutReel:
if (!StoreManager.XLRStore.boxEquip.SendStoreState(MoveInfo.MoveParam.PosInfo.PosId, DeviceStatus.OutStoreBoxEnd))
if (!StoreManager.XLRStore.boxEquip.SendStoreState(MoveInfo.MoveParam.PosInfo.PosId, MoveInfo.MoveParam.PosInfo.barcode, DeviceStatus.OutStoreBoxEnd))
return;
MoveInfo.NextMoveStep(StepEnum.SO_19_InOutBackFromBuff);
LogInfo($"出库 {MoveInfo.SLog}:[{MoveInfo.MoveParam.PosInfo.ToStr()}]出库完成[耗时:{(DateTime.Now - startTime).TotalSeconds.ToString("f2")}秒],移栽X轴到待机点P1,行走机构到待机点P1[{MoveInfo.MoveParam.PosInfo.GetPosSide()}面]");
......
......@@ -236,7 +236,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.IBR06_BatchToP1))
{
Robot.IOMove(IO_Type.CameraLed, IO_VALUE.HIGH);
//Robot.IOMove(IO_Type.CameraLed, IO_VALUE.HIGH);
WorkLog("复位完成");
MoveInfo.EndMove();
}
......
......@@ -29,7 +29,21 @@ namespace OnlineStore.DeviceLibrary
public bool AutoInput = ConfigAppSettings.GetIntValue(Setting_Init.AutoInput).Equals(1);
public int DefautTargetP = 1;
public void DeviceLED(bool on)
{
if (on)
{
IOMove(IO_Type.CameraLed, IO_VALUE.HIGH);
}
else
{
IOMove(IO_Type.CameraLed, IO_VALUE.LOW);
}
}
public bool IsDeviceLEDOn()
{
return IOValue(IO_Type.CameraLed).Equals(IO_VALUE.HIGH);
}
public InputEquip(string cid, InputEquip_Config config)
{
Name = (" " + "上料机构" + " ").ToUpper();
......
......@@ -1107,7 +1107,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (MoveInfo.IsStep(StepEnum.IO31_ClampRelax))
{
if (!StoreManager.XLRStore.boxEquip.SendStoreState(MoveInfo.MoveParam.PosInfo.PosId, DeviceStatus.OutStoreEnd))
if (!StoreManager.XLRStore.boxEquip.SendStoreState(MoveInfo.MoveParam.PosInfo.PosId, MoveInfo.MoveParam.PosInfo.barcode, DeviceStatus.OutStoreEnd))
return;
if (shelf.Equals(1))
{
......
......@@ -26,18 +26,13 @@ namespace OnlineStore.XLRStore
private void FrmPwd_Load(object sender, EventArgs e)
{
this.DialogResult = DialogResult.None;
txtPwd.Text = ConfigAppSettings.GetValue(Setting_Init.DefaultPWD);
//txtPwd.Text = ConfigAppSettings.GetValue(Setting_Init.DefaultPWD);
}
private void btnNext_Click(object sender, EventArgs e)
{
string pwd = txtPwd.Text;
string configPwd = ConfigAppSettings.GetValue(Setting_Init.Config_Pwd);
if (configPwd.Equals(""))
{
configPwd = "123456";
ConfigAppSettings.SaveValue(Setting_Init.Config_Pwd,configPwd);
}
string configPwd = ConfigHelper.Config.Get(Setting_Init.Config_Pwd,"123456");
if (pwd.Equals(configPwd))
{
this.DialogResult = DialogResult.OK;
......
......@@ -70,6 +70,7 @@ namespace OnlineStore.XLRStore
}
//tabControl1.TabPages.Remove(tabPage5);
timer1.Start();
启用配置模式ToolStripMenuItem.Enabled = true;
}
private FrmInputEquip inputEquip = null;
private FrmBoxEquip box = null;
......@@ -86,10 +87,13 @@ namespace OnlineStore.XLRStore
Application.Exit();
return;
}
ConfigModeEvent += FrmXLRStore_ConfigModeEvent;
inputEquip = new FrmInputEquip(StoreManager.XLRStore.inputEquip);
ConfigModeEvent += inputEquip.Frm_ConfigModeEvent;
AddForm(" 入料机构 ", inputEquip);
box = new FrmBoxEquip(StoreManager.XLRStore.boxEquip);
ConfigModeEvent += box.Frm_ConfigModeEvent;
AddForm(" 存储机构 ", box);
托盘初始化ToolStripMenuItem.Visible = ConfigAppSettings.GetIntValue(Setting_Init.OpenRFIDWrite).Equals(1);
......@@ -824,5 +828,35 @@ namespace OnlineStore.XLRStore
StoreManager.XLRStore.boxEquip.ignoreCurFork = true;
LogUtil.info(StoreManager.XLRStore.boxEquip.Name + "点击:忽略当次料叉检查");
}
public delegate void ConfigModeEventHandler(bool state);
public event ConfigModeEventHandler ConfigModeEvent;
private void 启用配置模式ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (!StoreManager.IsConfigMode)
{
FrmPwd fw = new FrmPwd(10);
DialogResult result = fw.ShowDialog();
if (!result.Equals(DialogResult.OK))
return;
}
StoreManager.IsConfigMode = StoreManager.IsConfigMode ? false : true;
(sender as ToolStripMenuItem).Text = !StoreManager.IsConfigMode ? "启用配置模式" : "停用配置模式";
if (StoreManager.IsConfigMode)
{
ConfigModeEvent?.Invoke(true);
}
else
{
ConfigModeEvent?.Invoke(false);
}
}
private void FrmXLRStore_ConfigModeEvent(bool state)
{
}
}
}
......@@ -66,8 +66,9 @@
<Reference Include="CodeLibrary">
<HintPath>..\..\dll\CodeLibrary.dll</HintPath>
</Reference>
<Reference Include="ConfigHelper">
<HintPath>..\..\..\..\SharedRefDll\Neotel\ConfigHelper.dll</HintPath>
<Reference Include="ConfigHelper, Version=1.0.0.2, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\Debug\ConfigHelper.dll</HintPath>
</Reference>
<Reference Include="halcondotnet">
<HintPath>..\..\dll\halcondotnet.dll</HintPath>
......@@ -121,6 +122,12 @@
<Compile Include="boxForm\FrmPosResult.Designer.cs">
<DependentUpon>FrmPosResult.cs</DependentUpon>
</Compile>
<Compile Include="boxForm\userControl\Box_IO.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="boxForm\userControl\Box_IO.Designer.cs">
<DependentUpon>Box_IO.cs</DependentUpon>
</Compile>
<Compile Include="boxForm\userControl\UCStatusPanel.cs">
<SubType>UserControl</SubType>
</Compile>
......@@ -151,6 +158,18 @@
<Compile Include="inputForm\FrmBatchMove.Designer.cs">
<DependentUpon>FrmBatchMove.cs</DependentUpon>
</Compile>
<Compile Include="inputForm\uc\Input_AxisControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="inputForm\uc\Input_AxisControl.Designer.cs">
<DependentUpon>Input_AxisControl.cs</DependentUpon>
</Compile>
<Compile Include="inputForm\uc\Input_IO.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="inputForm\uc\Input_IO.Designer.cs">
<DependentUpon>Input_IO.cs</DependentUpon>
</Compile>
<Compile Include="useControl\AxisMoveControl.cs">
<SubType>UserControl</SubType>
</Compile>
......@@ -235,6 +254,9 @@
<EmbeddedResource Include="boxForm\FrmPosResult.resx">
<DependentUpon>FrmPosResult.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="boxForm\userControl\Box_IO.resx">
<DependentUpon>Box_IO.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="boxForm\userControl\UCStatusPanel.resx">
<DependentUpon>UCStatusPanel.cs</DependentUpon>
</EmbeddedResource>
......@@ -250,6 +272,12 @@
<EmbeddedResource Include="inputForm\FrmBatchMove.resx">
<DependentUpon>FrmBatchMove.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="inputForm\uc\Input_AxisControl.resx">
<DependentUpon>Input_AxisControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="inputForm\uc\Input_IO.resx">
<DependentUpon>Input_IO.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="useControl\AxisMoveControl.resx">
<DependentUpon>AxisMoveControl.cs</DependentUpon>
</EmbeddedResource>
......
......@@ -14,7 +14,7 @@ using System.IO;
namespace OnlineStore.XLRStore
{
internal partial class FrmAxisMove : FrmBase
internal partial class FrmAxisMove:Form
{
internal FrmAxisMove(bool isDebug)
{
......
using OnlineStore.Common;
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using UserFromControl;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;
namespace OnlineStore.XLRStore.inputForm.uc
{
public partial class Box_IO : UserControl
{
public Box_IO(BoxEquip equip)
{
Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
this.equip = equip;
LoadIOList();
humitempures.Add(ucHumitempure1);
humitempures.Add(ucHumitempure2);
humitempures.Add(ucHumitempure3);
humitempures.Add(ucHumitempure4);
}
List<UCHumitempure> humitempures = new List<UCHumitempure>();
private BoxEquip equip;
IOTextControl selectControl = null;
protected Dictionary<string, IOTextControl> DIControlList = new Dictionary<string, IOTextControl>();
protected Dictionary<string, IOTextControl> DOControlList = new Dictionary<string, IOTextControl>();
protected void ReadIOList()
{
foreach (string key in DIControlList.Keys)
{
IOTextControl control = DIControlList[key];
int iov = (int)IOManager.IOValue(key, equip.DeviceID);
if (iov != control.IOValue)
{
control.IOValue = iov;
control.ShowData();
}
}
foreach (string key in this.DOControlList.Keys)
{
IOTextControl control = DOControlList[key];
int iov = (int)IOManager.DOValue(key, equip.DeviceID);
if (iov != control.IOValue)
{
control.IOValue = iov;
control.ShowData();
}
}
}
private void LoadIOList()
{
int maxCount = 20;
int roleindex = 0;
this.tableLayoutPanel1.RowStyles.Clear();
this.tableLayoutPanel1.RowCount = maxCount;
//this.tableLayoutPanel3.RowStyles.Clear();
//this.tableLayoutPanel3.RowCount = maxCount;
int i = 0;
foreach (ConfigIO ioValue in equip.Config.DIList.Values)
{
IOTextControl control = new IOTextControl(ioValue.ElectricalDefinition + "_" + ioValue.Explain, ioValue.ProName);
//if (i >= maxCount)
//{
// this.tableLayoutPanel3.RowStyles.Add(new RowStyle(SizeType.Absolute, 28));
// this.tableLayoutPanel3.Controls.Add(control, 0, roleindex - maxCount);
//}
//else
{
this.tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 28));
this.tableLayoutPanel1.Controls.Add(control, 0, roleindex);
}
roleindex++;
i++;
DIControlList.Add(ioValue.ProName, control);
}
tableLayoutPanel2.RowStyles.Clear();
this.tableLayoutPanel2.RowCount = maxCount;
roleindex = 0;
i = 0;
foreach (ConfigIO ioValue in equip.Config.DOList.Values)
{
IOTextControl control = new IOTextControl(ioValue.ElectricalDefinition + "_" + ioValue.Explain, ioValue.ProName);
control.Click += Control_Click;
this.tableLayoutPanel2.RowStyles.Add(new RowStyle(SizeType.Absolute, 28));
this.tableLayoutPanel2.Controls.Add(control, 0, roleindex);
roleindex++;
i++;
DOControlList.Add(ioValue.ProName, control);
}
this.SuspendLayout(); //此处为不闪屏,一定要有的!
cmbWriteIO.DataSource = new List<ConfigIO>(equip.Config.DOList.Values);
cmbWriteIO.ValueMember = "ProName";
cmbWriteIO.DisplayMember = "DisplayStr";
}
private void Control_Click(object sender, EventArgs e)
{
IOTextControl control = (IOTextControl)sender;
string name = control.Name.Substring(3, control.Name.Length - 3);
List<string> keyList = new List<string>(DOControlList.Keys);
int index = keyList.IndexOf(name);
if (index >= 0)
{
cmbWriteIO.SelectedIndex = index;
}
}
private void cmbWriteIO_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbWriteIO.SelectedIndex >= 0)
{
ConfigIO io = GetSelectDO();
if (io != null)
{
// txtIp.Text = io.DeviceName;
txtDOIndex.Text = io.GetIOAddr().ToString();
txtDoName.Text = io.IO_IP;
txtSlaveId.Text = io.SlaveID.ToString();
lblAddr.Text = txtDoName.Text + "_" + txtDOIndex.Text;
IOTextControl newControl = DOControlList[io.ProName];
if (selectControl != null) { selectControl.BackColor = Color.White; }
newControl.BackColor = Color.SkyBlue;
selectControl = newControl;
//txtIOInfo.Text = "IP:" + io.DeviceName + " /" + io.GetIOAddr().ToString();
}
}
}
private ConfigIO GetSelectDO()
{
string text = cmbWriteIO.SelectedValue.ToString();
string newType = text.Replace("SW1_", "SW_").Replace("SW2_", "SW_").Replace("SW3_", "SW_").Replace("SW4_", "SW_");
if (equip.Config.DOList.ContainsKey(newType))
{
ConfigIO io = equip.Config.DOList[newType];
return io;
}
return null;
}
private void WriteDO(IO_VALUE value)
{
string deviceName = txtDoName.Text;
int index = FormUtil.GetIntValue(txtDOIndex);
// IO_VALUE value = checkBox1.Checked ? IO_VALUE.HIGH : IO_VALUE.LOW;
int time = FormUtil.GetIntValue(txtWriteTime);
int slaveId = FormUtil.GetIntValue(txtSlaveId);
if (time > 0)
{
IOManager.instance.WriteSingleDO(deviceName, (byte)slaveId, (ushort)index, (IO_VALUE)value, time);
}
else
{
IOManager.instance.WriteSingleDO(deviceName, (byte)slaveId, (ushort)index, (IO_VALUE)value);
}
}
private void btnCloseAll_Click(object sender, EventArgs e)
{
//foreach (Control con in groupDO.Controls)
//{
// if (con is Button)
// {
// con.BackColor = BackColor = Color.White;
// }
//}
//foreach (ConfigIO io in inputEquip.baseConfig.DOList.Values)
//{
// IOManager.instance.WriteSingleDO(io.IO_IP, io.SlaveID, io.GetIOAddr(), IO_VALUE.LOW);
//}
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
if (!this.Visible)
{
return;
}
ReadIOList();
List<HumitureParam> huparam = HumitureBean.GetHumitureParams();
for (int i = 0; i < humitempures.Count; i++)
{
humitempures[i].Humiti = huparam[i].Humidity;
humitempures[i].Tempure = huparam[i].Temperate;
humitempures[i].Nitrogen = 100 - huparam[i].OxygenV;
humitempures[i].HumiName = huparam[i].DeviceAddress;
}
}
catch (Exception ex)
{
LogUtil.error(equip.Name + "读取IO定时器出错:", ex);
}
}
private void btnOpenDo_Click(object sender, EventArgs e)
{
WriteDO(IO_VALUE.HIGH);
}
private void btnWriteSingleDO_Click(object sender, EventArgs e)
{
WriteDO(IO_VALUE.LOW);
}
private void cmbWriteIO_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0)
{
return;
}
e.DrawBackground();
e.DrawFocusRectangle();
if (cmbWriteIO.Items.Count > e.Index)
{
ConfigIO io = (ConfigIO)cmbWriteIO.Items[e.Index];
e.Graphics.DrawString(io.DisplayStr, e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
}
}
private void Input_IO_Load(object sender, EventArgs e)
{
timer1.Start();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>
\ No newline at end of file
......@@ -85,7 +85,7 @@ namespace OnlineStore.XLRStore
axisMoveControl1.LoadData(StoreManager.XLRStore.inputEquip, new AxisBean[] { moveBean.BatchAxis });
batchAxisP1.SetMoveData(moveBean.BatchAxis, StoreManager.XLRStore.inputEquip.Config.BatchAxis_P1Speed, moveBean.Config.BatchAxisP1);
batchAxisP2.SetMoveData(moveBean.BatchAxis, StoreManager.XLRStore.inputEquip.Config.BatchAxis_P2Speed, moveBean.Config.BatchAxisP2 );
batchAxisP2.SetMoveData(moveBean.BatchAxis, StoreManager.XLRStore.inputEquip.Config.BatchAxis_P2Speed, moveBean.Config.BatchAxisP2);
batchAxisP4.SetMoveData(moveBean.BatchAxis, StoreManager.XLRStore.inputEquip.Config.BatchAxis_P4Speed, moveBean.Config.BatchAxisP4, true);
lblWarnMsg.Text = moveBean.WarnMsg;
......@@ -114,9 +114,9 @@ namespace OnlineStore.XLRStore
int p2 = batchAxisP2.PointValue;
int p4 = batchAxisP4.PointValue;
if (p4<0)
if (p4 < 0)
{
MessageBox.Show( "扫码时上升高度P4不能小于0 ,请重新设置P4点位置", "保存失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
MessageBox.Show("扫码时上升高度P4不能小于0 ,请重新设置P4点位置", "保存失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
......@@ -252,7 +252,7 @@ namespace OnlineStore.XLRStore
}
moveBean.ShelfNeedLeave = true;
LogUtil.info(moveBean.Name + "用户点击:"+btnShelfOut.Text );
LogUtil.info(moveBean.Name + "用户点击:" + btnShelfOut.Text);
}
private void btnScanTest_Click(object sender, EventArgs e)
......@@ -283,14 +283,14 @@ namespace OnlineStore.XLRStore
private void LineStart_A_Click(object sender, EventArgs e)
{
LogUtil.info(moveBean.Name + "点击:" + LineStart_A .Text);
moveBean.LineRun ();
LogUtil.info(moveBean.Name + "点击:" + LineStart_A.Text);
moveBean.LineRun();
}
private void LineBack_A_Click(object sender, EventArgs e)
{
LogUtil.info(moveBean.Name + "点击:" + LineBack_A.Text);
moveBean.LineBack ();
moveBean.LineBack();
}
private void LineStop_A_Click(object sender, EventArgs e)
......@@ -317,6 +317,14 @@ namespace OnlineStore.XLRStore
moveBean.MoveStop = chbMoveStop.Checked;
LogUtil.info(moveBean.Name + "用户切换是否暂停: " + moveBean.MoveStop);
}
public void ShowConfig(bool state)
{
axisMoveControl1.Visible = state;
groupBox1.Visible = state;
groupBox2.Visible = state;
groupBox3.Visible = state;
chbAutoOut.Visible = state;
}
}
}
......
using OnlineStore.DeviceLibrary;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OnlineStore.XLRStore.inputForm.uc
{
public partial class Input_AxisControl : UserControl
{
public Input_AxisControl(InputEquip inputEquip)
{
Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
this.inputEquip = inputEquip;
LoadPoint();
LoadAxis();
PointEditEnable(false);
IsLoad = true;
}
private InputEquip inputEquip;
private bool IsLoad = false;
private void LoadPoint()
{
InputEquip_Config config = inputEquip.Config;
mideleAxisP1.SetMoveData(inputEquip.MiddleAxis, config.Middle_P1_Speed, config.Middle_P1);
mideleAxisP2.SetMoveData(inputEquip.MiddleAxis, config.Middle_P2_Speed, config.Middle_P2_ATake);
mideleAxisP3.SetMoveData(inputEquip.MiddleAxis, config.Middle_P3_Speed, config.Middle_P3_BTake);
mideleAxisP4.SetMoveData(inputEquip.MiddleAxis, config.Middle_P4_Speed, config.Middle_P4_AUpper);
mideleAxisP5.SetMoveData(inputEquip.MiddleAxis, config.Middle_P5_Speed, config.Middle_P5_BUpper);
mideleAxisP6.SetMoveData(inputEquip.MiddleAxis, config.Middle_P6_Speed, config.Middle_P6_NG);
mideleAxisP7.SetMoveData(inputEquip.MiddleAxis, config.Middle_P7_Speed, config.Middle_P7_AUnder);
mideleAxisP8.SetMoveData(inputEquip.MiddleAxis, config.Middle_P8_Speed, config.Middle_P8_BUnder);
updownAxisP1.SetMoveData(inputEquip.UpdownAxis, config.Updown_P1_Speed, config.Updown_P1);
updownAxisP2.SetMoveData(inputEquip.UpdownAxis, config.Updown_P2_Speed, config.Updown_P2_ATake);
updownAxisP3.SetMoveData(inputEquip.UpdownAxis, config.Updown_P3_Speed, config.Updown_P3_BTake);
updownAxisP4.SetMoveData(inputEquip.UpdownAxis, config.Updown_P4_Speed, config.Updown_P4_AUpperH);
updownAxisP5.SetMoveData(inputEquip.UpdownAxis, config.Updown_P5_Speed, config.Updown_P5_AUpperL7);
updownAxisP6.SetMoveData(inputEquip.UpdownAxis, config.Updown_P6_Speed, config.Updown_P6_AUnderH);
updownAxisP7.SetMoveData(inputEquip.UpdownAxis, config.Updown_P7_Speed, config.Updown_P7_AUnderL7);
updownAxisP8.SetMoveData(inputEquip.UpdownAxis, config.Updown_P8_Speed, config.Updown_P8_NGH);
updownAxisP9.SetMoveData(inputEquip.UpdownAxis, config.Updown_P9_Speed, config.Updown_P9_NGL);
updownAxisP10.SetMoveData(inputEquip.UpdownAxis, config.Updown_P10_Speed, config.Updown_P10_BUpperH);
updownAxisP11.SetMoveData(inputEquip.UpdownAxis, config.Updown_P11_Speed, config.Updown_P11_BUpperL7);
updownAxisP12.SetMoveData(inputEquip.UpdownAxis, config.Updown_P12_Speed, config.Updown_P12_BUnderH);
updownAxisP13.SetMoveData(inputEquip.UpdownAxis, config.Updown_P13_Speed, config.Updown_P13_BUnderL7);
updownAxisP14.SetMoveData(inputEquip.UpdownAxis, config.Updown_P14_Speed, config.Updown_P14_AUpperL13);
updownAxisP15.SetMoveData(inputEquip.UpdownAxis, config.Updown_P15_Speed, config.Updown_P15_AUnderL13);
updownAxisP16.SetMoveData(inputEquip.UpdownAxis, config.Updown_P16_Speed, config.Updown_P16_BUpperL13);
updownAxisP17.SetMoveData(inputEquip.UpdownAxis, config.Updown_P17_Speed, config.Updown_P17_BUnderL13);
inoutAxisP1.SetMoveData(inputEquip.InOutAxis, config.Inout_P1_Speed, config.Inout_P1);
inoutAxisP2.SetMoveData(inputEquip.InOutAxis, config.Inout_P2_Speed, config.Inout_P2);
inoutAxisP3.SetMoveData(inputEquip.InOutAxis, config.Inout_P3_Speed, config.Inout_P3);
inoutAxisP4.SetMoveData(inputEquip.InOutAxis, config.Inout_P4_Speed, config.Inout_P4);
inoutAxisP5.SetMoveData(inputEquip.InOutAxis, config.Inout_P5_Speed, config.Inout_P5);
inoutAxisP6.SetMoveData(inputEquip.InOutAxis, config.Inout_P6_Speed, config.Inout_P6);
}
private void LoadAxis()
{
axisMoveControl1.LoadData(inputEquip, new AxisBean[] { inputEquip.MiddleAxis, inputEquip.UpdownAxis, inputEquip.InOutAxis });
}
private void chbPointEditEnable_CheckedChanged(object sender, EventArgs e)
{
if (!IsLoad)
{
return;
}
PointEditEnable(chbPointEditEnable.Checked);
}
private void PointEditEnable(bool enable)
{
groupBox2.Enabled = enable;
groupBox5.Enabled = enable;
groupBox7.Enabled = enable;
groupBox8.Enabled = enable;
groupBox9.Enabled = enable;
groupBox10.Enabled = enable;
groupBox11.Enabled = enable;
}
private void btnSave_Click(object sender, EventArgs e)
{
inputEquip.Config.Updown_P1 = updownAxisP1.PointValue;
inputEquip.Config.Updown_P2_ATake = updownAxisP2.PointValue;
inputEquip.Config.Updown_P3_BTake = updownAxisP3.PointValue;
inputEquip.Config.Updown_P4_AUpperH = updownAxisP4.PointValue;
inputEquip.Config.Updown_P5_AUpperL7 = updownAxisP5.PointValue;
inputEquip.Config.Updown_P6_AUnderH = updownAxisP6.PointValue;
inputEquip.Config.Updown_P7_AUnderL7 = updownAxisP7.PointValue;
inputEquip.Config.Updown_P8_NGH = updownAxisP8.PointValue;
inputEquip.Config.Updown_P9_NGL = updownAxisP9.PointValue;
inputEquip.Config.Updown_P10_BUpperH = updownAxisP10.PointValue;
inputEquip.Config.Updown_P11_BUpperL7 = updownAxisP11.PointValue;
inputEquip.Config.Updown_P12_BUnderH = updownAxisP12.PointValue;
inputEquip.Config.Updown_P13_BUnderL7 = updownAxisP13.PointValue;
inputEquip.Config.Updown_P14_AUpperL13 = updownAxisP14.PointValue;
inputEquip.Config.Updown_P15_AUnderL13 = updownAxisP15.PointValue;
inputEquip.Config.Updown_P16_BUpperL13 = updownAxisP16.PointValue;
inputEquip.Config.Updown_P17_BUnderL13 = updownAxisP17.PointValue;
inputEquip.Config.Middle_P1 = mideleAxisP1.PointValue;
inputEquip.Config.Middle_P2_ATake = mideleAxisP2.PointValue;
inputEquip.Config.Middle_P3_BTake = mideleAxisP3.PointValue;
inputEquip.Config.Middle_P4_AUpper = mideleAxisP4.PointValue;
inputEquip.Config.Middle_P5_BUpper = mideleAxisP5.PointValue;
inputEquip.Config.Middle_P6_NG = mideleAxisP6.PointValue;
inputEquip.Config.Middle_P7_AUnder = mideleAxisP7.PointValue;
inputEquip.Config.Middle_P8_BUnder = mideleAxisP8.PointValue;
inputEquip.Config.Inout_P1 = inoutAxisP1.PointValue;
inputEquip.Config.Inout_P2 = inoutAxisP2.PointValue;
inputEquip.Config.Inout_P3 = inoutAxisP3.PointValue;
inputEquip.Config.Inout_P4 = inoutAxisP4.PointValue;
inputEquip.Config.Inout_P5 = inoutAxisP5.PointValue;
inputEquip.Config.Inout_P6 = inoutAxisP6.PointValue;
StoreManager.SaveInputEquipConfig(inputEquip.Config);
MessageBox.Show("保存成功");
}
private void Input_AxisControl_VisibleChanged(object sender, EventArgs e)
{
if (!IsLoad)
{
return;
}
chbPointEditEnable.Checked = false;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>
\ No newline at end of file
......@@ -45,7 +45,7 @@ namespace OnlineStore.XLRStore.useControl
this.btnMove.Location = new System.Drawing.Point(3, 3);
this.btnMove.Name = "btnMove";
this.btnMove.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.btnMove.Size = new System.Drawing.Size(154, 29);
this.btnMove.Size = new System.Drawing.Size(139, 29);
this.btnMove.TabIndex = 315;
this.btnMove.Text = "上升待机点P1:";
this.btnMove.UseVisualStyleBackColor = true;
......@@ -58,11 +58,11 @@ namespace OnlineStore.XLRStore.useControl
this.txtPoint.Cursor = System.Windows.Forms.Cursors.IBeam;
this.txtPoint.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtPoint.ForeColor = System.Drawing.SystemColors.WindowText;
this.txtPoint.Location = new System.Drawing.Point(160, 3);
this.txtPoint.Location = new System.Drawing.Point(148, 3);
this.txtPoint.MaxLength = 12;
this.txtPoint.Name = "txtPoint";
this.txtPoint.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.txtPoint.Size = new System.Drawing.Size(70, 26);
this.txtPoint.Size = new System.Drawing.Size(96, 31);
this.txtPoint.TabIndex = 316;
this.txtPoint.Text = "-1";
//
......@@ -73,7 +73,7 @@ namespace OnlineStore.XLRStore.useControl
this.Controls.Add(this.txtPoint);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Name = "AxisPointControl";
this.Size = new System.Drawing.Size(233, 34);
this.Size = new System.Drawing.Size(247, 34);
this.ResumeLayout(false);
this.PerformLayout();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!