using HslCommunication; using HslCommunication.Core; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace DoAn.PLC { /// /// DEMO程序的一些静态变量信息 /// public class DemoUtils { /// /// 项目中最后调用读取的都在这里,统一的读取结果的数据解析,显示 /// /// 类型对象 /// 读取的结果值 /// 地址信息 /// 输入的控件 public static void ReadResultRender( OperateResult result, string address, out string results ) { if (result.IsSuccess) { if (result.Content is Array) { results=HslCommunication.BasicFramework.SoftBasic.ArrayFormat(result.Content); } else { results= result.Content.ToString(); } } else { results=""; } } /// /// 统一的数据写入的结果显示 /// /// 写入的结果信息 /// 地址信息 public static bool WriteResultRender( OperateResult result, string address) { if (result.IsSuccess) { return true; } else { return false; } } /// /// 统一的数据写入的结果显示 /// /// 写入的结果信息 /// 地址信息 public static void WriteResultRender( OperateResult result ) { if (result.IsSuccess) { MessageBox.Show( DateTime.Now.ToString( "[HH:mm:ss] " ) + $"Success" ); } else { MessageBox.Show( DateTime.Now.ToString( "[HH:mm:ss] " ) + $"Failed {Environment.NewLine} Reason:{result.ToMessageShowString( )}" ); } } /// /// 统一的数据写入的结果显示 /// /// 写入的结果信息 /// 地址信息 public static void WriteResultRender( Func write, string address ) { try { OperateResult result = write( ); if (result.IsSuccess) { MessageBox.Show( DateTime.Now.ToString( "[HH:mm:ss] " ) + $"[{address}] Write Success" ); } else { MessageBox.Show( DateTime.Now.ToString( "[HH:mm:ss] " ) + $"[{address}] Write Failed {Environment.NewLine} Reason:{result.ToMessageShowString( )}" ); } } catch(Exception ex) { // 主要是为了捕获写入的值不正确的情况 MessageBox.Show( "Data for writting is not corrent: " + ex.Message ); } } public static void BulkReadRenderResult( HslCommunication.Core.IReadWriteNet readWrite, TextBox addTextBox, TextBox lengthTextBox, TextBox resultTextBox ) { try { OperateResult read = readWrite.Read( addTextBox.Text, ushort.Parse( lengthTextBox.Text ) ); if (read.IsSuccess) { resultTextBox.Text = "Result:" + HslCommunication.BasicFramework.SoftBasic.ByteToHexString( read.Content ); } else { MessageBox.Show( "Read Failed:" + read.ToMessageShowString( ) ); } } catch (Exception ex) { MessageBox.Show( "Read Failed:" + ex.Message ); } } /// /// 将消息文本添加到文本显示控件上去 /// /// 显示的控件 /// 关键字信息 /// 消息文本 /// 对齐长度 public static void AppendTextBox( TextBox textBox, string key, string message, int maxKeyLength = -1 ) { StringBuilder sb = new StringBuilder( ); sb.Append( "[" + DateTime.Now.ToString( "yyyy-MM-dd HH:mm:ss.fff" ) + "] " ); if (!string.IsNullOrEmpty( key )) { sb.Append( "[" + key + "] " ); } sb.Append( message ); sb.Append( Environment.NewLine ); textBox.AppendText( sb.ToString( ) ); } public static OperateResult ParseInt( string text ) { try { if (text.StartsWith( "0x" ) || text.StartsWith( "0X" )) { return OperateResult.CreateSuccessResult( Convert.ToInt32( text.Substring( 2 ), 16 ) ); } else return OperateResult.CreateSuccessResult( Convert.ToInt32( text ) ); } catch( Exception ex) { return new OperateResult( "Convert Int Failed: " + ex.Message ); } } public static readonly string IpAddressInputWrong = "IpAddress input wrong"; public static readonly string PortInputWrong = "Port input wrong"; public static readonly string SlotInputWrong = "Slot input wrong"; public static readonly string BaudRateInputWrong = "Baud rate input wrong"; public static readonly string DataBitsInputWrong = "Data bit input wrong"; public static readonly string StopBitInputWrong = "Stop bit input wrong"; } }