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

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();
}
}
}