using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Repository;
using System;
using System.Data;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using UAS_DeviceMonitor.DataOperate;
namespace UAS_DeviceMonitor.PublicMethod
{
class BaseUtil
{
[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]
public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);
public static void FillComBoxEditWidthDataTable(RepositoryItemComboBox combo, string TextField, string ValueField, DataTable dt)
{
combo.Items.Clear();
for (int i = 0; i < dt.Rows.Count; i++)
{
ComboBoxData item = new ComboBoxData();
item.Value = dt.Rows[i][ValueField].ToString();
item.Text = dt.Rows[i][TextField].ToString();
combo.Items.Add(item);
}
}
public static void FillComBoxEditWidthDataTable(ComboBoxEdit combo, string TextField, string ValueField, DataTable dt)
{
combo.Properties.Items.Clear();
for (int i = 0; i < dt.Rows.Count; i++)
{
ComboBoxData item = new ComboBoxData();
item.Value = dt.Rows[i][ValueField].ToString();
item.Text = dt.Rows[i][TextField].ToString();
combo.Properties.Items.Add(item);
}
combo.SelectedIndex = 0;
}
public static DataTable ToDataTable(DataRow[] rows)
{
if (rows == null || rows.Length == 0) return new DataTable();
DataTable tmp = rows[0].Table.Clone(); // 复制DataRow的表结构
foreach (DataRow row in rows)
tmp.Rows.Add(row.ItemArray); // 将DataRow添加到DataTable中
return tmp;
}
public static string GetComboxEditValue(ComboBoxEdit ComBox)
{
if (ComBox.SelectedItem == null)
return ComBox.Text;
else
return (ComBox.SelectedItem as ComboBoxData).Value;
}
///
/// 获取LRC
///
///
public static string getLRC(string SENDMESSAGE)
{
string message = SENDMESSAGE.Trim();
if (message.Length % 2 != 0)
{
message = message + "0";
}
int LRC = 0x0;
for (int i = 0; i < message.Length; i = i + 2)
{
int inside = int.Parse(message.Substring(i, 1).ToString() + message.Substring(i + 1, 1).ToString(), System.Globalization.NumberStyles.HexNumber);
LRC += inside;
}
string _LRC = string.Format("{0:X2}", LRC);
string LRCre = "";
for (int i = 0; i < _LRC.Length; i++)
{
int index;
index = 0xF - int.Parse(_LRC.Substring(i, 1).ToString(), System.Globalization.NumberStyles.HexNumber);
LRCre += string.Format("{0:X}", index);
}
LRCre = string.Format("{0:X}", int.Parse(LRCre, System.Globalization.NumberStyles.HexNumber) + 1);
return LRCre;
}
public static string ByteToHexadecimalString(byte[] b, int length)
{
string returnStr = "";
if (b != null)
{
for (int i = 0; i < length; i++)
{
returnStr += Convert.ToString(b[i], 16);//ToString("X2") 为C#中的字符串格式控制符
}
}
return returnStr;
}
public static void CleanMemory()
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}
}
}