1、调试补偿模板过程中,屏蔽温度补充;2、增加 通讯发送不成功后,重发,3、修复运动到位判断

This commit is contained in:
zhengxuan.zhang
2024-03-08 10:33:35 +08:00
parent bab42c1ff8
commit 8e15635264
12 changed files with 559 additions and 322 deletions
+21 -2
View File
@@ -6,12 +6,13 @@ using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.Net.NetworkInformation;
namespace HexcalMC.Base namespace HexcalMC.Base
{ {
@@ -2948,8 +2949,26 @@ namespace HexcalMC.Base
#endregion #endregion
} }
public class IpAddressValidator
class Internet
{ {
public static bool IsIpReachable(string ipAddress)
{
try
{
Ping ping = new Ping();
PingReply reply = ping.Send(ipAddress);
return (reply.Status == IPStatus.Success);
}
catch (PingException)
{
// 发生 Ping 异常,IP 不可达
return false;
}
}
public static bool IsIpAddressValid(string ipAddress) public static bool IsIpAddressValid(string ipAddress)
{ {
string pattern = @"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"; string pattern = @"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
+19 -2
View File
@@ -156,7 +156,7 @@ namespace HexcalMC.Hexcal
} }
catch (Exception e) catch (Exception e)
{ {
throw new Exception("WatchThread异常" + e); //throw new Exception("WatchThread异常" + e);
} }
} }
@@ -284,15 +284,32 @@ namespace HexcalMC.Hexcal
} }
} }
public bool TrySendData(Socket socket, byte[] data)
{
int sentBytes = socket.Send(data);
return sentBytes == data.Length; // 检查是否完全发送成功
}
public void SendMessageToAllClients(string strMsg) public void SendMessageToAllClients(string strMsg)
{ {
byte[] arrMsg = Encoding.Default.GetBytes(strMsg); byte[] arrMsg = Encoding.Default.GetBytes(strMsg);
foreach (Socket soc in _dictSocket.Values) foreach (Socket soc in _dictSocket.Values)
{ {
soc.Send(arrMsg); bool success = TrySendData(soc, arrMsg);
if (!success)
{
// 如果发送失败,进行重发逻辑
int attemptCount = 0;
const int maxAttempts = 3;
while (!success && attemptCount < maxAttempts)
{
success = TrySendData(soc, arrMsg);
attemptCount++;
}
}
} }
} }
public void SendMessageToAllClients(byte[] arrMsg) public void SendMessageToAllClients(byte[] arrMsg)
{ {
foreach (Socket soc in _dictSocket.Values) foreach (Socket soc in _dictSocket.Values)
+12
View File
@@ -159,6 +159,12 @@
<Compile Include="MainFrom.Designer.cs"> <Compile Include="MainFrom.Designer.cs">
<DependentUpon>MainFrom.cs</DependentUpon> <DependentUpon>MainFrom.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="Motion\DemoShow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Motion\DemoShow.Designer.cs">
<DependentUpon>DemoShow.cs</DependentUpon>
</Compile>
<Compile Include="Motion\Motion.cs"> <Compile Include="Motion\Motion.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@@ -178,6 +184,9 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<LastGenOutput>MainFrom1.Designer.cs</LastGenOutput> <LastGenOutput>MainFrom1.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Motion\DemoShow.resx">
<DependentUpon>DemoShow.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Motion\Motion.resx"> <EmbeddedResource Include="Motion\Motion.resx">
<DependentUpon>Motion.cs</DependentUpon> <DependentUpon>Motion.cs</DependentUpon>
<SubType>Designer</SubType> <SubType>Designer</SubType>
@@ -234,6 +243,9 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Hexagon.ico" /> <Content Include="Hexagon.ico" />
<None Include="Resources\demo_show.png" />
<None Include="Resources\demo_show_128.png" />
<None Include="Resources\mothion_64.png" />
<Content Include="SharpGL.ico" /> <Content Include="SharpGL.ico" />
<Content Include="SharpGL.png" /> <Content Include="SharpGL.png" />
</ItemGroup> </ItemGroup>
+48 -16
View File
@@ -36,7 +36,7 @@
this.radTextBoxElement1 = new Telerik.WinControls.UI.RadTextBoxElement(); this.radTextBoxElement1 = new Telerik.WinControls.UI.RadTextBoxElement();
this.ribbonTab1 = new Telerik.WinControls.UI.RibbonTab(); this.ribbonTab1 = new Telerik.WinControls.UI.RibbonTab();
this.radRibbonBarGroup1 = new Telerik.WinControls.UI.RadRibbonBarGroup(); this.radRibbonBarGroup1 = new Telerik.WinControls.UI.RadRibbonBarGroup();
this.rtb_motion = new Telerik.WinControls.UI.RadButtonElement(); this.btn_motion = new Telerik.WinControls.UI.RadButtonElement();
this.radRibbonBarGroup4 = new Telerik.WinControls.UI.RadRibbonBarGroup(); this.radRibbonBarGroup4 = new Telerik.WinControls.UI.RadRibbonBarGroup();
this.radRibbonBarButtonGroup4 = new Telerik.WinControls.UI.RadRibbonBarButtonGroup(); this.radRibbonBarButtonGroup4 = new Telerik.WinControls.UI.RadRibbonBarButtonGroup();
this.radLabelElement5 = new Telerik.WinControls.UI.RadLabelElement(); this.radLabelElement5 = new Telerik.WinControls.UI.RadLabelElement();
@@ -47,6 +47,9 @@
this.radRibbonBarButtonGroup6 = new Telerik.WinControls.UI.RadRibbonBarButtonGroup(); this.radRibbonBarButtonGroup6 = new Telerik.WinControls.UI.RadRibbonBarButtonGroup();
this.radLabelElement7 = new Telerik.WinControls.UI.RadLabelElement(); this.radLabelElement7 = new Telerik.WinControls.UI.RadLabelElement();
this.rtb_zPos = new Telerik.WinControls.UI.RadTextBoxElement(); this.rtb_zPos = new Telerik.WinControls.UI.RadTextBoxElement();
this.radRibbonBarGroup5 = new Telerik.WinControls.UI.RadRibbonBarGroup();
this.radRibbonBarButtonGroup7 = new Telerik.WinControls.UI.RadRibbonBarButtonGroup();
this.rtb_demo = new Telerik.WinControls.UI.RadButtonElement();
this.ribbonTab2 = new Telerik.WinControls.UI.RibbonTab(); this.ribbonTab2 = new Telerik.WinControls.UI.RibbonTab();
this.radRibbonBarGroup2 = new Telerik.WinControls.UI.RadRibbonBarGroup(); this.radRibbonBarGroup2 = new Telerik.WinControls.UI.RadRibbonBarGroup();
this.rtb_about = new Telerik.WinControls.UI.RadButtonElement(); this.rtb_about = new Telerik.WinControls.UI.RadButtonElement();
@@ -136,6 +139,7 @@
this.TextBoxMsg = new System.Windows.Forms.RichTextBox(); this.TextBoxMsg = new System.Windows.Forms.RichTextBox();
this.tmrMonitor = new System.Windows.Forms.Timer(this.components); this.tmrMonitor = new System.Windows.Forms.Timer(this.components);
this.timer_RefreshUI = new System.Windows.Forms.Timer(this.components); this.timer_RefreshUI = new System.Windows.Forms.Timer(this.components);
this.radRibbonBarGroup6 = new Telerik.WinControls.UI.RadRibbonBarGroup();
((System.ComponentModel.ISupportInitialize)(this.radRibbonBar1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.radRibbonBar1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radRibbonBarBackstageView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.radRibbonBarBackstageView1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radStatusStrip1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.radStatusStrip1)).BeginInit();
@@ -201,7 +205,9 @@
this.ribbonTab1.IsSelected = true; this.ribbonTab1.IsSelected = true;
this.ribbonTab1.Items.AddRange(new Telerik.WinControls.RadItem[] { this.ribbonTab1.Items.AddRange(new Telerik.WinControls.RadItem[] {
this.radRibbonBarGroup1, this.radRibbonBarGroup1,
this.radRibbonBarGroup4}); this.radRibbonBarGroup4,
this.radRibbonBarGroup5,
this.radRibbonBarGroup6});
this.ribbonTab1.Name = "ribbonTab1"; this.ribbonTab1.Name = "ribbonTab1";
this.ribbonTab1.Text = "常用"; this.ribbonTab1.Text = "常用";
this.ribbonTab1.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault; this.ribbonTab1.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SystemDefault;
@@ -210,11 +216,11 @@
// //
// radRibbonBarGroup1 // radRibbonBarGroup1
// //
this.radRibbonBarGroup1.Alignment = System.Drawing.ContentAlignment.MiddleCenter; this.radRibbonBarGroup1.Alignment = System.Drawing.ContentAlignment.TopLeft;
this.radRibbonBarGroup1.AutoSize = false; this.radRibbonBarGroup1.AutoSize = false;
this.radRibbonBarGroup1.Bounds = new System.Drawing.Rectangle(0, 0, 110, 100); this.radRibbonBarGroup1.Bounds = new System.Drawing.Rectangle(0, 0, 77, 100);
this.radRibbonBarGroup1.Items.AddRange(new Telerik.WinControls.RadItem[] { this.radRibbonBarGroup1.Items.AddRange(new Telerik.WinControls.RadItem[] {
this.rtb_motion}); this.btn_motion});
this.radRibbonBarGroup1.Margin = new System.Windows.Forms.Padding(0); this.radRibbonBarGroup1.Margin = new System.Windows.Forms.Padding(0);
this.radRibbonBarGroup1.MaxSize = new System.Drawing.Size(110, 100); this.radRibbonBarGroup1.MaxSize = new System.Drawing.Size(110, 100);
this.radRibbonBarGroup1.MinSize = new System.Drawing.Size(110, 100); this.radRibbonBarGroup1.MinSize = new System.Drawing.Size(110, 100);
@@ -222,17 +228,12 @@
this.radRibbonBarGroup1.Text = "运动控制"; this.radRibbonBarGroup1.Text = "运动控制";
this.radRibbonBarGroup1.UseCompatibleTextRendering = false; this.radRibbonBarGroup1.UseCompatibleTextRendering = false;
// //
// rtb_motion // btn_motion
// //
this.rtb_motion.Alignment = System.Drawing.ContentAlignment.MiddleCenter; this.btn_motion.Image = global::HexcalMC.Properties.Resources.mothion_64;
this.rtb_motion.Image = global::HexcalMC.Properties.Resources.motion; this.btn_motion.Name = "btn_motion";
this.rtb_motion.Name = "rtb_motion"; this.btn_motion.Text = "";
this.rtb_motion.Text = "ACS调试"; this.btn_motion.Click += new System.EventHandler(this.btn_motion_Click);
this.rtb_motion.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
this.rtb_motion.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
this.rtb_motion.TextOrientation = System.Windows.Forms.Orientation.Horizontal;
this.rtb_motion.UseCompatibleTextRendering = false;
this.rtb_motion.Click += new System.EventHandler(this.Rtb_motion_Click);
// //
// radRibbonBarGroup4 // radRibbonBarGroup4
// //
@@ -312,6 +313,28 @@
this.rtb_zPos.Text = "-50.000"; this.rtb_zPos.Text = "-50.000";
this.rtb_zPos.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; this.rtb_zPos.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
// //
// radRibbonBarGroup5
//
this.radRibbonBarGroup5.Items.AddRange(new Telerik.WinControls.RadItem[] {
this.radRibbonBarButtonGroup7});
this.radRibbonBarGroup5.Name = "radRibbonBarGroup5";
this.radRibbonBarGroup5.Text = "演示模式";
//
// radRibbonBarButtonGroup7
//
this.radRibbonBarButtonGroup7.Items.AddRange(new Telerik.WinControls.RadItem[] {
this.rtb_demo});
this.radRibbonBarButtonGroup7.Name = "radRibbonBarButtonGroup7";
this.radRibbonBarButtonGroup7.Text = "radRibbonBarButtonGroup7";
//
// rtb_demo
//
this.rtb_demo.Image = global::HexcalMC.Properties.Resources.demo_show;
this.rtb_demo.Name = "rtb_demo";
this.rtb_demo.Text = "";
this.rtb_demo.TextAlignment = System.Drawing.ContentAlignment.BottomLeft;
this.rtb_demo.Click += new System.EventHandler(this.rtb_demo_Click);
//
// ribbonTab2 // ribbonTab2
// //
this.ribbonTab2.AutoEllipsis = false; this.ribbonTab2.AutoEllipsis = false;
@@ -1210,6 +1233,11 @@
this.timer_RefreshUI.Interval = 1000; this.timer_RefreshUI.Interval = 1000;
this.timer_RefreshUI.Tick += new System.EventHandler(this.Timer_RefreshUI_Tick); this.timer_RefreshUI.Tick += new System.EventHandler(this.Timer_RefreshUI_Tick);
// //
// radRibbonBarGroup6
//
this.radRibbonBarGroup6.Name = "radRibbonBarGroup6";
this.radRibbonBarGroup6.Text = "快速定位";
//
// MainFrom // MainFrom
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -1267,7 +1295,6 @@
private Telerik.WinControls.UI.RadTextBoxElement radTextBoxElement1; private Telerik.WinControls.UI.RadTextBoxElement radTextBoxElement1;
private Telerik.WinControls.UI.RibbonTab ribbonTab1; private Telerik.WinControls.UI.RibbonTab ribbonTab1;
private Telerik.WinControls.UI.RadRibbonBarGroup radRibbonBarGroup1; private Telerik.WinControls.UI.RadRibbonBarGroup radRibbonBarGroup1;
private Telerik.WinControls.UI.RadButtonElement rtb_motion;
private Telerik.WinControls.UI.RibbonTab ribbonTab2; private Telerik.WinControls.UI.RibbonTab ribbonTab2;
private Telerik.WinControls.UI.RadRibbonBarGroup radRibbonBarGroup2; private Telerik.WinControls.UI.RadRibbonBarGroup radRibbonBarGroup2;
private Telerik.WinControls.UI.RadButtonElement rtb_about; private Telerik.WinControls.UI.RadButtonElement rtb_about;
@@ -1367,5 +1394,10 @@
private ScottPlot.FormsPlot formsPlot1; private ScottPlot.FormsPlot formsPlot1;
private System.Windows.Forms.Integration.ElementHost elementHost1; private System.Windows.Forms.Integration.ElementHost elementHost1;
private SharpGL.OpenGLControl openGLControl1; private SharpGL.OpenGLControl openGLControl1;
private Telerik.WinControls.UI.RadRibbonBarGroup radRibbonBarGroup5;
private Telerik.WinControls.UI.RadRibbonBarButtonGroup radRibbonBarButtonGroup7;
private Telerik.WinControls.UI.RadButtonElement rtb_demo;
private Telerik.WinControls.UI.RadButtonElement btn_motion;
private Telerik.WinControls.UI.RadRibbonBarGroup radRibbonBarGroup6;
} }
} }
+220 -129
View File
@@ -85,17 +85,18 @@ namespace HexcalMC
//启动界面刷新 //启动界面刷新
timer_RefreshUI.Start(); timer_RefreshUI.Start();
this.TopMost = true; //TopMost = true;
} }
private void MainFrom_Shown(object sender, EventArgs e) //窗体显示准备好接受用户输入时发生 private void MainFrom_Shown(object sender, EventArgs e) //窗体显示准备好接受用户输入时发生
{ {
//启动服务端,用于接收hexcal传来的指令 ////启动服务端,用于接收hexcal传来的指令
StartServer(); //StartServer();
Btn_ACSStart_Click(null, null); //if (_enableAcs)
//{
//Plot3D(); // Btn_ACSStart_Click(null, null); //模拟连接运动平台
//}
} }
private void MainFrom_FormClosed(object sender, FormClosedEventArgs e) private void MainFrom_FormClosed(object sender, FormClosedEventArgs e)
@@ -132,16 +133,19 @@ namespace HexcalMC
return; return;
} }
MOTION_SPEED = FileIni.ReadDouble(StrConfigFile, "MOTOR", "MOTION_SPEED"); //运动定位速度 //上电使能ACS
_enableAcs = FileIni.ReadBool(StrConfigFile, "MOTOR", "ENABLE_ACS");
MotionSpeed = FileIni.ReadDouble(StrConfigFile, "MOTOR", "MOTION_SPEED"); //运动定位速度
//正限位 //正限位
X_MAXSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "X_MAXSTROKESW"); XMaxstrokesw = FileIni.ReadDouble(StrConfigFile, "MOTOR", "X_MAXSTROKESW");
Y_MAXSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Y_MAXSTROKESW"); YMaxstrokesw = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Y_MAXSTROKESW");
Z_MAXSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Z_MAXSTROKESW"); ZMaxstrokesw = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Z_MAXSTROKESW");
//负限位 //负限位
X_MINSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "X_MINSTROKESW"); XMinstrokesw = FileIni.ReadDouble(StrConfigFile, "MOTOR", "X_MINSTROKESW");
Y_MINSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Y_MINSTROKESW"); YMinstrokesw = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Y_MINSTROKESW");
Z_MINSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Z_MINSTROKESW"); ZMinstrokesw = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Z_MINSTROKESW");
} }
private void Plot2D(List<Point3D> pointCloud) private void Plot2D(List<Point3D> pointCloud)
@@ -180,75 +184,35 @@ namespace HexcalMC
} }
#region #region hexcal软件交互
private Api _acs;
private const int MaxUiLimitCnt = 8;
private const int MaxUiIoCnt = 8;
private readonly int _mNTotalAxis = 0;
private int _mNTotalBuffer = 0;
private Axis[] _mArrAxisList = null;
private bool _mAcsConnected; //ACS通讯状态
// For update values
private MotorStates _mNMotorState; //运动状态
private ProgramStates _mNProgramState; //程序状态
private object _mObjReadVar;
private Array _mArrReadVector;
private double _mLfRPos, _mLfFPos, _mLfPe, _mLfFvel; //参考位置,反馈位置 位置误差 反馈速度 double类型
private int _mNValues, _mNOutputState;
private Label[] _mLblLeftLimit; //左限位
private Label[] _mLblRightLimit; //右限位
private HomeStates _homeStates; //回家状态
private MotionStates _currentMotionState; //当前运动状态
private readonly int _motionTimeout = 50000; //定义运动超时时间
public static Axis[] USE_AXIS =
{ Axis.ACSC_AXIS_1, Axis.ACSC_AXIS_0, Axis.ACSC_AXIS_8, Axis.ACSC_NONE }; //定义启用的轴,后面运动时会使用
//定义 XYZ三个轴的左右行程范围
public string StrConfigFile = Application.StartupPath + "\\File\\config.ini";
public static double MOTION_SPEED = 60;
public static double X_MAXSTROKESW = 730; //正限位
public static double Y_MAXSTROKESW = 1000;
public static double Z_MAXSTROKESW = 5;
public static double X_MINSTROKESW = -30; //负限位
public static double Y_MINSTROKESW = -10;
public static double Z_MINSTROKESW = -280;
#endregion
#region hexcal变量区
private TcpIpServer _mTcpIpServer; //创建tcpserver,用于接收hexcal传来的指令,并解析传递平台 private TcpIpServer _mTcpIpServer; //创建tcpserver,用于接收hexcal传来的指令,并解析传递平台
private bool _mBHexcalConnected; private bool _mBHexcalConnected;
public string LISTEN_ADDRESS = "100.0.0.1";
#endregion
#region hexcal软件交互
private void StartServer() private void StartServer()
{ {
// 对_mTcpIpServer增加判断是否已经启动且存在设备连接 // 对_mTcpIpServer增加判断是否已经启动且存在设备连接
if (_mTcpIpServer != null) if (_mTcpIpServer != null && _mTcpIpServer.ConnectStatus)
{ {
//弹窗提醒已经启动 //弹窗提醒已经启动
MyBase.TraceWriteLine("TCP服务端已经启动,请勿重复启动");
MessageBox.Show("TCP服务端已经启动,请勿重复启动", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("TCP服务端已经启动,请勿重复启动", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return; return;
} }
//判断 要监听的IP地址是否存在
if (!Internet.IsIpReachable(LISTEN_ADDRESS))
{
MyBase.TraceWriteLine("启动服务失败,请确认本地网卡是否启用且配置 " + LISTEN_ADDRESS);
MessageBox.Show("请确认本地网卡是否启用且配置 " + LISTEN_ADDRESS, "启动服务失败");
return;
}
//启动服务器,并获取数据,解析 //启动服务器,并获取数据,解析
_mTcpIpServer = new TcpIpServer("100.0.0.1", Convert.ToString(1234)); _mTcpIpServer = new TcpIpServer(LISTEN_ADDRESS, Convert.ToString(1234));
_mTcpIpServer.UseMode = 1; //设置通讯返回数据流格式 _mTcpIpServer.UseMode = 1; //设置通讯返回数据流格式
try try
{ {
@@ -348,10 +312,17 @@ namespace HexcalMC
private void ParseHexcalMsg(string msg) //编写一个Hexcal协议解析函数 private void ParseHexcalMsg(string msg) //编写一个Hexcal协议解析函数
{ {
DebugDfn.AddLogText("正在解析 " + msg); DebugDfn.AddLogText("正在解析 " + msg);
//去除Msg中\r\n //去除Msg中\r\n
msg = msg.Replace("\r\n", ""); msg = msg.Replace("\r\n", "");
//判断是否含有故障ERROR字样 //判断是否含有故障ERROR字样
if (msg.Contains("ERROR")) return; if (msg.Contains("ERROR"))
{
//弹窗提醒
MessageBox.Show("CMM错误", msg, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (msg.Contains("\x02") || msg.Contains("\u0002")) if (msg.Contains("\x02") || msg.Contains("\u0002"))
{ {
@@ -377,17 +348,18 @@ namespace HexcalMC
else if (msg.Contains("SHOW MAXSTROKESW")) //最大行程,根据实际情况填写 else if (msg.Contains("SHOW MAXSTROKESW")) //最大行程,根据实际情况填写
{ {
//SendMsgToHexcal("MAXSTROKESW 233.200000,346.500000,15.100000,0.000000,0.000000,0.000000,0.000000"); //MAXSTROKESW 233.200000,346.500000,15.100000,0.000000,0.000000,0.000000,0.000000
double[] values = { X_MAXSTROKESW, Y_MAXSTROKESW, Z_MAXSTROKESW, 0.0, 0.0, 0.0, 0.0 }; double[] values = { XMaxstrokesw, YMaxstrokesw, ZMaxstrokesw, 0.0, 0.0, 0.0, 0.0 };
string resultString = ConstructString("MAXSTROKESW", values); string resultString = ConstructString("MAXSTROKESW", values);
SendMsgToHexcal(resultString); SendMsgToHexcal(resultString);
} }
else if (msg.Contains("SHOW MINSTROKESW")) //最小行程,根据实际情况填写 else if (msg.Contains("SHOW MINSTROKESW")) //最小行程,根据实际情况填写
{ {
//SendMsgToHexcal("MINSTROKESW -68.800000,-55.500000,-286.900000,0.000000,0.000000,0.000000,0.000000"); //MINSTROKESW -68.800000,-55.500000,-286.900000,0.000000,0.000000,0.000000,0.000000
double[] values = { X_MINSTROKESW, Y_MINSTROKESW, Z_MINSTROKESW, 0.0, 0.0, 0.0, 0.0 }; double[] values = { XMinstrokesw, YMinstrokesw, ZMinstrokesw, 0.0, 0.0, 0.0, 0.0 };
string resultString = ConstructString("MINSTROKESW", values); string resultString = ConstructString("MINSTROKESW", values);
SendMsgToHexcal(resultString); SendMsgToHexcal(resultString);
} }
@@ -416,9 +388,9 @@ namespace HexcalMC
{ {
SendMsgToHexcal("Z_SENSAXIS 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"); SendMsgToHexcal("Z_SENSAXIS 7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0");
} }
else if (msg.Contains("SHOW TEMPCOMPTYPE")) //温度补偿,温度补偿 >1 表示支持温度补偿 else if (msg.Contains("SHOW TEMPCOMPTYPE")) //温度补偿,温度补偿 >1 表示支持温度补偿,此处不支持
{ {
SendMsgToHexcal("TEMPCOMPTYPE 1"); SendMsgToHexcal("TEMPCOMPTYPE 0");
} }
else if (msg.Contains("READTP")) else if (msg.Contains("READTP"))
{ {
@@ -470,6 +442,10 @@ namespace HexcalMC
{ {
SendMsgToHexcal("%"); SendMsgToHexcal("%");
} }
else if (msg.Contains("DISABLE GEO"))
{
SendMsgToHexcal("%");
}
else if (msg.Contains("AUTZER")) //回家指令 else if (msg.Contains("AUTZER")) //回家指令
{ {
SendMsgToHexcal("%"); //收到并执行,同时状态改为忙碌 SendMsgToHexcal("%"); //收到并执行,同时状态改为忙碌
@@ -489,7 +465,7 @@ namespace HexcalMC
} }
else if (msg.Contains("GETPOS")) //获取位置 else if (msg.Contains("GETPOS")) //获取位置
{ {
//SendMsgToHexcal("POS 167.553898,-55.400421,-208.548678,0.000000,0.000000,0.000000,0.000000"); //POS 167.553898,-55.400421,-208.548678,0.000000,0.000000,0.000000,0.000000
Point3D point3D = GetPositionXyz(); //获取当前位置 Point3D point3D = GetPositionXyz(); //获取当前位置
string resultString = ConstructPosString(point3D); string resultString = ConstructPosString(point3D);
SendMsgToHexcal(resultString); SendMsgToHexcal(resultString);
@@ -542,12 +518,66 @@ namespace HexcalMC
#region ACS平台相关 #region ACS平台相关
#region
public Api _acs;
private const int MaxUiLimitCnt = 8;
private const int MaxUiIoCnt = 8;
private readonly int _mNTotalAxis = 0;
private int _mNTotalBuffer = 0;
private Axis[] _mArrAxisList = null;
public bool _mAcsConnected; //ACS通讯状态
// For update values
private MotorStates _mNMotorState; //运动状态
private ProgramStates _mNProgramState; //程序状态
private object _mObjReadVar;
private Array _mArrReadVector;
private double _mLfRPos, _mLfFPos, _mLfPe, _mLfFvel; //参考位置,反馈位置 位置误差 反馈速度 double类型
private int _mNValues, _mNOutputState;
private Label[] _mLblLeftLimit; //左限位
private Label[] _mLblRightLimit; //右限位
private HomeStates _homeStates; //回家状态
private MotionStates _currentMotionState; //当前运动状态
private readonly int _motionTimeout = 50000; //定义运动超时时间
public static Axis[] UseAxis =
{ Axis.ACSC_AXIS_1, Axis.ACSC_AXIS_0, Axis.ACSC_AXIS_8, Axis.ACSC_NONE }; //定义启用的轴,后面运动时会使用
//定义轴的运动状态
private readonly bool[] axisFinished = new bool[10]; // 假设只有轴 0、1和8,数组大小为10(0到9)
//定义 XYZ三个轴的左右行程范围
public string StrConfigFile = Application.StartupPath + "\\File\\config.ini";
public static double MotionSpeed = 60;
public static double XMaxstrokesw = 730; //正限位
public static double YMaxstrokesw = 1000;
public static double ZMaxstrokesw = 5;
public static double XMinstrokesw = -30; //负限位
public static double YMinstrokesw = -10;
public static double ZMinstrokesw = -280;
private bool _enableAcs; //读取配置,是否上电自动连接平台
private Point3D _mPoint3D; //定义一个3D点,存储当前平台位置
private Point3D _mPoint3DLast; //存储上一周期的位置
#endregion
private void BtnEnable_Click(object sender, EventArgs e) //使能所有轴 private void BtnEnable_Click(object sender, EventArgs e) //使能所有轴
{ {
if (_mAcsConnected) if (_mAcsConnected)
{ {
//!!!! Important !! Must insert '-1' at the last //!!!! Important !! Must insert '-1' at the last
_acs.EnableM(USE_AXIS); _acs.EnableM(UseAxis);
} }
else else
{ {
@@ -562,6 +592,36 @@ namespace HexcalMC
_acs.DisableAll(); _acs.DisableAll();
} }
private bool IsMotionInPose()
{
bool x_inpose = false, y_inpose = false, z_inpose = false;
_mNMotorState = _acs.GetMotorState(Axis.ACSC_AXIS_1);
if ((_mNMotorState & MotorStates.ACSC_MST_INPOS) != 0)
{
x_inpose = true;
}
_mNMotorState = _acs.GetMotorState(Axis.ACSC_AXIS_0);
if ((_mNMotorState & MotorStates.ACSC_MST_INPOS) != 0)
{
y_inpose = true;
}
_mNMotorState = _acs.GetMotorState(Axis.ACSC_AXIS_8);
if ((_mNMotorState & MotorStates.ACSC_MST_INPOS) != 0)
{
z_inpose = true;
}
if (x_inpose && y_inpose && z_inpose)
{
return true;
}
return false;
}
private void TmrMonitor_Tick(object sender, EventArgs e) //用于刷新状态 private void TmrMonitor_Tick(object sender, EventArgs e) //用于刷新状态
{ {
int iAxisNo = cboAxisNo.SelectedIndex; int iAxisNo = cboAxisNo.SelectedIndex;
@@ -569,6 +629,9 @@ namespace HexcalMC
{ {
try try
{ {
//获取平台当前位置
_mPoint3D = GetPositionXyz();
// Get Motor State ACSPL+ Variable : MST (integer) // Get Motor State ACSPL+ Variable : MST (integer)
_mNMotorState = _acs.GetMotorState((Axis)iAxisNo); _mNMotorState = _acs.GetMotorState((Axis)iAxisNo);
@@ -589,7 +652,7 @@ namespace HexcalMC
if ((_mNMotorState & MotorStates.ACSC_MST_INPOS) != 0) if ((_mNMotorState & MotorStates.ACSC_MST_INPOS) != 0)
{ {
lblInPos.Image = Resources.On; lblInPos.Image = Resources.On;
_currentMotionState = MotionStates.InPos; //_currentMotionState = MotionStates.InPos;
} }
else else
{ {
@@ -622,6 +685,17 @@ namespace HexcalMC
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
if (IsMotionInPose())
{
_currentMotionState = MotionStates.InPos;
DebugDfn.AddLogText("运动到位");
}
else
{
_currentMotionState = MotionStates.Moving;
DebugDfn.AddLogText("运动中");
}
} }
private void Btn_ACSStart_Click(object sender, EventArgs e) //连接 private void Btn_ACSStart_Click(object sender, EventArgs e) //连接
@@ -722,9 +796,9 @@ namespace HexcalMC
DebugDfn.AddLogText("回家运动中"); DebugDfn.AddLogText("回家运动中");
//等待回家完成 //等待回家完成
for (int i = 0; i < USE_AXIS.Length; i++) for (int i = 0; i < UseAxis.Length; i++)
{ {
_acs.WaitMotionEnd(USE_AXIS[i], _motionTimeout); //等待回家完成 _acs.WaitMotionEnd(UseAxis[i], _motionTimeout); //等待回家完成
} }
_homeStates = HomeStates.Homed; _homeStates = HomeStates.Homed;
@@ -759,10 +833,10 @@ namespace HexcalMC
} }
//轴启用,加电 //轴启用,加电
_acs.EnableM(USE_AXIS); _acs.EnableM(UseAxis);
for (int i = 0; i < USE_AXIS.Length; i++) for (int i = 0; i < UseAxis.Length; i++)
{ {
_acs.WaitMotorEnabled(USE_AXIS[i], 1, _motionTimeout); //等待电机使能 _acs.WaitMotorEnabled(UseAxis[i], 1, _motionTimeout); //等待电机使能
} }
DebugDfn.AddLogText("电机已启用"); DebugDfn.AddLogText("电机已启用");
@@ -773,42 +847,47 @@ namespace HexcalMC
SetSpeedXyz(); SetSpeedXyz();
//注册到位事件 //注册到位事件
_acs.PHYSICALMOTIONEND += ACS_PHYSICALMOTIONEND; //_acs.PHYSICALMOTIONEND += ACS_PHYSICALMOTIONEND;
_acs.EnableEvent(Interrupts.ACSC_INTR_PHYSICAL_MOTION_END); _acs.EnableEvent(Interrupts.ACSC_INTR_PHYSICAL_MOTION_END);
} }
private void ACS_PHYSICALMOTIONEND(AxisMasks axis) private void ACS_PHYSICALMOTIONEND(AxisMasks axis)
{ {
int bit = 0x01; //int bit = 0x01;
int axisNo = 0; //int axisNo = 0;
// Param value is bit number
// Bit Number = Axis Number //for (int i = 0; i < 64; i++)
for (int i = 0; i < 64; i++) //{
// if ((int)axis == bit)
// {
// axisNo = i;
// axisFinished[axisNo] = true; // 将对应轴的完成情况标记为 true
// Console.WriteLine($" %d %d",axisNo, axisFinished[axisNo]);
// break;
// }
// bit = bit << 1;
//}
//打印数组 axisFinished
// 检查轴0、1和8是否全部完成
//if (axisFinished[0] && axisFinished[1] && axisFinished[8])
{ {
if ((int)axis == bit) // 三个轴均完成后的操作
Invoke((MethodInvoker)delegate
{ {
axisNo = i; _currentMotionState = MotionStates.InPos;
break; //DebugDfn.AddLogText("运动到位");
} });
bit = bit << 1;
} }
// Add log to ListBox
Invoke((MethodInvoker)delegate
{
DebugDfn.AddLogText("运动到位");
_currentMotionState = MotionStates.InPos;
DebugDfn.AddLogText("运动到位");
});
} }
private bool IsWithinStrokes(Point3D point) //判断点是否在行程范围内 private bool IsWithinStrokes(Point3D point) //判断点是否在行程范围内
{ {
if (point.X >= X_MINSTROKESW && point.X <= X_MAXSTROKESW && if (point.X >= XMinstrokesw && point.X <= XMaxstrokesw &&
point.Y >= Y_MINSTROKESW && point.Y <= Y_MAXSTROKESW && point.Y >= YMinstrokesw && point.Y <= YMaxstrokesw &&
point.Z >= Z_MINSTROKESW && point.Z <= Z_MAXSTROKESW) point.Z >= ZMinstrokesw && point.Z <= ZMaxstrokesw)
{ {
return true; return true;
} }
@@ -841,7 +920,7 @@ namespace HexcalMC
}; };
//执行运动指令 //执行运动指令
_acs.ToPointM(MotionFlags.ACSC_NONE, USE_AXIS, pointsArray); //多轴运动到指定位置 _acs.ToPointM(MotionFlags.ACSC_NONE, UseAxis, pointsArray); //多轴运动到指定位置
////等待运动完成 ////等待运动完成
//for (int i = 0; i < USE_AXIS.Length; i++) //for (int i = 0; i < USE_AXIS.Length; i++)
@@ -881,17 +960,17 @@ namespace HexcalMC
if (positionMode == 1) if (positionMode == 1)
{ {
//获取反馈位置 Feedback position (Encoder value) ACSPL+ Variable : FPO (real) //获取反馈位置 Feedback position (Encoder value) ACSPL+ Variable : FPO (real)
xPosition = _acs.GetFPosition(USE_AXIS[0]); xPosition = _acs.GetFPosition(UseAxis[0]);
yPosition = _acs.GetFPosition(USE_AXIS[1]); yPosition = _acs.GetFPosition(UseAxis[1]);
zPosition = _acs.GetFPosition(USE_AXIS[2]); zPosition = _acs.GetFPosition(UseAxis[2]);
DebugDfn.AddLogText("反馈位置: " + xPosition + " " + yPosition + " " + zPosition); //DebugDfn.AddLogText("反馈位置: " + xPosition + " " + yPosition + " " + zPosition);
} }
else else
{ {
//获取参考位置 ACSPL+ Variable : RPOS (real) //获取参考位置 ACSPL+ Variable : RPOS (real)
xPosition = _acs.GetRPosition(USE_AXIS[0]); xPosition = _acs.GetRPosition(UseAxis[0]);
yPosition = _acs.GetRPosition(USE_AXIS[1]); yPosition = _acs.GetRPosition(UseAxis[1]);
zPosition = _acs.GetRPosition(USE_AXIS[2]); zPosition = _acs.GetRPosition(UseAxis[2]);
DebugDfn.AddLogText("参考位置: " + xPosition + " " + yPosition + " " + zPosition); DebugDfn.AddLogText("参考位置: " + xPosition + " " + yPosition + " " + zPosition);
} }
@@ -909,20 +988,19 @@ namespace HexcalMC
DebugDfn.AddLogText("实际速度: " + feedbackVelocity); DebugDfn.AddLogText("实际速度: " + feedbackVelocity);
//设置Y轴 速度参数 //设置Y轴 速度参数
_acs.SetVelocity(Axis.ACSC_AXIS_0, MOTION_SPEED); _acs.SetVelocity(Axis.ACSC_AXIS_0, MotionSpeed);
_acs.SetAcceleration(Axis.ACSC_AXIS_0,MOTION_SPEED*10); _acs.SetAcceleration(Axis.ACSC_AXIS_0, MotionSpeed * 10);
_acs.SetDeceleration(Axis.ACSC_AXIS_0,MOTION_SPEED*10); _acs.SetDeceleration(Axis.ACSC_AXIS_0, MotionSpeed * 10);
//设置X轴速度参数 //设置X轴速度参数
_acs.SetVelocity(Axis.ACSC_AXIS_1, MOTION_SPEED); _acs.SetVelocity(Axis.ACSC_AXIS_1, MotionSpeed);
_acs.SetAcceleration(Axis.ACSC_AXIS_1, MOTION_SPEED * 10); _acs.SetAcceleration(Axis.ACSC_AXIS_1, MotionSpeed * 10);
_acs.SetDeceleration(Axis.ACSC_AXIS_1, MOTION_SPEED * 10); _acs.SetDeceleration(Axis.ACSC_AXIS_1, MotionSpeed * 10);
//设置Z轴速度参数 //设置Z轴速度参数
_acs.SetVelocity(Axis.ACSC_AXIS_8, MOTION_SPEED); _acs.SetVelocity(Axis.ACSC_AXIS_8, MotionSpeed);
_acs.SetAcceleration(Axis.ACSC_AXIS_8, MOTION_SPEED * 10); _acs.SetAcceleration(Axis.ACSC_AXIS_8, MotionSpeed * 10);
_acs.SetDeceleration(Axis.ACSC_AXIS_8, MOTION_SPEED * 10); _acs.SetDeceleration(Axis.ACSC_AXIS_8, MotionSpeed * 10);
} }
private void openGLControl1_OpenGLDraw(object sender, RenderEventArgs args) private void openGLControl1_OpenGLDraw(object sender, RenderEventArgs args)
@@ -974,15 +1052,13 @@ namespace HexcalMC
{ {
} }
#endregion ACS平台相关 #endregion ACS平台相关
#region #region
private void Rtb_motion_Click(object sender, EventArgs e) //ACS调试页面 private void btn_motion_Click(object sender, EventArgs e)
{ {
Motion motion = new Motion(); Motion motion = new Motion(_acs);
motion.Show(); motion.Show();
} }
@@ -993,6 +1069,13 @@ namespace HexcalMC
mAboutBox.Show(); mAboutBox.Show();
} }
private void rtb_demo_Click(object sender, EventArgs e)
{
DemoShow demoShow = new DemoShow(_acs);
demoShow.Show();
demoShow.BringToFront();
}
private void Timer_RefreshUI_Tick(object sender, EventArgs e) //UI刷新 private void Timer_RefreshUI_Tick(object sender, EventArgs e) //UI刷新
{ {
//状态灯刷新 //状态灯刷新
@@ -1004,6 +1087,14 @@ namespace HexcalMC
rle_timer.Text = "当前时间: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); rle_timer.Text = "当前时间: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Plot2D(_pointCloud); //绘图 Plot2D(_pointCloud); //绘图
//更新位置
if (_mPoint3D != null)
{
rtb_xPos.Text = _mPoint3D.X.ToString("F3");
rtb_yPos.Text = _mPoint3D.Y.ToString("F3");
rtb_zPos.Text = _mPoint3D.Z.ToString("F3");
}
} }
#endregion #endregion
+121 -137
View File
@@ -37,8 +37,6 @@
this.btnOpen = new System.Windows.Forms.Button(); this.btnOpen = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.rdoTCP = new System.Windows.Forms.RadioButton();
this.rdoSimu = new System.Windows.Forms.RadioButton();
this.tmrMonitor = new System.Windows.Forms.Timer(this.components); this.tmrMonitor = new System.Windows.Forms.Timer(this.components);
this.grpMotionTest = new System.Windows.Forms.GroupBox(); this.grpMotionTest = new System.Windows.Forms.GroupBox();
this.btnHallAll = new System.Windows.Forms.Button(); this.btnHallAll = new System.Windows.Forms.Button();
@@ -185,7 +183,7 @@
this.label49 = new System.Windows.Forms.Label(); this.label49 = new System.Windows.Forms.Label();
this.label47 = new System.Windows.Forms.Label(); this.label47 = new System.Windows.Forms.Label();
this.groupBox8 = new System.Windows.Forms.GroupBox(); this.groupBox8 = new System.Windows.Forms.GroupBox();
this.button8 = new System.Windows.Forms.Button(); this.btn_movepose = new System.Windows.Forms.Button();
this.checkBox1 = new System.Windows.Forms.CheckBox(); this.checkBox1 = new System.Windows.Forms.CheckBox();
this.textBox3 = new System.Windows.Forms.TextBox(); this.textBox3 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox(); this.textBox2 = new System.Windows.Forms.TextBox();
@@ -194,19 +192,19 @@
this.label45 = new System.Windows.Forms.Label(); this.label45 = new System.Windows.Forms.Label();
this.label44 = new System.Windows.Forms.Label(); this.label44 = new System.Windows.Forms.Label();
this.groupBox7 = new System.Windows.Forms.GroupBox(); this.groupBox7 = new System.Windows.Forms.GroupBox();
this.button7 = new System.Windows.Forms.Button(); this.btn_Y_Back = new System.Windows.Forms.Button();
this.button6 = new System.Windows.Forms.Button(); this.btn_X_right = new System.Windows.Forms.Button();
this.button5 = new System.Windows.Forms.Button(); this.btn_X_left = new System.Windows.Forms.Button();
this.button4 = new System.Windows.Forms.Button(); this.btn_Y_Forward = new System.Windows.Forms.Button();
this.groupBox6 = new System.Windows.Forms.GroupBox(); this.groupBox6 = new System.Windows.Forms.GroupBox();
this.button3 = new System.Windows.Forms.Button(); this.btn_home = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button(); this.btn_stop = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button(); this.btn_start = new System.Windows.Forms.Button();
this.groupBox10 = new System.Windows.Forms.GroupBox(); this.groupBox10 = new System.Windows.Forms.GroupBox();
this.label48 = new System.Windows.Forms.Label(); this.label48 = new System.Windows.Forms.Label();
this.textBox4 = new System.Windows.Forms.TextBox(); this.textBox4 = new System.Windows.Forms.TextBox();
this.button10 = new System.Windows.Forms.Button(); this.btn_halt = new System.Windows.Forms.Button();
this.button9 = new System.Windows.Forms.Button(); this.btn_run = new System.Windows.Forms.Button();
this.checkBox4 = new System.Windows.Forms.CheckBox(); this.checkBox4 = new System.Windows.Forms.CheckBox();
this.checkBox3 = new System.Windows.Forms.CheckBox(); this.checkBox3 = new System.Windows.Forms.CheckBox();
this.checkBox2 = new System.Windows.Forms.CheckBox(); this.checkBox2 = new System.Windows.Forms.CheckBox();
@@ -238,8 +236,6 @@
this.groupBox1.Controls.Add(this.btnOpen); this.groupBox1.Controls.Add(this.btnOpen);
this.groupBox1.Controls.Add(this.label2); this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.label1); this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.rdoTCP);
this.groupBox1.Controls.Add(this.rdoSimu);
this.groupBox1.Location = new System.Drawing.Point(12, 12); this.groupBox1.Location = new System.Drawing.Point(12, 12);
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(273, 94); this.groupBox1.Size = new System.Drawing.Size(273, 94);
@@ -249,7 +245,7 @@
// //
// txtPort // txtPort
// //
this.txtPort.Location = new System.Drawing.Point(171, 40); this.txtPort.Location = new System.Drawing.Point(103, 37);
this.txtPort.Name = "txtPort"; this.txtPort.Name = "txtPort";
this.txtPort.Size = new System.Drawing.Size(91, 21); this.txtPort.Size = new System.Drawing.Size(91, 21);
this.txtPort.TabIndex = 15; this.txtPort.TabIndex = 15;
@@ -257,15 +253,15 @@
// //
// txtIP // txtIP
// //
this.txtIP.Location = new System.Drawing.Point(171, 17); this.txtIP.Location = new System.Drawing.Point(103, 14);
this.txtIP.Name = "txtIP"; this.txtIP.Name = "txtIP";
this.txtIP.Size = new System.Drawing.Size(91, 21); this.txtIP.Size = new System.Drawing.Size(91, 21);
this.txtIP.TabIndex = 16; this.txtIP.TabIndex = 16;
this.txtIP.Text = "10.0.0.100"; this.txtIP.Text = "100.0.0.100";
// //
// btnClose // btnClose
// //
this.btnClose.Location = new System.Drawing.Point(181, 65); this.btnClose.Location = new System.Drawing.Point(113, 62);
this.btnClose.Name = "btnClose"; this.btnClose.Name = "btnClose";
this.btnClose.Size = new System.Drawing.Size(81, 23); this.btnClose.Size = new System.Drawing.Size(81, 23);
this.btnClose.TabIndex = 14; this.btnClose.TabIndex = 14;
@@ -275,7 +271,7 @@
// //
// btnOpen // btnOpen
// //
this.btnOpen.Location = new System.Drawing.Point(94, 65); this.btnOpen.Location = new System.Drawing.Point(7, 62);
this.btnOpen.Name = "btnOpen"; this.btnOpen.Name = "btnOpen";
this.btnOpen.Size = new System.Drawing.Size(81, 23); this.btnOpen.Size = new System.Drawing.Size(81, 23);
this.btnOpen.TabIndex = 13; this.btnOpen.TabIndex = 13;
@@ -286,7 +282,7 @@
// label2 // label2
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(102, 44); this.label2.Location = new System.Drawing.Point(15, 41);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(29, 12); this.label2.Size = new System.Drawing.Size(29, 12);
this.label2.TabIndex = 11; this.label2.TabIndex = 11;
@@ -295,36 +291,12 @@
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(102, 21); this.label1.Location = new System.Drawing.Point(15, 18);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(71, 12); this.label1.Size = new System.Drawing.Size(71, 12);
this.label1.TabIndex = 12; this.label1.TabIndex = 12;
this.label1.Text = "目标设备 IP"; this.label1.Text = "目标设备 IP";
// //
// rdoTCP
//
this.rdoTCP.AutoSize = true;
this.rdoTCP.Location = new System.Drawing.Point(6, 19);
this.rdoTCP.Name = "rdoTCP";
this.rdoTCP.Size = new System.Drawing.Size(41, 16);
this.rdoTCP.TabIndex = 10;
this.rdoTCP.TabStop = true;
this.rdoTCP.Text = "TCP";
this.rdoTCP.UseVisualStyleBackColor = true;
this.rdoTCP.CheckedChanged += new System.EventHandler(this.RdoTCP_CheckedChanged);
//
// rdoSimu
//
this.rdoSimu.AutoSize = true;
this.rdoSimu.Location = new System.Drawing.Point(6, 42);
this.rdoSimu.Name = "rdoSimu";
this.rdoSimu.Size = new System.Drawing.Size(59, 16);
this.rdoSimu.TabIndex = 9;
this.rdoSimu.TabStop = true;
this.rdoSimu.Text = "模拟器";
this.rdoSimu.UseVisualStyleBackColor = true;
this.rdoSimu.CheckedChanged += new System.EventHandler(this.RdoSimu_CheckedChanged);
//
// tmrMonitor // tmrMonitor
// //
this.tmrMonitor.Interval = 50; this.tmrMonitor.Interval = 50;
@@ -584,6 +556,10 @@
// //
this.cboAxisNo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cboAxisNo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboAxisNo.FormattingEnabled = true; this.cboAxisNo.FormattingEnabled = true;
this.cboAxisNo.Items.AddRange(new object[] {
"1",
"0",
"8"});
this.cboAxisNo.Location = new System.Drawing.Point(115, 20); this.cboAxisNo.Location = new System.Drawing.Point(115, 20);
this.cboAxisNo.Name = "cboAxisNo"; this.cboAxisNo.Name = "cboAxisNo";
this.cboAxisNo.Size = new System.Drawing.Size(60, 20); this.cboAxisNo.Size = new System.Drawing.Size(60, 20);
@@ -1814,7 +1790,7 @@
// //
// groupBox8 // groupBox8
// //
this.groupBox8.Controls.Add(this.button8); this.groupBox8.Controls.Add(this.btn_movepose);
this.groupBox8.Controls.Add(this.checkBox1); this.groupBox8.Controls.Add(this.checkBox1);
this.groupBox8.Controls.Add(this.textBox3); this.groupBox8.Controls.Add(this.textBox3);
this.groupBox8.Controls.Add(this.textBox2); this.groupBox8.Controls.Add(this.textBox2);
@@ -1829,14 +1805,15 @@
this.groupBox8.TabStop = false; this.groupBox8.TabStop = false;
this.groupBox8.Text = "定位"; this.groupBox8.Text = "定位";
// //
// button8 // btn_movepose
// //
this.button8.Location = new System.Drawing.Point(129, 122); this.btn_movepose.Location = new System.Drawing.Point(129, 122);
this.button8.Name = "button8"; this.btn_movepose.Name = "btn_movepose";
this.button8.Size = new System.Drawing.Size(120, 37); this.btn_movepose.Size = new System.Drawing.Size(120, 37);
this.button8.TabIndex = 7; this.btn_movepose.TabIndex = 7;
this.button8.Text = "移动到目标位置"; this.btn_movepose.Text = "移动到目标位置";
this.button8.UseVisualStyleBackColor = true; this.btn_movepose.UseVisualStyleBackColor = true;
this.btn_movepose.Click += new System.EventHandler(this.btn_movepose_Click);
// //
// checkBox1 // checkBox1
// //
@@ -1898,10 +1875,10 @@
// //
// groupBox7 // groupBox7
// //
this.groupBox7.Controls.Add(this.button7); this.groupBox7.Controls.Add(this.btn_Y_Back);
this.groupBox7.Controls.Add(this.button6); this.groupBox7.Controls.Add(this.btn_X_right);
this.groupBox7.Controls.Add(this.button5); this.groupBox7.Controls.Add(this.btn_X_left);
this.groupBox7.Controls.Add(this.button4); this.groupBox7.Controls.Add(this.btn_Y_Forward);
this.groupBox7.Location = new System.Drawing.Point(6, 100); this.groupBox7.Location = new System.Drawing.Point(6, 100);
this.groupBox7.Name = "groupBox7"; this.groupBox7.Name = "groupBox7";
this.groupBox7.Size = new System.Drawing.Size(283, 160); this.groupBox7.Size = new System.Drawing.Size(283, 160);
@@ -1909,47 +1886,51 @@
this.groupBox7.TabStop = false; this.groupBox7.TabStop = false;
this.groupBox7.Text = "Jog"; this.groupBox7.Text = "Jog";
// //
// button7 // btn_Y_Back
// //
this.button7.Location = new System.Drawing.Point(104, 107); this.btn_Y_Back.Location = new System.Drawing.Point(104, 107);
this.button7.Name = "button7"; this.btn_Y_Back.Name = "btn_Y_Back";
this.button7.Size = new System.Drawing.Size(75, 35); this.btn_Y_Back.Size = new System.Drawing.Size(75, 35);
this.button7.TabIndex = 3; this.btn_Y_Back.TabIndex = 3;
this.button7.Text = "Y后退"; this.btn_Y_Back.Text = "Y后退";
this.button7.UseVisualStyleBackColor = true; this.btn_Y_Back.UseVisualStyleBackColor = true;
this.btn_Y_Back.Click += new System.EventHandler(this.btn_Y_Back_Click);
// //
// button6 // btn_X_right
// //
this.button6.Location = new System.Drawing.Point(198, 61); this.btn_X_right.Location = new System.Drawing.Point(198, 61);
this.button6.Name = "button6"; this.btn_X_right.Name = "btn_X_right";
this.button6.Size = new System.Drawing.Size(75, 35); this.btn_X_right.Size = new System.Drawing.Size(75, 35);
this.button6.TabIndex = 2; this.btn_X_right.TabIndex = 2;
this.button6.Text = "X右移"; this.btn_X_right.Text = "X右移";
this.button6.UseVisualStyleBackColor = true; this.btn_X_right.UseVisualStyleBackColor = true;
this.btn_X_right.Click += new System.EventHandler(this.btn_X_right_Click);
// //
// button5 // btn_X_left
// //
this.button5.Location = new System.Drawing.Point(10, 61); this.btn_X_left.Location = new System.Drawing.Point(10, 61);
this.button5.Name = "button5"; this.btn_X_left.Name = "btn_X_left";
this.button5.Size = new System.Drawing.Size(75, 35); this.btn_X_left.Size = new System.Drawing.Size(75, 35);
this.button5.TabIndex = 1; this.btn_X_left.TabIndex = 1;
this.button5.Text = "X左移"; this.btn_X_left.Text = "X左移";
this.button5.UseVisualStyleBackColor = true; this.btn_X_left.UseVisualStyleBackColor = true;
this.btn_X_left.Click += new System.EventHandler(this.btn_X_left_Click);
// //
// button4 // btn_Y_Forward
// //
this.button4.Location = new System.Drawing.Point(104, 12); this.btn_Y_Forward.Location = new System.Drawing.Point(104, 12);
this.button4.Name = "button4"; this.btn_Y_Forward.Name = "btn_Y_Forward";
this.button4.Size = new System.Drawing.Size(75, 35); this.btn_Y_Forward.Size = new System.Drawing.Size(75, 35);
this.button4.TabIndex = 0; this.btn_Y_Forward.TabIndex = 0;
this.button4.Text = "Y前进"; this.btn_Y_Forward.Text = "Y前进";
this.button4.UseVisualStyleBackColor = true; this.btn_Y_Forward.UseVisualStyleBackColor = true;
this.btn_Y_Forward.Click += new System.EventHandler(this.btn_Y_Forward_Click);
// //
// groupBox6 // groupBox6
// //
this.groupBox6.Controls.Add(this.button3); this.groupBox6.Controls.Add(this.btn_home);
this.groupBox6.Controls.Add(this.button2); this.groupBox6.Controls.Add(this.btn_stop);
this.groupBox6.Controls.Add(this.button1); this.groupBox6.Controls.Add(this.btn_start);
this.groupBox6.Location = new System.Drawing.Point(6, 24); this.groupBox6.Location = new System.Drawing.Point(6, 24);
this.groupBox6.Name = "groupBox6"; this.groupBox6.Name = "groupBox6";
this.groupBox6.Size = new System.Drawing.Size(283, 70); this.groupBox6.Size = new System.Drawing.Size(283, 70);
@@ -1957,39 +1938,42 @@
this.groupBox6.TabStop = false; this.groupBox6.TabStop = false;
this.groupBox6.Text = "动作"; this.groupBox6.Text = "动作";
// //
// button3 // btn_home
// //
this.button3.Location = new System.Drawing.Point(198, 24); this.btn_home.Location = new System.Drawing.Point(198, 24);
this.button3.Name = "button3"; this.btn_home.Name = "btn_home";
this.button3.Size = new System.Drawing.Size(75, 30); this.btn_home.Size = new System.Drawing.Size(75, 30);
this.button3.TabIndex = 2; this.btn_home.TabIndex = 2;
this.button3.Text = "回原点"; this.btn_home.Text = "回原点";
this.button3.UseVisualStyleBackColor = true; this.btn_home.UseVisualStyleBackColor = true;
this.btn_home.Click += new System.EventHandler(this.btn_home_Click);
// //
// button2 // btn_stop
// //
this.button2.Location = new System.Drawing.Point(104, 24); this.btn_stop.Location = new System.Drawing.Point(104, 24);
this.button2.Name = "button2"; this.btn_stop.Name = "btn_stop";
this.button2.Size = new System.Drawing.Size(75, 30); this.btn_stop.Size = new System.Drawing.Size(75, 30);
this.button2.TabIndex = 1; this.btn_stop.TabIndex = 1;
this.button2.Text = "停止"; this.btn_stop.Text = "停止";
this.button2.UseVisualStyleBackColor = true; this.btn_stop.UseVisualStyleBackColor = true;
this.btn_stop.Click += new System.EventHandler(this.btn_stop_Click);
// //
// button1 // btn_start
// //
this.button1.Location = new System.Drawing.Point(10, 24); this.btn_start.Location = new System.Drawing.Point(10, 24);
this.button1.Name = "button1"; this.btn_start.Name = "btn_start";
this.button1.Size = new System.Drawing.Size(75, 30); this.btn_start.Size = new System.Drawing.Size(75, 30);
this.button1.TabIndex = 0; this.btn_start.TabIndex = 0;
this.button1.Text = "开始"; this.btn_start.Text = "开始";
this.button1.UseVisualStyleBackColor = true; this.btn_start.UseVisualStyleBackColor = true;
this.btn_start.Click += new System.EventHandler(this.btn_start_Click);
// //
// groupBox10 // groupBox10
// //
this.groupBox10.Controls.Add(this.label48); this.groupBox10.Controls.Add(this.label48);
this.groupBox10.Controls.Add(this.textBox4); this.groupBox10.Controls.Add(this.textBox4);
this.groupBox10.Controls.Add(this.button10); this.groupBox10.Controls.Add(this.btn_halt);
this.groupBox10.Controls.Add(this.button9); this.groupBox10.Controls.Add(this.btn_run);
this.groupBox10.Controls.Add(this.checkBox4); this.groupBox10.Controls.Add(this.checkBox4);
this.groupBox10.Controls.Add(this.checkBox3); this.groupBox10.Controls.Add(this.checkBox3);
this.groupBox10.Controls.Add(this.checkBox2); this.groupBox10.Controls.Add(this.checkBox2);
@@ -2016,23 +2000,25 @@
this.textBox4.Size = new System.Drawing.Size(35, 21); this.textBox4.Size = new System.Drawing.Size(35, 21);
this.textBox4.TabIndex = 5; this.textBox4.TabIndex = 5;
// //
// button10 // btn_halt
// //
this.button10.Location = new System.Drawing.Point(94, 60); this.btn_halt.Location = new System.Drawing.Point(94, 60);
this.button10.Name = "button10"; this.btn_halt.Name = "btn_halt";
this.button10.Size = new System.Drawing.Size(60, 23); this.btn_halt.Size = new System.Drawing.Size(60, 23);
this.button10.TabIndex = 4; this.btn_halt.TabIndex = 4;
this.button10.Text = "停止"; this.btn_halt.Text = "停止";
this.button10.UseVisualStyleBackColor = true; this.btn_halt.UseVisualStyleBackColor = true;
this.btn_halt.Click += new System.EventHandler(this.btn_halt_Click);
// //
// button9 // btn_run
// //
this.button9.Location = new System.Drawing.Point(13, 60); this.btn_run.Location = new System.Drawing.Point(13, 60);
this.button9.Name = "button9"; this.btn_run.Name = "btn_run";
this.button9.Size = new System.Drawing.Size(60, 23); this.btn_run.Size = new System.Drawing.Size(60, 23);
this.button9.TabIndex = 3; this.btn_run.TabIndex = 3;
this.button9.Text = "运行"; this.btn_run.Text = "运行";
this.button9.UseVisualStyleBackColor = true; this.btn_run.UseVisualStyleBackColor = true;
this.btn_run.Click += new System.EventHandler(this.btn_run_Click);
// //
// checkBox4 // checkBox4
// //
@@ -2154,8 +2140,6 @@
private System.Windows.Forms.Button btnOpen; private System.Windows.Forms.Button btnOpen;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.RadioButton rdoTCP;
private System.Windows.Forms.RadioButton rdoSimu;
private System.Windows.Forms.Button btnHalt; private System.Windows.Forms.Button btnHalt;
private System.Windows.Forms.GroupBox grpMst; private System.Windows.Forms.GroupBox grpMst;
private System.Windows.Forms.Label label16; private System.Windows.Forms.Label label16;
@@ -2266,7 +2250,7 @@
private System.Windows.Forms.GroupBox groupBox5; private System.Windows.Forms.GroupBox groupBox5;
private System.Windows.Forms.GroupBox groupBox9; private System.Windows.Forms.GroupBox groupBox9;
private System.Windows.Forms.GroupBox groupBox8; private System.Windows.Forms.GroupBox groupBox8;
private System.Windows.Forms.Button button8; private System.Windows.Forms.Button btn_movepose;
private System.Windows.Forms.CheckBox checkBox1; private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.TextBox textBox3; private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.TextBox textBox2; private System.Windows.Forms.TextBox textBox2;
@@ -2275,19 +2259,19 @@
private System.Windows.Forms.Label label45; private System.Windows.Forms.Label label45;
private System.Windows.Forms.Label label44; private System.Windows.Forms.Label label44;
private System.Windows.Forms.GroupBox groupBox7; private System.Windows.Forms.GroupBox groupBox7;
private System.Windows.Forms.Button button7; private System.Windows.Forms.Button btn_Y_Back;
private System.Windows.Forms.Button button6; private System.Windows.Forms.Button btn_X_right;
private System.Windows.Forms.Button button5; private System.Windows.Forms.Button btn_X_left;
private System.Windows.Forms.Button button4; private System.Windows.Forms.Button btn_Y_Forward;
private System.Windows.Forms.GroupBox groupBox6; private System.Windows.Forms.GroupBox groupBox6;
private System.Windows.Forms.Button button3; private System.Windows.Forms.Button btn_home;
private System.Windows.Forms.Button button2; private System.Windows.Forms.Button btn_stop;
private System.Windows.Forms.Button button1; private System.Windows.Forms.Button btn_start;
private System.Windows.Forms.GroupBox groupBox10; private System.Windows.Forms.GroupBox groupBox10;
private System.Windows.Forms.Label label48; private System.Windows.Forms.Label label48;
private System.Windows.Forms.TextBox textBox4; private System.Windows.Forms.TextBox textBox4;
private System.Windows.Forms.Button button10; private System.Windows.Forms.Button btn_halt;
private System.Windows.Forms.Button button9; private System.Windows.Forms.Button btn_run;
private System.Windows.Forms.CheckBox checkBox4; private System.Windows.Forms.CheckBox checkBox4;
private System.Windows.Forms.CheckBox checkBox3; private System.Windows.Forms.CheckBox checkBox3;
private System.Windows.Forms.CheckBox checkBox2; private System.Windows.Forms.CheckBox checkBox2;
+57 -16
View File
@@ -3,7 +3,9 @@ using System.Diagnostics;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Windows.Forms; using System.Windows.Forms;
using ACS.SPiiPlusNET; using ACS.SPiiPlusNET;
using HexcalMC.Base;
using HexcalMC.Properties; using HexcalMC.Properties;
// ACS .NET Library // ACS .NET Library
namespace HexcalMC namespace HexcalMC
@@ -38,11 +40,11 @@ namespace HexcalMC
private int _mNValues, _mNOutputState; private int _mNValues, _mNOutputState;
private object _mObjReadVar; private object _mObjReadVar;
public Motion() public Motion(Api api)
{ {
InitializeComponent(); InitializeComponent();
_acs = new Api(); //初始化 ACS运动控制类 _acs = api; //初始化 ACS运动控制类
// Register Event 注册时间 // Register Event 注册时间
_acs.PHYSICALMOTIONEND += ACS_PHYSICALMOTIONEND; _acs.PHYSICALMOTIONEND += ACS_PHYSICALMOTIONEND;
@@ -129,7 +131,6 @@ namespace HexcalMC
private void Form1_Load(object sender, EventArgs e) private void Form1_Load(object sender, EventArgs e)
{ {
rdoTCP.Checked = true;
btnOpen.Enabled = true; btnOpen.Enabled = true;
btnClose.Enabled = false; btnClose.Enabled = false;
@@ -237,18 +238,17 @@ namespace HexcalMC
try try
{ {
if (rdoTCP.Checked) if (_acs.IsConnected)
{
DebugDfn.AddLogText("运动平台已连接");
}
else
{ {
// TCP/IP (Ethernet) // TCP/IP (Ethernet)
_acs.OpenCommEthernetTCP( _acs.OpenCommEthernetTCP(
txtIP.Text, // IP Address (Default : 10.0.0.100) txtIP.Text, // IP Address (Default : 10.0.0.100)
Convert.ToInt32(txtPort.Text.Trim())); // TCP/IP Port nubmer (default : 701) Convert.ToInt32(txtPort.Text.Trim())); // TCP/IP Port nubmer (default : 701)
} }
else if (rdoSimu.Checked)
{
// Simmulation mode
_acs.OpenCommSimulator();
}
_mBConnected = true; _mBConnected = true;
@@ -263,11 +263,11 @@ namespace HexcalMC
// When we are using multi axes command (ex) ToPointM, HaltM, ...), we need to allocate the array size more 1. // When we are using multi axes command (ex) ToPointM, HaltM, ...), we need to allocate the array size more 1.
// Because of the last delimeter (-1) // Because of the last delimeter (-1)
_mArrAxisList = new Axis[_mNTotalAxis + 1]; _mArrAxisList = new Axis[_mNTotalAxis + 1];
for (i = 0; i < _mNTotalAxis; i++) //for (i = 0; i < _mNTotalAxis; i++)
{ //{
cboAxisNo.Items.Add(i.ToString()); // cboAxisNo.Items.Add(i.ToString());
_mArrAxisList[i] = (Axis)i; // _mArrAxisList[i] = (Axis)i;
} //}
// Insert '-1' at the last // Insert '-1' at the last
_mArrAxisList[_mNTotalAxis] = Axis.ACSC_NONE; _mArrAxisList[_mNTotalAxis] = Axis.ACSC_NONE;
@@ -664,7 +664,7 @@ namespace HexcalMC
} }
} }
// 정방향 이동 동작
private void BtnJogPos_MouseDown(object sender, MouseEventArgs e) private void BtnJogPos_MouseDown(object sender, MouseEventArgs e)
{ {
double lfVelocity = 0.0f; double lfVelocity = 0.0f;
@@ -852,7 +852,7 @@ namespace HexcalMC
private void BtnEventMotionEnd_Click(object sender, EventArgs e) private void BtnEventMotionEnd_Click(object sender, EventArgs e)
{ {
_acs.PHYSICALMOTIONEND +=ACS_PHYSICALMOTIONEND; _acs.PHYSICALMOTIONEND += ACS_PHYSICALMOTIONEND;
_acs.EnableEvent(Interrupts.ACSC_INTR_PHYSICAL_MOTION_END); _acs.EnableEvent(Interrupts.ACSC_INTR_PHYSICAL_MOTION_END);
lstLog.Items.Add("PHYSICAL_MOTION_END event enabled"); lstLog.Items.Add("PHYSICAL_MOTION_END event enabled");
} }
@@ -889,6 +889,47 @@ namespace HexcalMC
lstLog.Items.Add("PROGRAM_END event enabled"); lstLog.Items.Add("PROGRAM_END event enabled");
} }
private void btn_movepose_Click(object sender, EventArgs e)
{
}
private void btn_start_Click(object sender, EventArgs e)
{
}
private void btn_stop_Click(object sender, EventArgs e)
{
}
private void btn_home_Click(object sender, EventArgs e)
{
}
private void btn_X_left_Click(object sender, EventArgs e)
{
}
private void btn_X_right_Click(object sender, EventArgs e)
{
}
private void btn_Y_Forward_Click(object sender, EventArgs e)
{
}
private void btn_Y_Back_Click(object sender, EventArgs e)
{
}
private void btn_run_Click(object sender, EventArgs e)
{
}
private void btn_halt_Click(object sender, EventArgs e)
{
}
private void ACS_PROGRAMEND(BufferMasks buffer) private void ACS_PROGRAMEND(BufferMasks buffer)
{ {
int bit = 0x01; int bit = 0x01;
+1 -1
View File
@@ -1148,7 +1148,7 @@
</value> </value>
</data> </data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>176</value> <value>77</value>
</metadata> </metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
+9 -6
View File
@@ -9,18 +9,21 @@ using static Telerik.WinControls.UI.Export.ExportSettings;
// //
// //
//开发说明 //开发说明
// V0.1 2023/04/10 // V0.1 2024/03/1
//--------------------------------------- //---------------------------------------
//1、初版构建 //1、初版构建
//2、调用流程: 开启TCP服务端、连接到平台轴启用—》hexcal软件连接,开启校准通讯流程—》移动至到位后反馈—》hexcal逻辑处理—》hexcal校准完成关系—》软件关闭 //2、调用流程: 开启TCP服务端、连接到平台轴启用—》hexcal软件连接,开启校准通讯流程—》移动至到位后反馈—》hexcal逻辑处理—》hexcal校准完成关系—》软件关闭
// //
// V0.2 2024/03/7
//---------------------------------------
//1、取消上电自动连接
//2、优化运动窗体间传递 运动平台对象
//3、增加平台位置动态显示
//4、修复运动到位判断逻辑
//5、增加演示模式按钮
// //
// //
// //6、点击停止报错,运动测试界面问题?
//
//
//
//
// //
// //
// //
+3 -3
View File
@@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Hexagon HMI")] [assembly: AssemblyCompany("Hexagon HMI")]
[assembly: AssemblyProduct("直线电机平台补偿软件(HexcalMC)")] [assembly: AssemblyProduct("直线电机平台补偿软件(HexcalMC)")]
[assembly: AssemblyCopyright("Copyright © 2023 Hexagon,Inc")] [assembly: AssemblyCopyright("Copyright © 2024 Hexagon,Inc")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
@@ -19,5 +19,5 @@ using System.Runtime.InteropServices;
[assembly: Guid("6215eb36-92d3-4f96-9331-1e8cbda161f4")] [assembly: Guid("6215eb36-92d3-4f96-9331-1e8cbda161f4")]
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyVersion("0.0.2")]
[assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyFileVersion("0.0.2")]
+30
View File
@@ -70,6 +70,26 @@ namespace HexcalMC.Properties {
} }
} }
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap demo_show {
get {
object obj = ResourceManager.GetObject("demo_show", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap demo_show_128 {
get {
object obj = ResourceManager.GetObject("demo_show_128", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary> /// </summary>
@@ -110,6 +130,16 @@ namespace HexcalMC.Properties {
} }
} }
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal static System.Drawing.Bitmap mothion_64 {
get {
object obj = ResourceManager.GetObject("mothion_64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。 /// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary> /// </summary>
+18 -10
View File
@@ -112,35 +112,43 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="HexagonNew" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="HexagonNew" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\HexagonNew.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Images\HexagonNew.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="On" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="On" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\On.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Images\On.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Error" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Error" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Error.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Images\Error.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="Hexagon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Hexagon.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="demo_show_128" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\demo_show_128.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Off" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Off" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Images\Off.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Images\Off.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="motion" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="motion" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\motion.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\motion.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <data name="demo_show" type="System.Resources.ResXFileRef, System.Windows.Forms">
<data name="Hexagon" type="System.Resources.ResXFileRef, System.Windows.Forms"> <value>..\Resources\demo_show.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<value>..\Resources\Hexagon.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> </data>
<data name="mothion_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\mothion_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
</root> </root>