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";
}
}