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) { Log("--- Run as OPCUA mode ---"); } else if (chkSdk.Checked) { Log("--- Run as SDK mode ---"); } } 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(); } } }