Commit d75c6cd4 ke.sun

1

2 个父辈 3983896a f996aeb3
正在显示 54 个修改的文件 包含 227 行增加2249 行删除
......@@ -85,7 +85,6 @@
<Compile Include="logs\TempLog.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Setting_Init.cs" />
<Compile Include="util\Color.cs" />
<Compile Include="util\ConfigAppSettings.cs" />
<Compile Include="util\FileUtil.cs" />
<Compile Include="util\FormUtil.cs" />
......

\ No newline at end of file
......@@ -20,15 +20,15 @@ namespace URSoldering.DeviceLibrary
/// 电路板ID
/// </summary>
public int boardId { get; set; }
public string AoiFileName { get; set; }
/// <summary>
/// 条码
/// </summary>
public string WareCode { get; set; }
/// <summary>
/// 机器人焊接时Z轴的高点
/// </summary>
public double ZHighValue { get; set; }
///// <summary>
///// 机器人焊接时Z轴的高点
///// </summary>
//public double ZHighValue { get; set; }
/// <summary>
/// 工位编号,夹具编号(每一个程序需要配置四个夹具的位置,防止位置偏差)
......@@ -56,14 +56,14 @@ namespace URSoldering.DeviceLibrary
/// 焊点列表
/// </summary>
public List<WeldPointInfo> pointList { get; set; }
/// <summary>
/// 原点坐标X
/// </summary>
public double originX { get; set; }
/// <summary>
/// 原点坐标Y
/// </summary>
public double originY { get; set; }
///// <summary>
///// 原点坐标X
///// </summary>
//public double originX { get; set; }
///// <summary>
///// 原点坐标Y
///// </summary>
//public double originY { get; set; }
/// <summary>
/// 图片名称
/// </summary>
......@@ -72,10 +72,10 @@ namespace URSoldering.DeviceLibrary
/// 焊接预估时间
/// </summary>
public double planNeedTime { get; set; }
/// <summary>
/// 固定原点的位置,1=左上角,2=左下角,3=右上角,4=右下角
/// </summary>
public int orgType { get; set; }
///// <summary>
///// 固定原点的位置,1=左上角,2=左下角,3=右上角,4=右下角
///// </summary>
//public int orgType { get; set; }
/// <summary>
/// 已经焊接次数,每次修改板子都会重置
/// </summary>
......@@ -124,39 +124,38 @@ namespace URSoldering.DeviceLibrary
else
{
return myImage;
}
}
}
public double getImageOrgX()
{
double orgX = originX;
if (orgType == 2)
{
orgX = originX + boardLength;
}
//public double getImageOrgX()
//{
// double orgX = originX;
// if (orgType == 2)
// {
// orgX = originX + boardLength;
// }
else if (orgType == 4)
{
orgX = originX + boardLength;
}
return orgX;
}
// else if (orgType == 4)
// {
// orgX = originX + boardLength;
// }
// return orgX;
//}
public double getImageOrgY()
{
double orgY = originY;
//public double getImageOrgY()
//{
// double orgY = originY;
if (orgType == 3)
{
orgY = originY - boardWidth;
}
else if (orgType == 4)
{
orgY = originY - boardWidth;
}
return orgY;
}
// if (orgType == 3)
// {
// orgY = originY - boardWidth;
// }
// else if (orgType == 4)
// {
// orgY = originY - boardWidth;
// }
// return orgY;
//}
}
/// <summary>
......
......@@ -107,10 +107,10 @@ namespace URSoldering.DeviceLibrary
LogUtil.info("加载产品配置:name=" + board.boardName + "为启动时的默认板子!");
CurrBoard = board;
}
if (board.orgType == 0)
{
board.orgType = 1;
}
//if (board.orgType == 0)
//{
// board.orgType = 1;
//}
boardList.Add(board);
}
if (isUpdate)
......@@ -152,22 +152,22 @@ namespace URSoldering.DeviceLibrary
LogUtil.error("设置默认的电路板出错:" + ex.ToString());
}
}
public static void Update(BoardInfo board)
{
int index = 0;
board.myImage = null;
foreach (BoardInfo bo in boardList)
{
if (bo.boardId.Equals(board.boardId))
{
boardList[index] = board;
break;
}
index++;
}
SaveListToFile(boardList);
}
{
int index = 0;
board.myImage = null;
foreach (BoardInfo bo in boardList)
{
if (bo.boardId.Equals(board.boardId))
{
boardList[index] = board;
break;
}
index++;
}
SaveListToFile(boardList);
}
public static void Add(BoardInfo board)
{
......
......@@ -10,6 +10,10 @@ namespace URSoldering.DeviceLibrary
{
public class URRobotClient
{
public delegate void SafetModePro(string mode);
public static event SafetModePro SafetModeFun;
public delegate void RobotModePro(string mode);
public static event RobotModePro RobotModeFun;
private static URTcpClient listenClient = null;
private static int Port = 30003;
public static string LastMoveCMD = "";
......@@ -88,9 +92,10 @@ namespace URSoldering.DeviceLibrary
doubleList.Add(messageSize);
if (maxdouble > 61)
{
int[] array = new int[] { 55,56,57,58,59,60,94,101,103,132};
for (int i = 0; i < maxdouble; i++)
{
if (i >= 55 && i <= 61)
if (array.Contains(i))
{
if (reviceData.Length >= (12 + i * 8))
{
......@@ -118,11 +123,16 @@ namespace URSoldering.DeviceLibrary
double ry = doubleList[60] * 1;
double rz = doubleList[61] * 1;
URPointValue newp = new URPointValue(x, y, z, rx, ry, rz);
//string reviceMsg = ByteToStr(reviceData);
int robotMode =(int) doubleList[95];
int safetyMode =(int) doubleList[102];
string robotModeStr = GetRobotMode(robotMode);
string safetyModeStr = GetSafetyMode(safetyMode);
int programState = (int)doubleList[132];
SafetModeFun?.Invoke(safetyModeStr);
RobotModeFun?.Invoke(robotModeStr);
if (!URRobotControl.IsSamePoint(newp, URRobotControl.LastPoint))
{
LogUtil.URLInfo(LogName + "length[" + messageSize + "],data长[" + reviceData.Length + "]坐标" + newp.ToShowStr());
LogUtil.URLInfo(LogName + "length[" + messageSize + "],data长[" + reviceData.Length + "],【" + programState + "】【" + robotModeStr + "】【" + safetyModeStr + "】坐标" + newp.ToShowStr()+"");
}
URRobotControl.LastPoint = newp;
}
......@@ -139,6 +149,57 @@ namespace URSoldering.DeviceLibrary
StopListen();
}
}
public static string GetRobotMode(int type)
{
switch (type)
{
case 0:
return "ROBOT_MODE_DISCONNECTED";
case 1:
return "ROBOT_MODE_CONFIRM_SAFETY";
case 2:
return "ROBOT_MODE_BOOTING";
case 3:
return "ROBOT_MODE_POWER_OFF";
case 4:
return "ROBOT_MODE_POWER_ON";
case 5:
return "ROBOT_MODE_IDLE";
case 6:
return "ROBOT_MODE_BACKDRIVE";
case 7:
return "ROBOT_MODE_RUNNING";
case 8:
return "ROBOT_MODE_UPDATING_FIRMWARE";
default:
return "";
}
}
public static string GetSafetyMode(int type)
{
switch (type)
{
case 1:
return "SAFETY_MODE_NORMAL";
case 2:
return "SAFETY_MODE_REDUCED";
case 3:
return "SAFETY_MODE_PROTECTIVE_STOP";
case 4:
return "SAFETY_MODE_RECOVERY";
case 5:
return "SAFETY_MODE_SAFEGUARD_STOP";
case 6:
return "SAFETY_MODE_SYSTEM_EMERGENCY_STOP";
case 7:
return "SAFETY_MODE_ROBOT_EMERGENCY_STOP";
case 8:
return "SAFETY_MODE_VIOLATION";
case 9:
return "SAFETY_MODE_FAULT";
default:
return "";
}
}
}
}
......@@ -44,8 +44,10 @@ namespace URSoldering.Client
{
try
{
string filePath = Application.StartupPath + ConfigAppSettings.GetValue(Setting_Init.AOIFileConfig);
string path = Path.GetDirectoryName(filePath);
OpenFileDialog openfileDlg = new OpenFileDialog();
openfileDlg.InitialDirectory = path;
openfileDlg.Filter = "vscf files (*.vscf)|*.vscf";
openfileDlg.FilterIndex = 1;
openfileDlg.RestoreDirectory = true;
......@@ -67,8 +69,10 @@ namespace URSoldering.Client
{
try
{
string filePath = Application.StartupPath + ConfigAppSettings.GetValue(Setting_Init.AOIFileConfig);
string path = Path.GetDirectoryName(filePath);
SaveFileDialog savefileDlg = new SaveFileDialog();
savefileDlg.InitialDirectory = path;
savefileDlg.Filter = "ckcf files (*.vscf)|*.vscf";
savefileDlg.FilterIndex = 1;
savefileDlg.RestoreDirectory = true;
......
......@@ -37,8 +37,6 @@
this.label1 = new System.Windows.Forms.Label();
this.btnBack = new System.Windows.Forms.Button();
this.btnSave = new System.Windows.Forms.Button();
this.txtRobotZHighValue = new System.Windows.Forms.TextBox();
this.label9 = new System.Windows.Forms.Label();
this.txtBoardName = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.label14 = new System.Windows.Forms.Label();
......@@ -81,8 +79,6 @@
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.btnBack);
this.groupBox1.Controls.Add(this.btnSave);
this.groupBox1.Controls.Add(this.txtRobotZHighValue);
this.groupBox1.Controls.Add(this.label9);
this.groupBox1.Controls.Add(this.txtBoardName);
this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
......@@ -95,7 +91,7 @@
//
// txtCode
//
this.txtCode.Location = new System.Drawing.Point(131, 110);
this.txtCode.Location = new System.Drawing.Point(131, 98);
this.txtCode.MaxLength = 20;
this.txtCode.Name = "txtCode";
this.txtCode.Size = new System.Drawing.Size(221, 23);
......@@ -104,7 +100,7 @@
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(73, 114);
this.label1.Location = new System.Drawing.Point(73, 102);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(32, 17);
this.label1.TabIndex = 269;
......@@ -114,7 +110,7 @@
//
this.btnBack.FlatAppearance.BorderSize = 0;
this.btnBack.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnBack.Location = new System.Drawing.Point(224, 182);
this.btnBack.Location = new System.Drawing.Point(224, 176);
this.btnBack.Name = "btnBack";
this.btnBack.Size = new System.Drawing.Size(107, 37);
this.btnBack.TabIndex = 41;
......@@ -126,7 +122,7 @@
//
this.btnSave.FlatAppearance.BorderSize = 0;
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSave.Location = new System.Drawing.Point(111, 182);
this.btnSave.Location = new System.Drawing.Point(111, 176);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(107, 37);
this.btnSave.TabIndex = 40;
......@@ -134,28 +130,9 @@
this.btnSave.UseVisualStyleBackColor = true;
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
//
// txtRobotZHighValue
//
this.txtRobotZHighValue.Location = new System.Drawing.Point(131, 156);
this.txtRobotZHighValue.Name = "txtRobotZHighValue";
this.txtRobotZHighValue.Size = new System.Drawing.Size(89, 23);
this.txtRobotZHighValue.TabIndex = 266;
this.txtRobotZHighValue.Text = "-20";
this.txtRobotZHighValue.Visible = false;
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(65, 160);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(51, 17);
this.label9.TabIndex = 265;
this.label9.Text = "高位Z轴";
this.label9.Visible = false;
//
// txtBoardName
//
this.txtBoardName.Location = new System.Drawing.Point(132, 64);
this.txtBoardName.Location = new System.Drawing.Point(132, 50);
this.txtBoardName.MaxLength = 20;
this.txtBoardName.Name = "txtBoardName";
this.txtBoardName.Size = new System.Drawing.Size(220, 23);
......@@ -164,7 +141,7 @@
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(61, 68);
this.label2.Location = new System.Drawing.Point(61, 54);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(56, 17);
this.label2.TabIndex = 1;
......@@ -209,8 +186,6 @@
private System.Windows.Forms.Label label14;
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn1;
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn2;
private System.Windows.Forms.TextBox txtRobotZHighValue;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.TextBox txtCode;
private System.Windows.Forms.Label label1;
}
......
......@@ -47,7 +47,7 @@ namespace URSoldering.Client
txtBoardName.Text = newName;
txtRobotZHighValue.Text = oldBoard.ZHighValue.ToString();
//txtRobotZHighValue.Text = oldBoard.ZHighValue.ToString();
}
......@@ -63,11 +63,7 @@ namespace URSoldering.Client
try
{
string newName = FormUtil.getValue(txtBoardName);
string newCode = FormUtil.getValue(txtCode);
int newZHigh = FormUtil.GetIntValue(txtRobotZHighValue);
string newCode = FormUtil.getValue(txtCode);
if (newName.Equals(""))
{
MessageBox.Show("请输入程序名称");
......@@ -79,8 +75,7 @@ namespace URSoldering.Client
{
MessageBox.Show("程序名称【" + newName + "】已存在,复制失败!");
return;
}
}
BoardInfo newBoard = new BoardInfo();
//newBoard.boardCode = oldBoard.boardCode;
......@@ -96,11 +91,11 @@ namespace URSoldering.Client
newBoard.solderingTime = oldBoard.solderingTime;
newBoard.solderTime = oldBoard.solderTime;
newBoard.imgName = oldBoard.imgName;
newBoard.orgType = oldBoard.orgType;
newBoard.originX = oldBoard.originX;
newBoard.originY = oldBoard.originY;
newBoard.ZHighValue = newZHigh;
//newBoard.orgType = oldBoard.orgType;
//newBoard.originX = oldBoard.originX;
//newBoard.originY = oldBoard.originY;
newBoard.AoiFileName=oldBoard.AoiFileName;
//newBoard.ZHighValue = newZHigh;
try
{
if (!oldBoard.imgName.Contains(oldBoard.boardName))
......
......@@ -197,16 +197,15 @@ namespace URSoldering.Client
picBoard.Image = board.GetImage();
picBoard.Refresh();
int orgType = board.orgType;
double orgX = board.getImageOrgX();
double orgY = board.getImageOrgY();
Graphics grfx = picBoard.CreateGraphics();
//int orgType = board.orgType;
//double orgX = board.getImageOrgX();
//double orgY = board.getImageOrgY();
//Graphics grfx = picBoard.CreateGraphics();
//float preX = 0;
//float preY = 0;
int index = 0;
foreach (WeldPointInfo weld in pointList)
{
//int index = 0;
//foreach (WeldPointInfo weld in pointList)
//{
//float x = (float)Math.Abs(weld.PositionX - orgX) * picBoard.Width / width - pointHight / 2;
//float y = (float)Math.Abs(weld.PositionY - orgY) * picBoard.Width / width - pointHight / 2;
//g.FillEllipse(Brushes.Red, x - pointHight / 2, y - pointHight / 2, pointHight, pointHight);
......@@ -225,11 +224,11 @@ namespace URSoldering.Client
//}
//preX = x;
//preY = y;
index++;
//index++;
//g.FillEllipse(Brushes.Red, x, y, pointHight, pointHight);
}
//}
g.Dispose();
//g.Dispose();
}
private void FrmBoardList_Shown(object sender, EventArgs e)
......

using URSoldering.Common;
using URSoldering.DeviceLibrary;
using System;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace URSoldering.Client
{
public partial class FrmCodeLearn : FrmBase
{
private static string appPath = Application.StartupPath;
private static string path = appPath + ConfigAppSettings.GetValue(Setting_Init.CodeParamPath);
public FrmCodeLearn()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
string filePath = FormUtil.getValue(txtParamPath);
if (File.Exists(filePath))
{
}
else
{
try
{
File.Create(filePath);
}
catch (Exception ex)
{
LogUtil.error("创建文件:" + filePath + " 失败");
MessageBox.Show("创建文件失败!");
txtParamPath.SelectAll();
txtParamPath.Focus();
return;
}
}
//File.Delete(filePath);
string cameraName = cmbCameraList.Text;
string codeType = this.cmbCodeType.Text;
int count = cmbCount.SelectedIndex + 1;
Task.Factory.StartNew(delegate ()
{
HDevelopCodeLearn.RunHalcon(this.hWindowControl1.HalconWindow, cameraName, codeType, filePath, count);
});
FormStatus(true);
}
private void FormStatus(bool open)
{
btnOpen.Enabled = !open;
btnStop.Enabled = open;
//timer1.Enabled = open;
//cmbCount.Enabled = !open;
//cmbCodeType.Enabled = !open;
//cmbCameraList.Enabled = !open;
}
private void btnStop_Click(object sender, EventArgs e)
{
HDevelopCodeLearn.StopLearn();
FormStatus(false);
}
private void FrmCamera_Load(object sender, EventArgs e)
{
LogUtil.logBox = this.richTextBox2;
HDevelopExport.LoadConfig(ConfigAppSettings.GetValue(Setting_Init.CameraName),ConfigAppSettings.GetValue(Setting_Init.CodeType));
FormStatus(false);
cmbCameraList.DataSource = HDevelopExport.cameraNameList;
if (HDevelopExport.cameraNameList.Count > 0)
{
cmbCameraList.SelectedIndex = 0;
}
cmbCodeType.DataSource = HDevelopExport.codeTypeList;
if (HDevelopExport.codeTypeList.Count > 0)
{
cmbCodeType.SelectedIndex = 0;
}
else
{
cmbCodeType.Items.Add("QR Code");
cmbCodeType.SelectedIndex = 0;
}
string filePath = path + cmbCodeType.Text + ".dcm";
txtParamPath.Text = filePath;
cmbCount.SelectedIndex = 0;
timer1.Start();
}
private void FrmCamera_FormClosed(object sender, FormClosedEventArgs e)
{
if (btnStop.Enabled.Equals(true))
{
btnStop_Click(null, null);
LogUtil.logBox = null;
FormStatus(false);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (HDevelopCodeLearn.IsRun)
{
if (btnOpen.Enabled)
{
btnOpen.Enabled = false ;
}
}
else
{
if (btnOpen.Enabled.Equals(false))
{
btnOpen.Enabled = true;
}
}
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void cmbCodeType_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbCodeType.SelectedIndex >= 0)
{
string filePath = path + cmbCodeType.Text + ".dcm";
txtParamPath.Text = filePath;
}
}
private void btnClearLog_Click(object sender, EventArgs e)
{
LogUtil.ClearLog();
}
}
}
<?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>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
</metadata>
</root>
\ No newline at end of file
......@@ -38,7 +38,7 @@ namespace URSoldering.Client
private void btnConfig_Click(object sender, EventArgs e)
{
FrmSolderingSetting setting = new FrmSolderingSetting();
FrmSetting setting = new FrmSetting();
this.Visible = false;
setting.ShowDialog();
this.Visible = true;
......@@ -49,20 +49,10 @@ namespace URSoldering.Client
}
private void btnCodeTest_Click(object sender, EventArgs e)
{
//FrmAOISetting frm = new FrmAOISetting(this);
//this.Visible = false;
//frm.Show();
}
private void btnCamera_Click(object sender, EventArgs e)
{
FrmCamera frm = new FrmCamera();
//FrmCodeLearn frm = new FrmCodeLearn();
{
FrmAOISetting frm = new FrmAOISetting(this);
this.Visible = false;
frm.ShowDialog();
this.Visible = true;
}
frm.Show();
}
}
}

using LineSoldering.Common;
using LineSoldering.DeviceLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace LineSoldering.Client
{
public partial class FrmMesConfig : FrmBase
{
public FrmMesConfig()
{
InitializeComponent();
}
private void btnSaveSetting_Click(object sender, EventArgs e)
{
saveValue();
}
private void getValue()
{
this.txtEMSIP.Text = RobotManager.SolderingRobot.MesIp.ToString();
this.txtPort.Text = RobotManager.SolderingRobot.MesPort.ToString();
}
private void saveValue()
{
try
{
int port = FormUtil.GetIntValue(txtPort);
string ip = FormUtil.getValue(txtEMSIP);
if (!FormUtil.IsIp(ip))
{
MessageBox.Show("请输入正确IP");
txtEMSIP.Focus();
txtEMSIP.SelectAll();
return;
}
if (port <= 0)
{
MessageBox.Show("请输入正确端口号");
txtPort.Focus();
txtPort.SelectAll();
return;
}
ConfigAppSettings.SaveValue(Setting_Init.Mes_IP, ip);
ConfigAppSettings.SaveValue(Setting_Init.Mes_Port, port);
ConfigAppSettings.SaveValue(Setting_Init.Mes_IsConnect, chbIsConnect.Checked);
MesUtil.NeedConnect = chbIsConnect.Checked;
RobotManager.SolderingRobot.MesIp = ip;
RobotManager.SolderingRobot.MesPort = port;
MessageBox.Show("保存成功!");
this.Close();
}
catch
{
MessageBox.Show("保存失败!");
}
}
private void FrmRobotSetting_Load(object sender, EventArgs e)
{
LogUtil.logBox = this.richTextBox1;
this.chbIsConnect.Checked = MesUtil.NeedConnect;
getValue();
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnConnect_Click(object sender, EventArgs e)
{
MesUtil.RivetInit(RobotManager.SolderingRobot.MesIp, RobotManager.SolderingRobot.MesPort);
}
private void btnStop_Click(object sender, EventArgs e)
{
MesUtil.Close();
}
private void FrmConfig_FormClosed(object sender, FormClosedEventArgs e)
{
MesUtil.Close();
LogUtil.logBox = null;
}
string preCode = "";
private void btnCheckCode_Click(object sender, EventArgs e)
{
string code = FormUtil.getValue(txtCode);
LogUtil.info("铆压发送二维码验证: 【" + code + "】 ");
MesUtil.ConfirmCode(code, CodeResult);
preCode = code;
}
private void CodeResult(string code1, string result1, string code2, string result2)
{
LogUtil.info( "收到验证结果, 【" + code1 + "】【" + result1 + "】【" + code2 + "】【" + result2 + "】 ");
preCode = code1;
}
private void btnSendResult_Click(object sender, EventArgs e)
{
int result = FormUtil.GetIntValue(txtResult);
double value = FormUtil.getDoubleValue(txtPressValue);
MesUtil.UploadRivetResult(preCode, result, value);
LogUtil.info("上传铆压结果, 二维码【" + preCode + "】结果【" + result + "】压力值【"+value+"】 ");
}
private void btnClear_Click(object sender, EventArgs e)
{
this.richTextBox1.Clear();
}
private void btnSConnect_Click(object sender, EventArgs e)
{
MesUtil.SolderInit(RobotManager.SolderingRobot.MesIp, RobotManager.SolderingRobot.MesPort);
}
private void btnSStop_Click(object sender, EventArgs e)
{
MesUtil.Close();
}
private void btnSCheck_Click(object sender, EventArgs e)
{
string code = FormUtil.getValue(txtCode);
string code2 = FormUtil.getValue(txtSCode2);
LogUtil.info("焊接发送二维码验证: 【" + code + "】【"+code2+"】 ");
MesUtil.ConfirmSolderCode(code,code2, CodeResult);
preCode = code2;
}
private void btnSSend_Click(object sender, EventArgs e)
{
int result = FormUtil.GetIntValue(txtResult );
MesUtil.UploadSolderResult(FormUtil.getValue(txtCode), FormUtil.getValue(txtSCode2), result);
LogUtil.info("上传焊接结果, 二维码【" + preCode + "】结果【" + result + "】 ");
}
private void btnScrewStop_Click(object sender, EventArgs e)
{
MesUtil.Close();
}
private void btnScrewConnect_Click(object sender, EventArgs e)
{
MesUtil.ScrewInit(RobotManager.SolderingRobot.MesIp, RobotManager.SolderingRobot.MesPort);
}
private void btnScrewCheck_Click(object sender, EventArgs e)
{
string code = FormUtil.getValue(txtCode);
LogUtil.info("锁付发送二维码验证: 【" + code + "】 ");
MesUtil.ConfirmCode(code, CodeResult);
preCode = code;
}
private void btnScrewSend_Click(object sender, EventArgs e)
{
int result = FormUtil.GetIntValue(txtResult);
MesUtil.UploadScrewResult(preCode, RESULT.OK, new List<double> { 11.1, 22.2, 33.3, 44.4, 55.5 });
LogUtil.info("上传焊接结果, 二维码【" + preCode + "】结果【" + result + "】 ");
}
}
}
namespace URSoldering.Client
{
partial class FrmWeldPointInfo
partial class FrmPointInfo
{
/// <summary>
/// Required designer variable.
......
......@@ -12,19 +12,19 @@ using URSoldering.Common;
namespace URSoldering.Client
{
public partial class FrmWeldPointInfo : FrmBase
public partial class FrmPointInfo : FrmBase
{
public delegate void OpClose(DialogResult result,WeldPointInfo point);
public event OpClose OnCloseEnd;
public WeldPointInfo weldPointInfo = new WeldPointInfo();
public FrmWeldPointInfo()
public FrmPointInfo()
{
InitializeComponent();
this.Text = "新增焊点";
cmbPointType.SelectedIndex = 0;
groupPoint.Text = "新增焊点";
}
public FrmWeldPointInfo(string name,URPointValue point)
public FrmPointInfo(string name,URPointValue point)
{
InitializeComponent();
this.Text = "新增焊点";
......@@ -34,7 +34,7 @@ namespace URSoldering.Client
ShowPoint(point);
this.txtClearTime.Text = WeldRobotBean.RobotConfig.ClearMSenconds.ToString();
}
public FrmWeldPointInfo(WeldPointInfo weldPointInfo)
public FrmPointInfo(WeldPointInfo weldPointInfo)
{
InitializeComponent();
if (weldPointInfo == null)
......
<?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="Column_AoiFile.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column_Length.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column_Width.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column_FixtureType.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column_Check1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column_Check2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column_CoverPlate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column_Station2Check1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column_Station2Check2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
\ No newline at end of file
namespace URSoldering.Client
{
partial class FrmSolderingSetting
partial class FrmSetting
{
/// <summary>
/// Required designer variable.
......
......@@ -14,9 +14,9 @@ using System.Windows.Forms;
namespace URSoldering.Client
{
public partial class FrmSolderingSetting : FrmBase
public partial class FrmSetting : FrmBase
{
public FrmSolderingSetting()
public FrmSetting()
{
InitializeComponent();
}
......
<?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
namespace LineSoldering.Client
{
partial class FrmUsbCamera
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.btnExit = new System.Windows.Forms.Button();
this.hWindowControl1 = new HalconDotNet.HWindowControl();
this.btnCloseCamera = new System.Windows.Forms.Button();
this.btnOpen = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// timer1
//
this.timer1.Interval = 200;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// btnExit
//
this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnExit.Location = new System.Drawing.Point(596, 12);
this.btnExit.Name = "btnExit";
this.btnExit.Size = new System.Drawing.Size(64, 37);
this.btnExit.TabIndex = 6;
this.btnExit.Text = "返回";
this.btnExit.UseVisualStyleBackColor = true;
this.btnExit.Visible = false;
this.btnExit.Click += new System.EventHandler(this.btnExit_Click);
//
// hWindowControl1
//
this.hWindowControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.hWindowControl1.BackColor = System.Drawing.Color.Black;
this.hWindowControl1.BorderColor = System.Drawing.Color.Black;
this.hWindowControl1.ImagePart = new System.Drawing.Rectangle(0, 0, 640, 480);
this.hWindowControl1.Location = new System.Drawing.Point(12, 12);
this.hWindowControl1.Name = "hWindowControl1";
this.hWindowControl1.Size = new System.Drawing.Size(648, 371);
this.hWindowControl1.TabIndex = 5;
this.hWindowControl1.WindowSize = new System.Drawing.Size(648, 371);
//
// btnCloseCamera
//
this.btnCloseCamera.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnCloseCamera.Location = new System.Drawing.Point(596, 156);
this.btnCloseCamera.Name = "btnCloseCamera";
this.btnCloseCamera.Size = new System.Drawing.Size(64, 37);
this.btnCloseCamera.TabIndex = 3;
this.btnCloseCamera.Text = "关闭";
this.btnCloseCamera.UseVisualStyleBackColor = true;
this.btnCloseCamera.Visible = false;
this.btnCloseCamera.Click += new System.EventHandler(this.btnCloseCamera_Click);
//
// btnOpen
//
this.btnOpen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnOpen.Location = new System.Drawing.Point(596, 84);
this.btnOpen.Name = "btnOpen";
this.btnOpen.Size = new System.Drawing.Size(64, 37);
this.btnOpen.TabIndex = 1;
this.btnOpen.Text = "打开";
this.btnOpen.UseVisualStyleBackColor = true;
this.btnOpen.Visible = false;
this.btnOpen.Click += new System.EventHandler(this.btnOpen_Click);
//
// FrmUsbCamera
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(670, 395);
this.Controls.Add(this.btnExit);
this.Controls.Add(this.btnCloseCamera);
this.Controls.Add(this.btnOpen);
this.Controls.Add(this.hWindowControl1);
this.MaximizeBox = true;
this.MinimizeBox = true;
this.Name = "FrmUsbCamera";
this.Text = "实时监控";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmUsbCamera_FormClosing);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmCamera_FormClosed);
this.Load += new System.EventHandler(this.FrmCamera_Load);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btnOpen;
private System.Windows.Forms.Button btnCloseCamera;
private System.Windows.Forms.Timer timer1;
private HalconDotNet.HWindowControl hWindowControl1;
private System.Windows.Forms.Button btnExit;
}
}
\ No newline at end of file
using HalconDotNet;
using LineSoldering.DeviceLibrary;
using LineSoldering.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LineSoldering.Common;
namespace LineSoldering.Client
{
public partial class FrmUsbCamera : FrmBase
{
public FrmUsbCamera()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
if (UsbCameraHDevelop.OpenCamera())
{
FormStatus(true);
}
}
private void FormStatus(bool open)
{
btnOpen.Enabled = !open;
btnCloseCamera.Enabled = open;
timer1.Enabled = open;
}
private void btnCloseCamera_Click(object sender, EventArgs e)
{
UsbCameraHDevelop.CloseCamera();
FormStatus(false);
}
private void FrmCamera_Load(object sender, EventArgs e)
{
if (UsbCameraHDevelop.OpenCamera())
{
FormStatus(true);
}
else
{
MessageBox.Show("打开摄像机失败");
this.Close();
}
}
private void FrmCamera_FormClosed(object sender, FormClosedEventArgs e)
{
}
private int preIndex = 0;
int dWidth = 0; int dHeight = 0;
private void timer1_Tick(object sender, EventArgs e)
{
preIndex++;
try {
HObject ho_Image = UsbCameraHDevelop.GrabImage();
if (ho_Image != null)
{
if (dWidth <= 0)
{
HTuple width, height;
//int dWidth = 0; int dHeight = 0;
HOperatorSet.GetImageSize(ho_Image, out width, out height);
dWidth = (int)width.D;
dHeight = (int)height.D;
hWindowControl1.HalconWindow.SetPart(0, 0, dHeight, dWidth);
}
HOperatorSet.DispObj(ho_Image, hWindowControl1.HalconWindow);
}
}
catch (Exception ex)
{
LogUtil.error("获取实时出错:" + ex.ToString());
}
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void FrmUsbCamera_FormClosing(object sender, FormClosingEventArgs e)
{
FormStatus(false);
UsbCameraHDevelop.CloseCamera();
}
}
}
<?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
<?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
......@@ -65,7 +65,37 @@ namespace URSoldering.Client
Robot.IsAutoRun = chbXunHuan.Checked;
LoadAOI();
}
private bool IsLoad = false;
private void LoadAOI()
{
if (IsLoad)
{
return;
}
//位置配置到文件中
string appPath = Application.StartupPath;
string strFilePathName = ConfigAppSettings.GetValue(Setting_Init.AOIFileConfig);
string path2 = Path.GetDirectoryName(appPath + strFilePathName);
string filePath = path2 + @"\" + BoardManager.CurrBoard.AoiFileName;
if (File.Exists(filePath))
{
try
{
axCKVisionCtrl1.LoadConfigure(filePath);
axCKVisionCtrl1.ZoomView(2);
LogUtil.error("成功加载程序:" + BoardManager.CurrBoard.AoiFileName);
IsLoad = true;
}
catch (Exception ex)
{
LogUtil.error("加载程序【" + BoardManager.CurrBoard.AoiFileName + "】出错:" + ex.ToString());
}
}
else
{
LogUtil.error("未找到AOI程序文件:" + BoardManager.CurrBoard.AoiFileName);
}
}
private int ShowPointIndex = 5;
private void LoadCountPoint(bool isToday)
{
......@@ -158,52 +188,10 @@ namespace URSoldering.Client
weldCount = list[0].WeldCount;
solderCount = list[0].WeldPointCount;
}
}
}
chartLine.Series[0].Points[ShowPointIndex - 1].SetValueY(weldCount);
chartSolder.Series[0].Points[ShowPointIndex - 1].SetValueY(solderCount);
}
private string aoiCheckFile = "";
private string currAOIFile = "";
private void LoadAOI()
{
//位置配置到文件中
string appPath = Application.StartupPath;
string strFilePathName = ConfigAppSettings.GetValue(Setting_Init.AOIFileConfig);
aoiCheckFile = appPath + strFilePathName;
LoadAOIFile(aoiCheckFile);
}
private bool LoadAOIFile(string filePath)
{
if (currAOIFile.Equals(filePath))
{
return true ;
}
if (File.Exists(filePath))
{
this.axCKVisionCtrl1.UnloadConfigure();
Thread.Sleep(100);
try
{
currAOIFile = filePath;
this.axCKVisionCtrl1.LoadConfigure(filePath);
this.axCKVisionCtrl1.ZoomView(2);
LogUtil.info("成功加载程序:" + filePath);
return true;
}
catch (Exception ex)
{
LogUtil.error("加载程序【" + filePath + "】出错:" + ex.ToString());
}
}
else
{
LogUtil.error("未找到AOI程序文件:" + filePath);
}return false;
}
}
private void LoadListPoint()
{
......@@ -617,98 +605,12 @@ namespace URSoldering.Client
{
WeldRobotBean.StopWeld();
}
}
private void GetCode()
{
//try
//{
// this.label1.Text = "视觉/扫码";
// lblCodeResult.Text = "焊点自动识别中。。。";
// lblCodeResult.ForeColor = Color.Blue;
// lblCodeResult.Visible = true;
// LoadAOIFile(aoiCheckFile);
// //lblAOIResult.Visible = false;
// for (int i = 0; i < 5; i++)
// {
// bool result = RunAOI(2);
// //if (result)
// //{
// string code = getResult("Code",101);
// if (!code.Equals(""))
// {
// Robot.WareCode = code;
// lblCodeResult.ForeColor = Color.Blue;
// lblCodeResult.Text = "识别成功,共找到【" + BoardManager.CurrBoard.pointList.Count + "】个焊点";
// LogUtil.info("扫码成功:" + code);
// lblCodeResult.Visible = true;
// UpdateBoard(code);
// break;
// }
// else
// {
// lblCodeResult.ForeColor = Color.Red;
// lblCodeResult.Text = "焊点识别失败,即将重新识别";
// LogUtil.info("扫码失败,即将重新扫码");
// lblCodeResult.Visible = true;
// }
// //}
// Thread.Sleep(500);
// }
// lblCodeResult.ForeColor = Color.Blue;
// lblCodeResult.Text = "识别成功,共找到【" + BoardManager.CurrBoard.pointList.Count + "】个焊点";
// lblCodeResult.Visible = true;
// if (lblCodeResult.Visible.Equals(false))
// {
// lblCodeResult.ForeColor = Color.Blue;
// //lblCodeResult.Text = "扫码成功:1000001" ;
// LogUtil.info("扫码成功:1000001");
// }
//}
//catch (Exception ex)
//{
// LogUtil.error("读取条码出错:" + ex.ToString());
//}
}
private void UpdateBoard(string code)
{
//string[] str = code.Split('@');
//if (str.Length >= 1)
//{
// string boardCode = str[0];
// if (BoardManager.CurrBoard.WareCode.Equals(boardCode))
// {
// return;
// }
// else
// {
// BoardInfo board = BoardManager.getBoardByCode(boardCode);
// if (board == null)
// {
// LogUtil.error("条码【"+code+"】未找到匹配的程序,使用之前的程序【"+BoardManager.CurrBoard.boardName+"】");
// }
// else
// {
// LogUtil.error("条码【" + code + "】切换新程序【" + board.boardName + "】");
// BoardManager.UpdateCurrBoard(board.boardId);
// LoadPoint(board, -3);
// }
// }
//}
}
}
private void AOICheck()
{
try
{
this.label1.Text = "视觉/光学检测";
LoadAOIFile(aoiCheckFile);
this.label1.Text = "视觉/光学检测";
lblCodeResult.Visible = false;
RunAOI(1);
int result = CKResult("Result",10);
......@@ -785,30 +687,7 @@ namespace URSoldering.Client
{
return 0;
}
}
//private string getResult(string name,int DataId)
//{
// string result = "";
// try
// {
// int idTool = axCKVisionCtrl1.GetTool(name);
// string value = "";
// object objValue = new VariantWrapper(value);
// if (axCKVisionCtrl1.GetValue(idTool, DataId, 0, ref objValue) == true)
// {
// result = objValue.ToString();
// }
// LogUtil.info("获取【" + name + "】:" + result);
// }
// catch (Exception ex)
// {
// LogUtil.error("获取【" + name + "】出错:" + ex.ToString());
// }
// return result;
//}
}
private void btnLook_Click(object sender, EventArgs e)
{
FrmWorkCount frm = new FrmWorkCount();
......
......@@ -73,6 +73,12 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FrmAOISetting.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmAOISetting.designer.cs">
<DependentUpon>FrmAOISetting.cs</DependentUpon>
</Compile>
<Compile Include="FrmBase.cs">
<SubType>Form</SubType>
</Compile>
......@@ -109,18 +115,6 @@
<Compile Include="FrmProgramSelect.Designer.cs">
<DependentUpon>FrmProgramSelect.cs</DependentUpon>
</Compile>
<Compile Include="FrmCodeLearn.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmCodeLearn.Designer.cs">
<DependentUpon>FrmCodeLearn.cs</DependentUpon>
</Compile>
<Compile Include="FrmCamera.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmCamera.Designer.cs">
<DependentUpon>FrmCamera.cs</DependentUpon>
</Compile>
<Compile Include="FrmDebugMenu.cs">
<SubType>Form</SubType>
</Compile>
......@@ -151,11 +145,11 @@
<Compile Include="FrmSendWire.Designer.cs">
<DependentUpon>FrmSendWire.cs</DependentUpon>
</Compile>
<Compile Include="FrmSolderingSetting.cs">
<Compile Include="FrmSetting.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmSolderingSetting.Designer.cs">
<DependentUpon>FrmSolderingSetting.cs</DependentUpon>
<Compile Include="FrmSetting.Designer.cs">
<DependentUpon>FrmSetting.cs</DependentUpon>
</Compile>
<Compile Include="FrmSoldDebug.cs">
<SubType>Form</SubType>
......@@ -163,11 +157,11 @@
<Compile Include="FrmSoldDebug.Designer.cs">
<DependentUpon>FrmSoldDebug.cs</DependentUpon>
</Compile>
<Compile Include="FrmWeldPointInfo.cs">
<Compile Include="FrmPointInfo.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmWeldPointInfo.Designer.cs">
<DependentUpon>FrmWeldPointInfo.cs</DependentUpon>
<Compile Include="FrmPointInfo.Designer.cs">
<DependentUpon>FrmPointInfo.cs</DependentUpon>
</Compile>
<Compile Include="FrmWork.cs">
<SubType>Form</SubType>
......@@ -183,6 +177,9 @@
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="FrmAOISetting.resx">
<DependentUpon>FrmAOISetting.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmBase.resx">
<DependentUpon>FrmBase.cs</DependentUpon>
</EmbeddedResource>
......@@ -201,12 +198,6 @@
<EmbeddedResource Include="FrmProgramSelect.resx">
<DependentUpon>FrmProgramSelect.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmCodeLearn.resx">
<DependentUpon>FrmCodeLearn.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmCamera.resx">
<DependentUpon>FrmCamera.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmDebugMenu.resx">
<DependentUpon>FrmDebugMenu.cs</DependentUpon>
</EmbeddedResource>
......@@ -222,14 +213,14 @@
<EmbeddedResource Include="FrmSendWire.resx">
<DependentUpon>FrmSendWire.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmSolderingSetting.resx">
<DependentUpon>FrmSolderingSetting.cs</DependentUpon>
<EmbeddedResource Include="FrmSetting.resx">
<DependentUpon>FrmSetting.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmSoldDebug.resx">
<DependentUpon>FrmSoldDebug.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmWeldPointInfo.resx">
<DependentUpon>FrmWeldPointInfo.cs</DependentUpon>
<EmbeddedResource Include="FrmPointInfo.resx">
<DependentUpon>FrmPointInfo.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmWork.resx">
<DependentUpon>FrmWork.cs</DependentUpon>
......
namespace UserFromControl
{
partial class IOStatusControl
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(0, 2);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(41, 12);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
//
// pictureBox1
//
this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureBox1.Location = new System.Drawing.Point(0, 15);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(25, 25);
this.pictureBox1.TabIndex = 1;
this.pictureBox1.TabStop = false;
//
// pictureBox2
//
this.pictureBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureBox2.Location = new System.Drawing.Point(0, 15);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(25, 25);
this.pictureBox2.TabIndex = 2;
this.pictureBox2.TabStop = false;
//
// IOStatusControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.pictureBox2);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.label1);
this.Name = "IOStatusControl";
this.Size = new System.Drawing.Size(24, 39);
this.Load += new System.EventHandler(this.IOStatusControl_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace UserFromControl
{
public partial class IOStatusControl : UserControl
{
public string IOName { get; set; }
public int IOValue { get; set; }
public Boolean isCanClick { get; set; }
public IOStatusControl()
{
InitializeComponent();
if (ImageManager.IsInit==false)
{
ImageManager.Init();
}
this.pictureBox1.BackgroundImage = ImageManager.imgGrey;
this.pictureBox2.BackgroundImage = ImageManager.imgGreen;
pictureBox1.Visible = true;
pictureBox2.Visible = false;
isCanClick = false;
}
public void ShowData()
{
label1.Text = IOName;
if (label1.Text.Equals(""))
{
pictureBox1.Location = new Point(0, 0);
pictureBox2.Location = new Point(0, 0);
}
else
{
pictureBox1.Location = new Point(0, 15);
pictureBox2.Location = new Point(0, 15);
}
if (IOValue == 0)
{
pictureBox1.Visible = true;
pictureBox2.Visible = false;
}
else
{
pictureBox1.Visible = false;
pictureBox2.Visible = true;
}
}
private void IOStatusControl_Load(object sender, EventArgs e)
{
ShowData();
}
}
}
<?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
namespace UserFromControl
{
partial class IOTextControlBig
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region 组件设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(46, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(74, 21);
this.label1.TabIndex = 0;
this.label1.Text = "测试一下";
//
// pictureBox1
//
this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(40, 40);
this.pictureBox1.TabIndex = 1;
this.pictureBox1.TabStop = false;
this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
//
// pictureBox2
//
this.pictureBox2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
this.pictureBox2.Location = new System.Drawing.Point(0, 0);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(40, 40);
this.pictureBox2.TabIndex = 2;
this.pictureBox2.TabStop = false;
this.pictureBox2.Click += new System.EventHandler(this.pictureBox2_Click);
//
// IOTextControlBig
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.Controls.Add(this.pictureBox2);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.label1);
this.Name = "IOTextControlBig";
this.Size = new System.Drawing.Size(165, 41);
this.Load += new System.EventHandler(this.IOStatusControl_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.PictureBox pictureBox2;
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace UserFromControl
{
public partial class IOTextControlBig : UserControl
{
public string IOName { get; set; }
public int IOValue { get; set; }
public Boolean isCanClick { get; set; }
public IOTextControlBig()
{
InitializeComponent();
if (ImageManager.IsInit==false)
{
ImageManager.Init();
}
this.pictureBox1.BackgroundImage = ImageManager.imgGrey;
this.pictureBox2.BackgroundImage = ImageManager.imgGreen;
pictureBox1.Visible = true;
pictureBox2.Visible = false;
isCanClick = false;
}
public void ShowData()
{
label1.Text = IOName;
if (IOValue == 0)
{
pictureBox1.Visible = true;
pictureBox2.Visible = false;
}
else
{
pictureBox1.Visible = false;
pictureBox2.Visible = true;
}
}
private void IOStatusControl_Load(object sender, EventArgs e)
{
ShowData();
}
private void pictureBox2_Click(object sender, EventArgs e)
{
if (isCanClick)
{
pictureBox2.Visible = true;
pictureBox1.Visible = false;
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
if (isCanClick)
{
pictureBox2.Visible = false;
pictureBox1.Visible = true;
}
}
}
}
<?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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace UserControlLibrary
{
public partial class UserControl1: UserControl
{
public UserControl1()
{
InitializeComponent();
}
private void UserControl1_Load(object sender, EventArgs e)
{
}
}
}
<?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
......@@ -75,18 +75,6 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ImageManager.cs" />
<Compile Include="IOStatusControl.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="IOStatusControl.Designer.cs">
<DependentUpon>IOStatusControl.cs</DependentUpon>
</Compile>
<Compile Include="IOTextControlBig.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="IOTextControlBig.Designer.cs">
<DependentUpon>IOTextControlBig.cs</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
......@@ -111,21 +99,9 @@
<Compile Include="URRobotSControl.Designer.cs">
<DependentUpon>URRobotSControl.cs</DependentUpon>
</Compile>
<Compile Include="UserControl1.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UserControl1.Designer.cs">
<DependentUpon>UserControl1.cs</DependentUpon>
</Compile>
<Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="IOStatusControl.resx">
<DependentUpon>IOStatusControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="IOTextControlBig.resx">
<DependentUpon>IOTextControlBig.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
......@@ -139,9 +115,6 @@
<EmbeddedResource Include="URRobotSControl.resx">
<DependentUpon>URRobotSControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UserControl1.resx">
<DependentUpon>UserControl1.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Content Include="image\gray.png">
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!