一,window界面代码
namespace HslCommunicationForInovance
{
partial class HslCommunicationForInovanceFrom
{
/// <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 Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.label1 = new System.Windows.Forms.Label();
this.txtAddress = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.txtPiont = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.txtLogicalBit = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.txtStartAddress = new System.Windows.Forms.TextBox();
this.txtqty = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.richCurrent = new System.Windows.Forms.RichTextBox();
this.btnRead = new System.Windows.Forms.Button();
this.btnWrite = new System.Windows.Forms.Button();
this.cmbNumType = new System.Windows.Forms.ComboBox();
this.label7 = new System.Windows.Forms.Label();
this.richHistory = new System.Windows.Forms.RichTextBox();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.cmbCPU = new System.Windows.Forms.ComboBox();
this.label8 = new System.Windows.Forms.Label();
this.ComboBox1 = new System.Windows.Forms.ComboBox();
this.checkBox3 = new System.Windows.Forms.CheckBox();
this.label6 = new System.Windows.Forms.Label();
this.btnClear = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(70, 26);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(41, 12);
this.label1.TabIndex = 0;
this.label1.Text = "IP地址";
//
// txtAddress
//
this.txtAddress.Location = new System.Drawing.Point(149, 23);
this.txtAddress.Name = "txtAddress";
this.txtAddress.Size = new System.Drawing.Size(102, 21);
this.txtAddress.TabIndex = 1;
this.txtAddress.Text = "192.168.40.60";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(70, 85);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(29, 12);
this.label2.TabIndex = 2;
this.label2.Text = "端口";
//
// txtPiont
//
this.txtPiont.Location = new System.Drawing.Point(149, 82);
this.txtPiont.Name = "txtPiont";
this.txtPiont.Size = new System.Drawing.Size(83, 21);
this.txtPiont.TabIndex = 3;
this.txtPiont.Text = "502";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(257, 85);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(41, 12);
this.label3.TabIndex = 4;
this.label3.Text = "逻辑位";
//
// txtLogicalBit
//
this.txtLogicalBit.Location = new System.Drawing.Point(317, 82);
this.txtLogicalBit.Name = "txtLogicalBit";
this.txtLogicalBit.Size = new System.Drawing.Size(83, 21);
this.txtLogicalBit.TabIndex = 5;
this.txtLogicalBit.Text = "0";
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(70, 119);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(53, 12);
this.label4.TabIndex = 6;
this.label4.Text = "起始地址";
//
// txtStartAddress
//
this.txtStartAddress.Location = new System.Drawing.Point(149, 116);
this.txtStartAddress.Name = "txtStartAddress";
this.txtStartAddress.Size = new System.Drawing.Size(83, 21);
this.txtStartAddress.TabIndex = 7;
this.txtStartAddress.Text = "D50";
//
// txtqty
//
this.txtqty.Location = new System.Drawing.Point(317, 115);
this.txtqty.Name = "txtqty";
this.txtqty.Size = new System.Drawing.Size(83, 21);
this.txtqty.TabIndex = 8;
this.txtqty.Text = "15";
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(267, 120);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(29, 12);
this.label5.TabIndex = 9;
this.label5.Text = "个数";
//
// richCurrent
//
this.richCurrent.Location = new System.Drawing.Point(441, 31);
this.richCurrent.Name = "richCurrent";
this.richCurrent.Size = new System.Drawing.Size(318, 207);
this.richCurrent.TabIndex = 11;
this.richCurrent.Text = "";
//
// btnRead
//
this.btnRead.Location = new System.Drawing.Point(72, 206);
this.btnRead.Name = "btnRead";
this.btnRead.Size = new System.Drawing.Size(88, 32);
this.btnRead.TabIndex = 12;
this.btnRead.Text = "读取数据";
this.btnRead.UseVisualStyleBackColor = true;
this.btnRead.Click += new System.EventHandler(this.btnRead_Click);
//
// btnWrite
//
this.btnWrite.Location = new System.Drawing.Point(178, 206);
this.btnWrite.Name = "btnWrite";
this.btnWrite.Size = new System.Drawing.Size(84, 32);
this.btnWrite.TabIndex = 13;
this.btnWrite.Text = "写入数据";
this.btnWrite.UseVisualStyleBackColor = true;
this.btnWrite.Click += new System.EventHandler(this.btnWrite_Click);
//
// cmbNumType
//
this.cmbNumType.FormattingEnabled = true;
this.cmbNumType.Items.AddRange(new object[] {
"16整数",
"32整数",
"FLOAT",
"字符串",
"布尔"});
this.cmbNumType.Location = new System.Drawing.Point(316, 160);
this.cmbNumType.Name = "cmbNumType";
this.cmbNumType.Size = new System.Drawing.Size(83, 20);
this.cmbNumType.TabIndex = 16;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(248, 165);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(53, 12);
this.label7.TabIndex = 17;
this.label7.Text = "数据类型";
//
// richHistory
//
this.richHistory.Location = new System.Drawing.Point(72, 269);
this.richHistory.Name = "richHistory";
this.richHistory.Size = new System.Drawing.Size(687, 169);
this.richHistory.TabIndex = 18;
this.richHistory.Text = "";
//
// checkBox1
//
this.checkBox1.AutoSize = true;
this.checkBox1.Checked = true;
this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBox1.Location = new System.Drawing.Point(262, 25);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(102, 16);
this.checkBox1.TabIndex = 19;
this.checkBox1.Text = "首地址从0开始";
this.checkBox1.UseVisualStyleBackColor = true;
//
// cmbCPU
//
this.cmbCPU.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCPU.FormattingEnabled = true;
this.cmbCPU.Items.AddRange(new object[] {
"AM",
"H3U",
"H5U"});
this.cmbCPU.Location = new System.Drawing.Point(149, 160);
this.cmbCPU.Name = "cmbCPU";
this.cmbCPU.Size = new System.Drawing.Size(65, 20);
this.cmbCPU.TabIndex = 42;
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(70, 55);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(53, 12);
this.label8.TabIndex = 41;
this.label8.Text = "解析格式";
//
// ComboBox1
//
this.ComboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.ComboBox1.FormattingEnabled = true;
this.ComboBox1.Items.AddRange(new object[] {
"ABCD",
"BADC",
"CDAB",
"DCBA"});
this.ComboBox1.Location = new System.Drawing.Point(149, 53);
this.ComboBox1.Name = "ComboBox1";
this.ComboBox1.Size = new System.Drawing.Size(89, 20);
this.ComboBox1.TabIndex = 44;
//
// checkBox3
//
this.checkBox3.AutoSize = true;
this.checkBox3.Checked = true;
this.checkBox3.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBox3.Location = new System.Drawing.Point(262, 55);
this.checkBox3.Name = "checkBox3";
this.checkBox3.Size = new System.Drawing.Size(84, 16);
this.checkBox3.TabIndex = 43;
this.checkBox3.Text = "字符串颠倒";
this.checkBox3.UseVisualStyleBackColor = true;
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(70, 168);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(47, 12);
this.label6.TabIndex = 45;
this.label6.Text = "CPU型号";
//
// btnClear
//
this.btnClear.Location = new System.Drawing.Point(298, 206);
this.btnClear.Name = "btnClear";
this.btnClear.Size = new System.Drawing.Size(80, 32);
this.btnClear.TabIndex = 46;
this.btnClear.Text = "清空记录";
this.btnClear.UseVisualStyleBackColor = true;
this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
//
// HslCommunicationForInovanceFrom
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 463);
this.Controls.Add(this.btnClear);
this.Controls.Add(this.label6);
this.Controls.Add(this.ComboBox1);
this.Controls.Add(this.checkBox3);
this.Controls.Add(this.cmbCPU);
this.Controls.Add(this.label8);
this.Controls.Add(this.checkBox1);
this.Controls.Add(this.richHistory);
this.Controls.Add(this.label7);
this.Controls.Add(this.cmbNumType);
this.Controls.Add(this.btnWrite);
this.Controls.Add(this.btnRead);
this.Controls.Add(this.richCurrent);
this.Controls.Add(this.label5);
this.Controls.Add(this.txtqty);
this.Controls.Add(this.txtStartAddress);
this.Controls.Add(this.label4);
this.Controls.Add(this.txtLogicalBit);
this.Controls.Add(this.label3);
this.Controls.Add(this.txtPiont);
this.Controls.Add(this.label2);
this.Controls.Add(this.txtAddress);
this.Controls.Add(this.label1);
this.Name = "HslCommunicationForInovanceFrom";
this.Text = "HslCommunicationForInovance";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox txtAddress;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox txtPiont;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox txtLogicalBit;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtStartAddress;
private System.Windows.Forms.TextBox txtqty;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.RichTextBox richCurrent;
private System.Windows.Forms.Button btnRead;
private System.Windows.Forms.Button btnWrite;
private System.Windows.Forms.ComboBox cmbNumType;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.RichTextBox richHistory;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.ComboBox cmbCPU;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.ComboBox ComboBox1;
private System.Windows.Forms.CheckBox checkBox3;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Button btnClear;
}
}
二,window界面后台代码
using HslCommunication.LogNet;
using HslCommunication.Profinet.Inovance;
using System;
using System.Text;
using System.Windows.Forms;
namespace HslCommunicationForInovance
{
public partial class HslCommunicationForInovanceFrom : Form
{
private InovanceTcpNet inovanceH3UTcp = null;
private readonly ILogNet LogNet;
public HslCommunicationForInovanceFrom()
{
InitializeComponent();
}
private void btnRead_Click(object sender, EventArgs e)
{
if (!int.TryParse(this.txtPiont.Text, out int port))
{
MessageBox.Show("Port input is wrong!");
return;
}
if (!byte.TryParse(this.txtLogicalBit.Text, out byte station))
{
MessageBox.Show("Station input is wrong!");
return;
}
inovanceH3UTcp?.ConnectClose();
inovanceH3UTcp = new InovanceTcpNet(this.txtAddress.Text.Trim(), port, station);
inovanceH3UTcp.AddressStartWithZero = checkBox1.Checked;
inovanceH3UTcp.Series = (InovanceSeries)cmbCPU.SelectedIndex;
comboBox1_SelectedIndexChanged(null, new EventArgs()); // 设置数据服务
inovanceH3UTcp.IsStringReverse = checkBox3.Checked; //读取字符串是否倒序
inovanceH3UTcp.LogNet = LogNet;
var operateResult = inovanceH3UTcp.ConnectServer();
if (operateResult.IsSuccess)
{
this.richHistory.Text = this.richHistory.Text + "\r\n" + "连接成功";
}
else
{
this.richHistory.Text = this.richHistory.Text + "\r\n" + "连接失败";
return;
}
try
{
if (this.cmbNumType.Text == "字符串")
{
var operateResult1 = inovanceH3UTcp.ReadString(this.txtStartAddress.Text, ushort.Parse(this.txtqty.Text));
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = "读取结果为:"+operateResult1.Content.ToString();
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = "读取失败!";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
else if (this.cmbNumType.Text == "16整数")
{
var operateResult1 = inovanceH3UTcp.ReadUInt16(this.txtStartAddress.Text, ushort.Parse(this.txtqty.Text));
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = "读取结果为:" + operateResult1.Content[0].ToString();
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = "读取失败!";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
else if (this.cmbNumType.Text == "32整数")
{
var operateResult1 = inovanceH3UTcp.ReadUInt32(this.txtStartAddress.Text, ushort.Parse(this.txtqty.Text));
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = "读取结果为:" + operateResult1.Content[0].ToString();
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = "读取失败!";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
else
{
var operateResult1 = inovanceH3UTcp.ReadBool(this.txtStartAddress.Text, ushort.Parse(this.txtqty.Text));
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = "读取结果为:" + operateResult1.Content[0].ToString();
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = "读取失败!";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
}
catch (Exception ex )
{
Console.WriteLine(ex.Message);
}
finally
{
inovanceH3UTcp.ConnectClose();
}
}
private void btnWrite_Click(object sender, EventArgs e)
{
if (!int.TryParse(this.txtPiont.Text, out int port))
{
MessageBox.Show("Port input is wrong!");
return;
}
if (!byte.TryParse(this.txtLogicalBit.Text, out byte station))
{
MessageBox.Show("Station input is wrong!");
return;
}
inovanceH3UTcp?.ConnectClose();
inovanceH3UTcp = new InovanceTcpNet(this.txtAddress.Text.Trim(), port, station);
inovanceH3UTcp.AddressStartWithZero = checkBox1.Checked;
inovanceH3UTcp.Series = (InovanceSeries)cmbCPU.SelectedIndex;
comboBox1_SelectedIndexChanged(null, new EventArgs()); // 设置解析方式
inovanceH3UTcp.IsStringReverse = checkBox3.Checked; //读取字符串是否倒序(汇川必须是反的)
inovanceH3UTcp.LogNet = LogNet;
var operateResult = inovanceH3UTcp.ConnectServer();
if (operateResult.IsSuccess)
{
this.richHistory.Text = this.richHistory.Text + "\r\n" + "连接成功";
}
else
{
this.richHistory.Text = this.richHistory.Text + "\r\n" + "连接失败";
return;
}
try
{
if (this.cmbNumType.Text == "字符串")
{
var operateResult1 = inovanceH3UTcp.Write(this.txtStartAddress.Text, this.richCurrent.Text.Trim());
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}成功";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}失败";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
else if (this.cmbNumType.Text == "16整数")
{
var operateResult1 = inovanceH3UTcp.Write(this.txtStartAddress.Text, UInt16.Parse(this.richCurrent.Text.Trim()));
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}成功";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}失败";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
else if (this.cmbNumType.Text == "32整数")
{
var operateResult1 = inovanceH3UTcp.Write(this.txtStartAddress.Text, UInt32.Parse(this.richCurrent.Text.Trim()));
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}成功";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}失败";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
else if (this.cmbNumType.Text == "FLOAT")
{
var operateResult1 = inovanceH3UTcp.Write(this.txtStartAddress.Text, float.Parse(this.richCurrent.Text.Trim()));
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}成功";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}失败";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
else
{
var operateResult1 = inovanceH3UTcp.Write(this.txtStartAddress.Text, bool.Parse(this.richCurrent.Text.Trim()));
if (operateResult1.IsSuccess)
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}成功";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
else
{
this.richCurrent.Text = $"写入{this.richCurrent.Text}到{this.txtStartAddress.Text}失败";
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
return;
}
}
}
catch (Exception ex)
{
this.richCurrent.Text = ex.Message;
this.richHistory.Text = this.richHistory.Text + "\r\n" + this.richCurrent.Text;
}
finally
{
inovanceH3UTcp.ConnectClose();
}
}
/// <summary>
/// 设置解析格式
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (inovanceH3UTcp != null)
{
switch (ComboBox1.SelectedIndex)
{
case 0: inovanceH3UTcp.DataFormat = HslCommunication.Core.DataFormat.ABCD; break;
case 1: inovanceH3UTcp.DataFormat = HslCommunication.Core.DataFormat.BADC; break;
case 2: inovanceH3UTcp.DataFormat = HslCommunication.Core.DataFormat.CDAB; break;//汇川的默认解析方式
case 3: inovanceH3UTcp.DataFormat = HslCommunication.Core.DataFormat.DCBA; break;
default: break;
}
}
}
private void btnClear_Click(object sender, EventArgs e)
{
this.richHistory.Text = "";
}
}
}
三、界面参考
王
四、完毕,谢谢。