using Ookii.Dialogs.Wpf; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media.Imaging; namespace MeterVision { public static class ThisApp { public static bool IsDebug = false; public static bool IsPermanentLicense = false; //是否为永久有效 // 静态属性:页面大小选项 public static readonly int[] PageSizeOptions = new int[] { 10, 20, 50 }; public const int MaxFileSize = 300 * 1024; public const int RequiredWidth = 320; public const int RequiredHeight = 240; public static bool IsJpgFile(string filePath) { // 检查文件扩展名是否为 .jpg 或 .jpeg string extension = System.IO.Path.GetExtension(filePath).ToLower(); return extension == ".jpg"; // || extension == ".jpeg"; } public static bool IsBmpFile(string filePath) { string extension = System.IO.Path.GetExtension(filePath).ToLower(); return extension == ".bmp"; // || extension == ".jpeg"; } public static bool IsFileSizeValid(string filePath) { // 获取文件大小 FileInfo fileInfo = new FileInfo(filePath); return fileInfo.Length <= MaxFileSize; } public static bool IsImageDimensionsValid(string filePath) { try { // 加载图像并检查尺寸 using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { BitmapImage bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.StreamSource = fs; bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.EndInit(); // 检查图像的宽度和高度 return bitmap.PixelWidth == RequiredWidth && bitmap.PixelHeight == RequiredHeight; } } catch (Exception ex) { Console.WriteLine(ex.Message); // MessageBox.Show($"无法读取图像尺寸: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return false; } } public static string GetNowTime_yyyyMMddHHmmss() { DateTime now = DateTime.Now; return now.ToString("yyyyMMddHHmmss"); } public static string GetNowTime_yyyyMMdd() { DateTime now = DateTime.Now; return now.ToString("yyyyMMdd"); } public static string ConvertDateFormat(string originalDateTime) { // 定义原始格式 string originalFormat = "yyyyMMddHHmmss"; // 尝试将原始字符串解析为DateTime对象 if (DateTime.TryParseExact(originalDateTime, originalFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime parsedDate)) { // 成功解析后,将其格式化为目标格式 return parsedDate.ToString("yyyy-MM-dd HH:mm:ss"); } else { // 如果解析失败,可以返回一个默认值或者抛出异常 //throw new ArgumentException("无法解析提供的日期时间字符串。", nameof(originalDateTime)); //return string.Empty; return originalDateTime; } } public static string ConvertDateFormat_Date(string originalDateTime) { // 定义原始格式 string originalFormat = "yyyyMMddHHmmss"; // 尝试将原始字符串解析为DateTime对象 if (DateTime.TryParseExact(originalDateTime, originalFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime parsedDate)) { // 成功解析后,将其格式化为目标格式 return parsedDate.ToString("yyyy-MM-dd"); } else { // 如果解析失败,可以返回一个默认值或者抛出异常 //throw new ArgumentException("无法解析提供的日期时间字符串。", nameof(originalDateTime)); return string.Empty; } } public static string ConvertDateFormat_Time(string originalDateTime) { // 定义原始格式 string originalFormat = "yyyyMMddHHmmss"; // 尝试将原始字符串解析为DateTime对象 if (DateTime.TryParseExact(originalDateTime, originalFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime parsedDate)) { // 成功解析后,将其格式化为目标格式 return parsedDate.ToString("HH:mm:ss"); } else { // 如果解析失败,可以返回一个默认值或者抛出异常 //throw new ArgumentException("无法解析提供的日期时间字符串。", nameof(originalDateTime)); return string.Empty; } } public static string ConvertDateFormat_Date2(string originalDateTime) { // 定义原始格式 string originalFormat = "yyyy-MM-dd HH:mm:ss"; // 尝试将原始字符串解析为DateTime对象 if (DateTime.TryParseExact(originalDateTime, originalFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime parsedDate)) { // 成功解析后,将其格式化为目标格式 return parsedDate.ToString("yyyy-MM-dd"); } else { // 如果解析失败,可以返回一个默认值或者抛出异常 //throw new ArgumentException("无法解析提供的日期时间字符串。", nameof(originalDateTime)); return string.Empty; } } public static string ConvertDateFormat_Time2(string originalDateTime) { // 定义原始格式 string originalFormat = "yyyy-MM-dd HH:mm:ss"; // 尝试将原始字符串解析为DateTime对象 if (DateTime.TryParseExact(originalDateTime, originalFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime parsedDate)) { // 成功解析后,将其格式化为目标格式 return parsedDate.ToString("HH:mm:ss"); } else { // 如果解析失败,可以返回一个默认值或者抛出异常 //throw new ArgumentException("无法解析提供的日期时间字符串。", nameof(originalDateTime)); return string.Empty; } } public static string GetFileNameWithoutExtension(string filePath) { if (string.IsNullOrEmpty(filePath)) { //throw new ArgumentNullException(nameof(filePath), "文件路径不能为空"); return string.Empty; } return Path.GetFileNameWithoutExtension(filePath); } //删除文件 public static void DeleteFile(string filePath) { if (File.Exists(filePath)) { try { File.Delete(filePath); //MessageBox.Show("文件已成功删除!"); } catch (Exception ex) { Console.WriteLine(ex.Message); //MessageBox.Show($"删除文件时出错: {ex.Message}"); } } else { //MessageBox.Show("文件不存在!"); } } //导出AI日志文件 public static void ExportAiLog(string logPath) { try { if (string.IsNullOrEmpty(logPath) || !File.Exists(logPath)) { MessageBox.Show("无法确定原始文件路径或文件不存在。"); return; } // 2. 弹出保存对话框 VistaSaveFileDialog saveFileDialog = new VistaSaveFileDialog { FileName = Path.GetFileName(logPath), // 默认文件名 DefaultExt = Path.GetExtension(logPath), Filter = $"AiLog Files (*{Path.GetExtension(logPath)})|*{Path.GetExtension(logPath)}|All Files (*.*)|*.*" }; if (saveFileDialog.ShowDialog() == true) { // 3. 直接复制文件 File.Copy(logPath, saveFileDialog.FileName, true); // MessageBox.Show("图片导出成功。"); } } catch (Exception ex) { MessageBox.Show($"导出失败: {ex.Message}"); } } public static int ConvertToInt(string input) { if (int.TryParse(input, out int result)) { return result; // 如果转换成功,返回结果 } else { return 0; //throw new FormatException("The input string is not a valid integer."); } } //去除数组中的88,替换为"" public static string GetDebugInfos(byte[] infoBytes) { if(infoBytes == null || infoBytes.Length != 24) { return ""; } //List infoList = new List(); string[] infos = new string[24]; for (int i = 0; i < 24; i++) { if (i < 12 && infoBytes[i] == 88 && infoBytes[i + 12] == 88) { //infoList.Insert(i, ""); //infoList.Insert(i + 12, ""); infos[i] = ""; //infos[i + 12] = ""; continue; } else if (i > 12 && infoBytes[i] == 88 && infoBytes[i - 12] == 88) { infos[i] = ""; } else { infos[i] = infoBytes[i].ToString(); } if (infos[i].Length == 1) { infos[i] = "0" + infos[i]; } //infoList.Insert(i, infoBytes[i].ToString()); } return string.Join(",", infos); } ////////////////////////////////////////////////////// } }