You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
3.0 KiB
160 lines
3.0 KiB
using MasterClient.Client;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace MasterClient
|
|
{
|
|
public partial class MainForm : Form
|
|
{
|
|
private bool isFirstLog = true;
|
|
private ICommClient client;
|
|
|
|
public MainForm()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void ChangeStatus(bool status)
|
|
{
|
|
btnConnect.Enabled = !status;
|
|
tbIP.Enabled = !status;
|
|
nudPort.Enabled = !status;
|
|
nudIdentifier.Enabled = !status;
|
|
|
|
btnDisconnect.Enabled = status;
|
|
tbStatus.Text = status ? "Connected" : "Disconnected";
|
|
tbStatus.BackColor = status ? Color.Lime : Color.Silver;
|
|
|
|
gbMode.Enabled = !status;
|
|
|
|
Log(status ? "--- Connected ---" : "--- Disconnected ---");
|
|
}
|
|
|
|
private void Log(string text)
|
|
{
|
|
rtbLog.AppendText((isFirstLog ? "" : Environment.NewLine) + text);
|
|
isFirstLog = false;
|
|
|
|
ScrollToEnd();
|
|
}
|
|
|
|
private void ScrollToEnd()
|
|
{
|
|
if (!chkAutoScroll.Checked)
|
|
return;
|
|
|
|
rtbLog.SelectionStart = rtbLog.Text.Length;
|
|
rtbLog.ScrollToCaret();
|
|
}
|
|
|
|
private void ClearLog()
|
|
{
|
|
rtbLog.Clear();
|
|
isFirstLog = true;
|
|
ScrollToEnd();
|
|
}
|
|
|
|
private void btnConnect_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
InitServer();
|
|
|
|
client.SetServer(tbIP.Text, (int)nudPort.Value);
|
|
client.Connect();
|
|
|
|
ChangeStatus(true);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log($"[ERROR] {ex.Message}");
|
|
}
|
|
}
|
|
|
|
private void InitServer()
|
|
{
|
|
if (client != null && client.GetStatus())
|
|
{
|
|
Log("--- Disconnect previous connection ---");
|
|
btnDisconnect_Click(null, null);
|
|
}
|
|
|
|
if (chkModbus.Checked)
|
|
{
|
|
client = new Client.ModbusMaster((byte)nudIdentifier.Value);
|
|
Log("--- Run as Modbus mode ---");
|
|
}
|
|
else if (chkOPCUA.Checked)
|
|
{
|
|
client = new Client.OpcUaMaster();
|
|
nudPort.Value = 37800;
|
|
tbReadName.Text = "ns=12380;s=TAG1";
|
|
tbWriteName.Text = "ns=12380;s=TAG1";
|
|
|
|
Log("--- Run as OPCUA mode ---");
|
|
}
|
|
else if (chkSdk.Checked)
|
|
{
|
|
Log("--- On Develop ---");
|
|
}
|
|
}
|
|
|
|
private void btnDisconnect_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
client.Disconnect();
|
|
|
|
ChangeStatus(false);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log($"[ERROR] {ex.Message}");
|
|
}
|
|
}
|
|
|
|
private void btnRead_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (!client.GetStatus())
|
|
throw new Exception("Disconneced");
|
|
|
|
string value = client.ReadValue(tbReadName.Text);
|
|
Log($"[READ] {tbReadName.Text}:{value}");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log($"[ERROR] {ex.Message}");
|
|
}
|
|
}
|
|
|
|
private void btnWrite_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (!client.GetStatus())
|
|
throw new Exception("Disconneced");
|
|
|
|
client.WriteValue(tbWriteName.Text, tbWriteValue.Text);
|
|
Log($"[WRITE] {tbWriteName.Text}:{tbWriteValue.Text}");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log($"[ERROR] {ex.Message}");
|
|
}
|
|
}
|
|
|
|
private void btnClear_Click(object sender, EventArgs e)
|
|
{
|
|
ClearLog();
|
|
}
|
|
}
|
|
}
|
|
|