commit 757953bb4148bef536202fcc4611b709cf43b50f Author: xxq Date: Mon Mar 31 14:25:21 2025 +0800 YD10&YD07k初始版 diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..070b79f --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,7 @@ +{ + "ExpandedNodes": [ + "" + ], + "SelectedNode": "\\C:\\Users\\Administrator\\Source\\Repos\\YD10-YD07k_SMT", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/YD10-YD07k_SMT/v16/.suo b/.vs/YD10-YD07k_SMT/v16/.suo new file mode 100644 index 0000000..ead2fa9 Binary files /dev/null and b/.vs/YD10-YD07k_SMT/v16/.suo differ diff --git a/.vs/YD10测试机/FileContentIndex/42095230-6ed6-419b-b152-0dda2998fe3b.vsidx b/.vs/YD10测试机/FileContentIndex/42095230-6ed6-419b-b152-0dda2998fe3b.vsidx new file mode 100644 index 0000000..bbce259 Binary files /dev/null and b/.vs/YD10测试机/FileContentIndex/42095230-6ed6-419b-b152-0dda2998fe3b.vsidx differ diff --git a/.vs/YD10测试机/v16/.suo b/.vs/YD10测试机/v16/.suo new file mode 100644 index 0000000..f8f168c Binary files /dev/null and b/.vs/YD10测试机/v16/.suo differ diff --git a/.vs/YD10测试机/v17/.suo b/.vs/YD10测试机/v17/.suo new file mode 100644 index 0000000..1f50d06 Binary files /dev/null and b/.vs/YD10测试机/v17/.suo differ diff --git a/.vs/YD10测试机/v17/DocumentLayout.json b/.vs/YD10测试机/v17/DocumentLayout.json new file mode 100644 index 0000000..d1319b9 --- /dev/null +++ b/.vs/YD10测试机/v17/DocumentLayout.json @@ -0,0 +1,91 @@ +{ + "Version": 1, + "WorkspaceRootPath": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{32F563DD-18CA-4F54-B8E0-6F2B472371D7}|YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A.csproj|c:\\users\\administrator\\documents\\yd10\u6D4B\u8BD5\u673A\\yd10\u6D4B\u8BD5\u673A\\form3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{32F563DD-18CA-4F54-B8E0-6F2B472371D7}|YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A.csproj|solutionrelative:yd10\u6D4B\u8BD5\u673A\\form3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{32F563DD-18CA-4F54-B8E0-6F2B472371D7}|YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A.csproj|c:\\users\\administrator\\documents\\yd10\u6D4B\u8BD5\u673A\\yd10\u6D4B\u8BD5\u673A\\form2.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{32F563DD-18CA-4F54-B8E0-6F2B472371D7}|YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A.csproj|solutionrelative:yd10\u6D4B\u8BD5\u673A\\form2.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{32F563DD-18CA-4F54-B8E0-6F2B472371D7}|YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A.csproj|c:\\users\\administrator\\documents\\yd10\u6D4B\u8BD5\u673A\\yd10\u6D4B\u8BD5\u673A\\form2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{32F563DD-18CA-4F54-B8E0-6F2B472371D7}|YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A.csproj|solutionrelative:yd10\u6D4B\u8BD5\u673A\\form2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{32F563DD-18CA-4F54-B8E0-6F2B472371D7}|YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A.csproj|c:\\users\\administrator\\documents\\yd10\u6D4B\u8BD5\u673A\\yd10\u6D4B\u8BD5\u673A\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{32F563DD-18CA-4F54-B8E0-6F2B472371D7}|YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A.csproj|solutionrelative:yd10\u6D4B\u8BD5\u673A\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 0, + "Children": [ + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Form3.cs", + "DocumentMoniker": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A\\Form3.cs", + "RelativeDocumentMoniker": "YD10\u6D4B\u8BD5\u673A\\Form3.cs", + "ToolTip": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A\\Form3.cs", + "RelativeToolTip": "YD10\u6D4B\u8BD5\u673A\\Form3.cs", + "ViewState": "AgIAABYLAAAAAAAAAAAYwCoLAAAaAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-03-26T03:21:04.015Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Form2.Designer.cs", + "DocumentMoniker": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A\\Form2.Designer.cs", + "RelativeDocumentMoniker": "YD10\u6D4B\u8BD5\u673A\\Form2.Designer.cs", + "ToolTip": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A\\Form2.Designer.cs", + "RelativeToolTip": "YD10\u6D4B\u8BD5\u673A\\Form2.Designer.cs", + "ViewState": "AgIAAFwAAAAAAAAAAAAcwHwAAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-03-26T03:21:00.157Z", + "EditorCaption": "" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{e5c86464-96be-4d7c-9a8b-abcb3bbf5f92}" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "Form2.cs", + "DocumentMoniker": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A\\Form2.cs", + "RelativeDocumentMoniker": "YD10\u6D4B\u8BD5\u673A\\Form2.cs", + "ToolTip": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A\\Form2.cs", + "RelativeToolTip": "YD10\u6D4B\u8BD5\u673A\\Form2.cs", + "ViewState": "AgIAAFgBAAAAAAAAAAAYwGwBAAAPAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-03-26T03:20:36.703Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "Form1.cs [\u8BBE\u8BA1]", + "DocumentMoniker": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A\\Form1.cs", + "RelativeDocumentMoniker": "YD10\u6D4B\u8BD5\u673A\\Form1.cs", + "ToolTip": "C:\\Users\\Administrator\\Documents\\YD10\u6D4B\u8BD5\u673A\\YD10\u6D4B\u8BD5\u673A\\Form1.cs [\u8BBE\u8BA1]", + "RelativeToolTip": "YD10\u6D4B\u8BD5\u673A\\Form1.cs [\u8BBE\u8BA1]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-03-26T03:18:46.59Z", + "EditorCaption": " [\u8BBE\u8BA1]" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/YD10测试机/v17/ResourceExplorer/settings.json b/.vs/YD10测试机/v17/ResourceExplorer/settings.json new file mode 100644 index 0000000..363c6d5 --- /dev/null +++ b/.vs/YD10测试机/v17/ResourceExplorer/settings.json @@ -0,0 +1 @@ +{"CustomColumnOrderings":{"name":0,"file-path":1,"file-name":2,"neutral-value":3,"neutral-comment":4,"type":5},"ShowValidationErrors":true,"SelectedResourceGroups":[],"VisibleColumnKeys":["name","neutral-value"]} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000..bd0bcd1 Binary files /dev/null and b/.vs/slnx.sqlite differ diff --git a/MigrationBackup/c3eebd3e/YD10测试机/NuGetUpgradeLog.html b/MigrationBackup/c3eebd3e/YD10测试机/NuGetUpgradeLog.html new file mode 100644 index 0000000..0e9cde8 --- /dev/null +++ b/MigrationBackup/c3eebd3e/YD10测试机/NuGetUpgradeLog.html @@ -0,0 +1,163 @@ + + + + + NuGetMigrationLog +

+ NuGet Migration Report - YD10测试机

Overview

Migration to PackageReference was completed successfully. Please build and run your solution to verify that all packages are available.
+ If you run into any problems, have feedback, questions, or concerns, please + file an issue on the NuGet GitHub repository.
+ Changed files and this report have been backed up here: + C:\Users\Administrator\Documents\YD10测试机\MigrationBackup\c3eebd3e\YD10测试机

Packages processed

Top-level dependencies:

Package IdVersion
Microsoft.Windows.SDK.Contracts + v10.0.26100.1742

Transitive dependencies:

Package IdVersion
System.Runtime.InteropServices.WindowsRuntime + v4.3.0
System.Runtime.WindowsRuntime + v4.6.0
System.Runtime.WindowsRuntime.UI.Xaml + v4.6.0

Package compatibility issues

Description
+ No issues were found. +
\ No newline at end of file diff --git a/MigrationBackup/c3eebd3e/YD10测试机/YD10测试机.csproj b/MigrationBackup/c3eebd3e/YD10测试机/YD10测试机.csproj new file mode 100644 index 0000000..60272a6 --- /dev/null +++ b/MigrationBackup/c3eebd3e/YD10测试机/YD10测试机.csproj @@ -0,0 +1,136 @@ + + + + + + Debug + AnyCPU + {32F563DD-18CA-4F54-B8E0-6F2B472371D7} + WinExe + YD10测试机 + YD10测试机 + v4.8 + 512 + true + + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + ao05f-g71fo-001.ico + + + + False + bin\Debug\Newtonsoft.Json.dll + + + + + + + + + + + + + False + bin\Debug\ThoughtWorks.QRCode.dll + + + False + bin\Debug\Windows.winmd + + + False + bin\Debug\zxing.dll + + + + + + Form + + + Form1.cs + + + Form + + + Form2.cs + + + + + + Form1.cs + + + Form2.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + + + + + \ No newline at end of file diff --git a/MigrationBackup/c3eebd3e/YD10测试机/packages.config b/MigrationBackup/c3eebd3e/YD10测试机/packages.config new file mode 100644 index 0000000..26fc76a --- /dev/null +++ b/MigrationBackup/c3eebd3e/YD10测试机/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/YD10测试机.sln b/YD10测试机.sln new file mode 100644 index 0000000..0cd0dc9 --- /dev/null +++ b/YD10测试机.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.35229.62 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YD10测试机", "YD10测试机\YD10测试机.csproj", "{32F563DD-18CA-4F54-B8E0-6F2B472371D7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {32F563DD-18CA-4F54-B8E0-6F2B472371D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32F563DD-18CA-4F54-B8E0-6F2B472371D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32F563DD-18CA-4F54-B8E0-6F2B472371D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32F563DD-18CA-4F54-B8E0-6F2B472371D7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {634A1378-C1DF-4F06-9F3C-40D181B75167} + EndGlobalSection +EndGlobal diff --git a/YD10测试机/BarCodeClass.cs b/YD10测试机/BarCodeClass.cs new file mode 100644 index 0000000..df4ddcb --- /dev/null +++ b/YD10测试机/BarCodeClass.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Text.RegularExpressions; +using ZXing.Common; +using ZXing; +using ZXing.QrCode; + +namespace ZXingDemo +{ + class BarCodeClass + { + /// + /// 条形码宽度 + /// + public int BarCodeWidth { get; set; } + /// + /// 条形码高度 + /// + public int BarCodeHeight { get; set; } + /// + /// 二维码宽度 + /// + public int QuickMarkWidth { get; set; } + /// + /// 二维码高度 + /// + public int QuickMarkHeight { get; set; } + + + /// + ///生成条形码 + /// + /// + /// + public void CreateBarCode(PictureBox pictureBox1, string Contents) + { + //Regex rg = new Regex("^[0-9]{20}$"); + //if (!rg.IsMatch(Contents)) + //{ + // MessageBox.Show("本例子采用QR_CODE编码,需要输入12位数字"); + // return; + //} + + EncodingOptions options = null; + BarcodeWriter writer = null; + if (BarCodeWidth == 0 || BarCodeHeight == 0) + { + BarCodeWidth = pictureBox1.Width; + BarCodeHeight = pictureBox1.Height; + } + options = new EncodingOptions + { + Width = BarCodeWidth, + Height = BarCodeHeight + }; + writer = new BarcodeWriter(); + writer.Format = BarcodeFormat.CODE_128; + writer.Options = options; + + Bitmap bitmap = writer.Write(Contents); + pictureBox1.Image = bitmap; + } + + /// + ///生成二维码 + /// + /// + /// + public Image CreateQuickMark(string Contents) + { + + EncodingOptions options = null; + BarcodeWriter writer = null; + //if (QuickMarkWidth == 0 || QuickMarkHeight == 0) + //{ + // QuickMarkWidth = pictureBox1.Width; + // QuickMarkHeight = pictureBox1.Height; + //} + options = new QrCodeEncodingOptions + { + DisableECI = true, + CharacterSet = "UTF-8", + Width = QuickMarkWidth, + Height = QuickMarkHeight + }; + writer = new BarcodeWriter(); + writer.Format = BarcodeFormat.QR_CODE; + writer.Options = options; + + + Bitmap bitmap = writer.Write(Contents); + return bitmap; + } + } +} diff --git a/YD10测试机/BleCore.cs b/YD10测试机/BleCore.cs new file mode 100644 index 0000000..05f3bde --- /dev/null +++ b/YD10测试机/BleCore.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Windows.Devices.Bluetooth; +using Windows.Devices.Bluetooth.GenericAttributeProfile; +using Windows.Devices.Enumeration; +using Windows.Security.Cryptography; +using System.Diagnostics; + +namespace BluetoothLibrary +{ + public enum BlueStatus + { + DisConnected, // 未连接 + Connecting, // 正在连接 + Connected // 已连接 + }; + + public enum MsgType + { + NotifyTxt, + BleDevice, + BleSendData, + BleRecData, + } + + public class BleCore + { + private BluetoothLEDevice _currentDevice; + private GattDeviceService _currentService; + private GattCharacteristic _writeCharacteristic; + private GattCharacteristic _notifyCharacteristic; + private List _discoveredDevices = new List(); + + public event Action MessageChanged; + + public async Task StartDeviceDiscoveryAsync() + { + try + { + string selector = BluetoothLEDevice.GetDeviceSelectorFromPairingState(false); + var devices = await DeviceInformation.FindAllAsync(selector); + + foreach (var deviceInfo in devices) + { + var device = await BluetoothLEDevice.FromIdAsync(deviceInfo.Id); + if (device != null && !_discoveredDevices.Any(d => d.DeviceId == device.DeviceId)) + { + _discoveredDevices.Add(device); + OnMessageChanged(MsgType.BleDevice, $"Discovered device: {device.Name}", null); + } + } + } + catch (Exception ex) + { + OnMessageChanged(MsgType.NotifyTxt, $"Error during device discovery: {ex.Message}", null); + } + } + + public async Task ConnectToDeviceAsync(string deviceId) + { + try + { + _currentDevice = await BluetoothLEDevice.FromIdAsync(deviceId); + if (_currentDevice != null) + { + _currentDevice.ConnectionStatusChanged += OnConnectionStatusChanged; + OnMessageChanged(MsgType.NotifyTxt, $"Connecting to device: {_currentDevice.Name}", null); + await DiscoverServicesAsync(); + } + else + { + OnMessageChanged(MsgType.NotifyTxt, "Device not found", null); + } + } + catch (Exception ex) + { + OnMessageChanged(MsgType.NotifyTxt, $"Error connecting to device: {ex.Message}", null); + } + } + + private async Task DiscoverServicesAsync() + { + try + { + var services = await _currentDevice.GetGattServicesAsync(); + foreach (var service in services.Services) + { + if (service.Uuid.ToString() == "your-service-uuid-here") // Replace with your service UUID + { + _currentService = service; + await DiscoverCharacteristicsAsync(); + break; + } + } + } + catch (Exception ex) + { + OnMessageChanged(MsgType.NotifyTxt, $"Error discovering services: {ex.Message}", null); + } + } + + private async Task DiscoverCharacteristicsAsync() + { + try + { + var characteristics = await _currentService.GetCharacteristicsAsync(); + foreach (var characteristic in characteristics.Characteristics) + { + if (characteristic.Uuid.ToString() == "your-write-uuid-here") // Replace with your write UUID + { + _writeCharacteristic = characteristic; + } + else if (characteristic.Uuid.ToString() == "your-notify-uuid-here") // Replace with your notify UUID + { + _notifyCharacteristic = characteristic; + await EnableNotificationsAsync(characteristic); + } + } + } + catch (Exception ex) + { + OnMessageChanged(MsgType.NotifyTxt, $"Error discovering characteristics: {ex.Message}", null); + } + } + + private async Task EnableNotificationsAsync(GattCharacteristic characteristic) + { + try + { + await characteristic.WriteClientCharacteristicConfigurationDescriptorAsync( + GattClientCharacteristicConfigurationDescriptorValue.Notify); + characteristic.ValueChanged += OnCharacteristicValueChanged; + OnMessageChanged(MsgType.NotifyTxt, "Notifications enabled", null); + } + catch (Exception ex) + { + OnMessageChanged(MsgType.NotifyTxt, $"Error enabling notifications: {ex.Message}", null); + } + } + + private void OnCharacteristicValueChanged(GattCharacteristic sender, GattValueChangedEventArgs args) + { + byte[] data; + CryptographicBuffer.CopyToByteArray(args.CharacteristicValue, out data); + OnMessageChanged(MsgType.BleRecData, "Data received", data); + } + + public async Task WriteDataAsync(byte[] data) + { + try + { + if (_writeCharacteristic != null) + { + await _writeCharacteristic.WriteValueAsync(CryptographicBuffer.CreateFromByteArray(data)); + OnMessageChanged(MsgType.BleSendData, "Data sent", data); + } + else + { + OnMessageChanged(MsgType.NotifyTxt, "Write characteristic not found", null); + } + } + catch (Exception ex) + { + OnMessageChanged(MsgType.NotifyTxt, $"Error writing data: {ex.Message}", null); + } + } + + private void OnConnectionStatusChanged(BluetoothLEDevice sender, object args) + { + if (sender.ConnectionStatus == BluetoothConnectionStatus.Disconnected) + { + OnMessageChanged(MsgType.NotifyTxt, "Device disconnected", null); + } + else + { + OnMessageChanged(MsgType.NotifyTxt, "Device connected", null); + } + } + + private void OnMessageChanged(MsgType type, string message, byte[] data) + { + MessageChanged?.Invoke(type, message, data); + } + + public void Dispose() + { + // 不需要调用 Dispose 方法 + _currentDevice?.Dispose(); // 如果 BluetoothLEDevice 实现了 IDisposable,则可以调用 Dispose + _currentService = null; + _writeCharacteristic = null; + _notifyCharacteristic = null; + _discoveredDevices.Clear(); + } + } +} \ No newline at end of file diff --git a/YD10测试机/Form1.Designer.cs b/YD10测试机/Form1.Designer.cs new file mode 100644 index 0000000..4f7abb3 --- /dev/null +++ b/YD10测试机/Form1.Designer.cs @@ -0,0 +1,622 @@ + +namespace YD10测试机 +{ + partial class Form1 + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.txtStatus = new System.Windows.Forms.Label(); + this.btnOpen_usb = new System.Windows.Forms.Button(); + this.cmbPort = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn6 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn7 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn8 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridView2 = new System.Windows.Forms.DataGridView(); + this.dataGridViewTextBoxColumn9 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn11 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.comboBox2 = new System.Windows.Forms.ComboBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.printDocument1 = new System.Drawing.Printing.PrintDocument(); + this.label2 = new System.Windows.Forms.Label(); + this.timer2 = new System.Windows.Forms.Timer(this.components); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.参考信息设置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.打印较准页ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.手动打印ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.车型设置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.yD10ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.yD07KToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.label7 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // txtStatus + // + this.txtStatus.AutoSize = true; + this.txtStatus.Location = new System.Drawing.Point(60, 83); + this.txtStatus.Name = "txtStatus"; + this.txtStatus.Size = new System.Drawing.Size(0, 12); + this.txtStatus.TabIndex = 12; + // + // btnOpen_usb + // + this.btnOpen_usb.Location = new System.Drawing.Point(148, 48); + this.btnOpen_usb.Name = "btnOpen_usb"; + this.btnOpen_usb.Size = new System.Drawing.Size(64, 21); + this.btnOpen_usb.TabIndex = 11; + this.btnOpen_usb.Text = "打开"; + this.btnOpen_usb.UseVisualStyleBackColor = true; + this.btnOpen_usb.Click += new System.EventHandler(this.btnOpen_usb_Click); + // + // cmbPort + // + this.cmbPort.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.cmbPort.FormattingEnabled = true; + this.cmbPort.Location = new System.Drawing.Point(60, 46); + this.cmbPort.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.cmbPort.Name = "cmbPort"; + this.cmbPort.Size = new System.Drawing.Size(83, 24); + this.cmbPort.TabIndex = 10; + this.cmbPort.DropDown += new System.EventHandler(this.cmbPort_DropDown); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 10.18868F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(18, 53); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(42, 14); + this.label1.TabIndex = 9; + this.label1.Text = "端口:"; + // + // timer1 + // + this.timer1.Enabled = true; + this.timer1.Interval = 500; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToResizeRows = false; + this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight; + this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.Column2, + this.Column3}); + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle1; + this.dataGridView1.EnableHeadersVisualStyles = false; + this.dataGridView1.Location = new System.Drawing.Point(21, 152); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowHeadersVisible = false; + this.dataGridView1.RowHeadersWidth = 45; + this.dataGridView1.RowTemplate.Height = 19; + this.dataGridView1.Size = new System.Drawing.Size(316, 524); + this.dataGridView1.TabIndex = 13; + this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick); + // + // Column1 + // + this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column1.FillWeight = 50F; + this.Column1.HeaderText = "测试项"; + this.Column1.MinimumWidth = 2; + this.Column1.Name = "Column1"; + this.Column1.Resizable = System.Windows.Forms.DataGridViewTriState.True; + // + // Column2 + // + this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column2.FillWeight = 50F; + this.Column2.HeaderText = "数据"; + this.Column2.MinimumWidth = 2; + this.Column2.Name = "Column2"; + // + // Column3 + // + this.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column3.FillWeight = 20F; + this.Column3.HeaderText = "结果"; + this.Column3.MinimumWidth = 2; + this.Column3.Name = "Column3"; + // + // Column4 + // + this.Column4.HeaderText = "Column4"; + this.Column4.Name = "Column4"; + // + // dataGridViewTextBoxColumn1 + // + this.dataGridViewTextBoxColumn1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn1.FillWeight = 46.30047F; + this.dataGridViewTextBoxColumn1.HeaderText = "序号"; + this.dataGridViewTextBoxColumn1.MinimumWidth = 6; + this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; + // + // dataGridViewTextBoxColumn2 + // + this.dataGridViewTextBoxColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn2.FillWeight = 95.09346F; + this.dataGridViewTextBoxColumn2.HeaderText = "测试项"; + this.dataGridViewTextBoxColumn2.MinimumWidth = 6; + this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; + // + // dataGridViewTextBoxColumn3 + // + this.dataGridViewTextBoxColumn3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn3.FillWeight = 173.0446F; + this.dataGridViewTextBoxColumn3.HeaderText = "测试值"; + this.dataGridViewTextBoxColumn3.MinimumWidth = 6; + this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3"; + // + // dataGridViewTextBoxColumn4 + // + this.dataGridViewTextBoxColumn4.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn4.FillWeight = 85.5615F; + this.dataGridViewTextBoxColumn4.HeaderText = "结果"; + this.dataGridViewTextBoxColumn4.MinimumWidth = 6; + this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4"; + // + // dataGridViewTextBoxColumn5 + // + this.dataGridViewTextBoxColumn5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn5.FillWeight = 46.30047F; + this.dataGridViewTextBoxColumn5.HeaderText = "序号"; + this.dataGridViewTextBoxColumn5.MinimumWidth = 6; + this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5"; + // + // dataGridViewTextBoxColumn6 + // + this.dataGridViewTextBoxColumn6.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn6.FillWeight = 95.09346F; + this.dataGridViewTextBoxColumn6.HeaderText = "测试项"; + this.dataGridViewTextBoxColumn6.MinimumWidth = 6; + this.dataGridViewTextBoxColumn6.Name = "dataGridViewTextBoxColumn6"; + // + // dataGridViewTextBoxColumn7 + // + this.dataGridViewTextBoxColumn7.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn7.FillWeight = 173.0446F; + this.dataGridViewTextBoxColumn7.HeaderText = "测试值"; + this.dataGridViewTextBoxColumn7.MinimumWidth = 6; + this.dataGridViewTextBoxColumn7.Name = "dataGridViewTextBoxColumn7"; + // + // dataGridViewTextBoxColumn8 + // + this.dataGridViewTextBoxColumn8.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn8.FillWeight = 85.5615F; + this.dataGridViewTextBoxColumn8.HeaderText = "结果"; + this.dataGridViewTextBoxColumn8.MinimumWidth = 6; + this.dataGridViewTextBoxColumn8.Name = "dataGridViewTextBoxColumn8"; + // + // dataGridView2 + // + this.dataGridView2.AllowUserToAddRows = false; + this.dataGridView2.AllowUserToResizeRows = false; + this.dataGridView2.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight; + this.dataGridView2.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridView2.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTextBoxColumn9, + this.dataGridViewTextBoxColumn10, + this.dataGridViewTextBoxColumn11}); + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView2.DefaultCellStyle = dataGridViewCellStyle2; + this.dataGridView2.EnableHeadersVisualStyles = false; + this.dataGridView2.Location = new System.Drawing.Point(372, 153); + this.dataGridView2.Name = "dataGridView2"; + this.dataGridView2.RowHeadersVisible = false; + this.dataGridView2.RowHeadersWidth = 45; + this.dataGridView2.RowTemplate.Height = 21; + this.dataGridView2.Size = new System.Drawing.Size(375, 397); + this.dataGridView2.TabIndex = 14; + this.dataGridView2.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView2_CellValueChanged); + // + // dataGridViewTextBoxColumn9 + // + this.dataGridViewTextBoxColumn9.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn9.FillWeight = 50F; + this.dataGridViewTextBoxColumn9.HeaderText = "测试项"; + this.dataGridViewTextBoxColumn9.MinimumWidth = 2; + this.dataGridViewTextBoxColumn9.Name = "dataGridViewTextBoxColumn9"; + this.dataGridViewTextBoxColumn9.Resizable = System.Windows.Forms.DataGridViewTriState.True; + // + // dataGridViewTextBoxColumn10 + // + this.dataGridViewTextBoxColumn10.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn10.FillWeight = 50F; + this.dataGridViewTextBoxColumn10.HeaderText = "数据"; + this.dataGridViewTextBoxColumn10.MinimumWidth = 2; + this.dataGridViewTextBoxColumn10.Name = "dataGridViewTextBoxColumn10"; + // + // dataGridViewTextBoxColumn11 + // + this.dataGridViewTextBoxColumn11.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn11.FillWeight = 20F; + this.dataGridViewTextBoxColumn11.HeaderText = "结果"; + this.dataGridViewTextBoxColumn11.MinimumWidth = 2; + this.dataGridViewTextBoxColumn11.Name = "dataGridViewTextBoxColumn11"; + // + // comboBox2 + // + this.comboBox2.FormattingEnabled = true; + this.comboBox2.Items.AddRange(new object[] { + "1", + "2", + "3"}); + this.comboBox2.Location = new System.Drawing.Point(518, 127); + this.comboBox2.Name = "comboBox2"; + this.comboBox2.Size = new System.Drawing.Size(40, 20); + this.comboBox2.TabIndex = 53; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(484, 131); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(35, 12); + this.label8.TabIndex = 52; + this.label8.Text = "张数:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(325, 131); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(47, 12); + this.label4.TabIndex = 51; + this.label4.Text = "打印机:"; + // + // comboBox1 + // + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(378, 127); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(102, 20); + this.comboBox1.TabIndex = 50; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Checked = true; + this.checkBox2.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBox2.Location = new System.Drawing.Point(486, 111); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(72, 16); + this.checkBox2.TabIndex = 49; + this.checkBox2.Text = "自动打印"; + this.checkBox2.UseVisualStyleBackColor = true; + // + // printDocument1 + // + this.printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage); + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.DarkGray; + this.label2.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(372, 559); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(375, 117); + this.label2.TabIndex = 55; + this.label2.Text = "等待测试"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // timer2 + // + this.timer2.Enabled = true; + this.timer2.Interval = 50; + this.timer2.Tick += new System.EventHandler(this.timer2_Tick); + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.参考信息设置ToolStripMenuItem, + this.打印较准页ToolStripMenuItem, + this.手动打印ToolStripMenuItem, + this.车型设置ToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(759, 28); + this.menuStrip1.TabIndex = 57; + this.menuStrip1.Text = "menuStrip1"; + // + // 参考信息设置ToolStripMenuItem + // + this.参考信息设置ToolStripMenuItem.BackColor = System.Drawing.SystemColors.Control; + this.参考信息设置ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.参考信息设置ToolStripMenuItem.Name = "参考信息设置ToolStripMenuItem"; + this.参考信息设置ToolStripMenuItem.Size = new System.Drawing.Size(105, 24); + this.参考信息设置ToolStripMenuItem.Text = "参考信息设置"; + this.参考信息设置ToolStripMenuItem.Click += new System.EventHandler(this.标定信息设置ToolStripMenuItem_Click); + // + // 打印较准页ToolStripMenuItem + // + this.打印较准页ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.打印较准页ToolStripMenuItem.Name = "打印较准页ToolStripMenuItem"; + this.打印较准页ToolStripMenuItem.Size = new System.Drawing.Size(91, 24); + this.打印较准页ToolStripMenuItem.Text = "打印较准页"; + this.打印较准页ToolStripMenuItem.Click += new System.EventHandler(this.打印较准页ToolStripMenuItem_Click); + // + // 手动打印ToolStripMenuItem + // + this.手动打印ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.手动打印ToolStripMenuItem.Name = "手动打印ToolStripMenuItem"; + this.手动打印ToolStripMenuItem.Size = new System.Drawing.Size(77, 24); + this.手动打印ToolStripMenuItem.Text = "手动打印"; + this.手动打印ToolStripMenuItem.Click += new System.EventHandler(this.手动打印ToolStripMenuItem_Click); + // + // 车型设置ToolStripMenuItem + // + this.车型设置ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.yD10ToolStripMenuItem, + this.yD07KToolStripMenuItem}); + this.车型设置ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.车型设置ToolStripMenuItem.Name = "车型设置ToolStripMenuItem"; + this.车型设置ToolStripMenuItem.Size = new System.Drawing.Size(77, 24); + this.车型设置ToolStripMenuItem.Text = "车型设置"; + // + // yD10ToolStripMenuItem + // + this.yD10ToolStripMenuItem.Name = "yD10ToolStripMenuItem"; + this.yD10ToolStripMenuItem.Size = new System.Drawing.Size(180, 24); + this.yD10ToolStripMenuItem.Text = "YD10"; + this.yD10ToolStripMenuItem.Click += new System.EventHandler(this.yD10ToolStripMenuItem_Click); + // + // yD07KToolStripMenuItem + // + this.yD07KToolStripMenuItem.Name = "yD07KToolStripMenuItem"; + this.yD07KToolStripMenuItem.Size = new System.Drawing.Size(180, 24); + this.yD07KToolStripMenuItem.Text = "YD07K"; + this.yD07KToolStripMenuItem.Click += new System.EventHandler(this.yD07KToolStripMenuItem_Click); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(306, 28); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(355, 21); + this.textBox1.TabIndex = 59; + this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(661, 35); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(0, 12); + this.label5.TabIndex = 60; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(243, 61); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(59, 12); + this.label6.TabIndex = 61; + this.label6.Text = "号码校验:"; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(306, 58); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(355, 21); + this.textBox2.TabIndex = 62; + this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged); + // + // checkBox3 + // + this.checkBox3.AutoSize = true; + this.checkBox3.Checked = true; + this.checkBox3.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBox3.Location = new System.Drawing.Point(242, 108); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(72, 16); + this.checkBox3.TabIndex = 63; + this.checkBox3.Text = "号码校验"; + this.checkBox3.UseVisualStyleBackColor = true; + this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(661, 66); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(0, 12); + this.label7.TabIndex = 64; + // + // label3 + // + this.label3.Location = new System.Drawing.Point(243, 28); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(59, 26); + this.label3.TabIndex = 65; + this.label3.Text = "标定信息:产前标签"; + // + // textBox3 + // + this.textBox3.Location = new System.Drawing.Point(306, 85); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(355, 21); + this.textBox3.TabIndex = 67; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(259, 88); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(23, 12); + this.label9.TabIndex = 66; + this.label9.Text = "SN:"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(661, 94); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(0, 12); + this.label10.TabIndex = 68; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(759, 688); + this.Controls.Add(this.label10); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label9); + this.Controls.Add(this.label3); + this.Controls.Add(this.label7); + this.Controls.Add(this.checkBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.comboBox2); + this.Controls.Add(this.label8); + this.Controls.Add(this.label4); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.dataGridView2); + this.Controls.Add(this.dataGridView1); + this.Controls.Add(this.txtStatus); + this.Controls.Add(this.btnOpen_usb); + this.Controls.Add(this.cmbPort); + this.Controls.Add(this.label1); + this.Controls.Add(this.menuStrip1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "Form1"; + this.Text = "YD10上位机测试V2.0"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); + this.Load += new System.EventHandler(this.Form1_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label txtStatus; + private System.Windows.Forms.Button btnOpen_usb; + private System.Windows.Forms.ComboBox cmbPort; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column4; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn6; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn7; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn8; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.DataGridView dataGridView2; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11; + private System.Windows.Forms.ComboBox comboBox2; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.CheckBox checkBox2; + private System.Drawing.Printing.PrintDocument printDocument1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Timer timer2; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem 参考信息设置ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 打印较准页ToolStripMenuItem; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.ToolStripMenuItem 手动打印ToolStripMenuItem; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ToolStripMenuItem 车型设置ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem yD10ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem yD07KToolStripMenuItem; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + } +} + diff --git a/YD10测试机/Form1.cs b/YD10测试机/Form1.cs new file mode 100644 index 0000000..7f122ce --- /dev/null +++ b/YD10测试机/Form1.cs @@ -0,0 +1,3056 @@ +using Microsoft.Win32; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO.Ports; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Timers; +using System.Drawing.Printing; +using ZXingDemo; +using System.Net; +using System.IO; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using System.Threading; + +namespace YD10测试机 +{ + public partial class Form1 : Form + { + + SerialPort serialPort = new SerialPort(); + + public Form1() + { + InitializeComponent(); + } + + private float X; private float Y; + //获取控件的width、height、left、top、字体大小的值 + //存放在控件的Tag属性中 + private void setTag(Control cons) + { + //遍历窗体中的控件 + foreach (Control con in cons.Controls) + { + con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; + if (con.Controls.Count > 0) + setTag(con); + } + } + + //根据窗体大小调整控件大小 + private void setControls(float newx, float newy, Control cons) + { + //遍历窗体中的控件,重新设置控件的值 + foreach (Control con in cons.Controls) + { + + string[] mytag = con.Tag.ToString().Split(new char[] { ':' });//获取控件的Tag属性值,并分割后存储字符串数组 + float a = Convert.ToSingle(mytag[0]) * newx;//根据窗体缩放比例确定控件的值,宽度 + con.Width = (int)a;//宽度 + a = Convert.ToSingle(mytag[1]) * newy;//高度 + con.Height = (int)(a); + a = Convert.ToSingle(mytag[2]) * newx;//左边距离 + con.Left = (int)(a); + a = Convert.ToSingle(mytag[3]) * newy;//上边缘距离 + con.Top = (int)(a); + Single currentSize = Convert.ToSingle(mytag[4]) * newy;//字体大小 + con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit); + if (con.Controls.Count > 0) + { + setControls(newx, newy, con); + } + } + } + // + void Form1_Resize(object sender, EventArgs e) + { + + } + + + private void Form1_Load(object sender, EventArgs e) + { + cmbBox_Port_Update(); + my_set(); + read(); + read_set(); + GetPrinter(); + + // 添加第四列(按钮列) + DataGridViewButtonColumn buttonColumn = new DataGridViewButtonColumn + { + Name = "ButtonColumn", // 列的名称 + HeaderText = "操作", // 列头显示的文本 + Text = "写", // 按钮显示的文本 + AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells, + UseColumnTextForButtonValue = true, // 将按钮文本设置为列的值 + DefaultCellStyle = new DataGridViewCellStyle + { + Font = new Font("宋体", 9), // 设置按钮字体为 Arial,大小为 12,加粗 + } + }; + + dataGridView2.Columns.Add(buttonColumn); + + // 注册按钮点击事件 + dataGridView2.CellClick += DataGridView2_CellClick; + //set_ready(); + ServicePointManager.ServerCertificateValidationCallback = (obj, certificate, chain, sslPolicyErrors) => true; + this.Resize += new EventHandler(Form1_Resize);//窗体调整大小时引发事件 + X = this.Width;//获取窗体的宽度 + Y = this.Height;//获取窗体的高度 + setTag(this);//调用方法 + + + if (checkBox3.Checked) + { + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "设备IMEI"; + dataGridView2.Rows[index].Cells[1].Value = readConfig[2].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "设备ICCID"; + dataGridView2.Rows[index].Cells[1].Value = readConfig[3].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产日"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[5].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产月份"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[6].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产年份"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[7].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "流水号"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[8].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "批次号"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[14].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "供应商编码"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[13].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "物料编码"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[12].threshold; + } + + } + + + string[] rsrp_ck,rsrq_ck; + string product,rssi,sinr; + int wd1, wd2,gnss; + private void read() + { + string strLoadConfigFilePath = Application.StartupPath + @"\YD10参考信息.json";//路径 + try + { + using (StreamReader configFile = new StreamReader(strLoadConfigFilePath)) + { + string str_data_json = configFile.ReadToEnd(); //这一步至关重要 差一点写错了 + + JObject object_data_prase_json = (JObject)JsonConvert.DeserializeObject(str_data_json); + if (object_data_prase_json != null) + { + product=(string)object_data_prase_json["打印名称设置"]; + for (int i = 0; i < readConfig.Length; i++) + { + readConfig[i].Svalue = (string)object_data_prase_json[readConfig[i].name]; + int ret_index = 0; + if (readConfig[i].name == "RSSI值") + { + ret_index = readConfig[i].Svalue.IndexOf("(雅迪"); + rssi = readConfig[i].Svalue.Substring(0,ret_index); + } + if (readConfig[i].name == "SINR值") + { + ret_index = readConfig[i].Svalue.IndexOf("(雅迪"); + sinr = readConfig[i].Svalue.Substring(0, ret_index); + } + if (readConfig[i].name == "RSRP值") + { + rsrp_ck = readConfig[i].Svalue.Split('~'); + } + if (readConfig[i].name == "RSRQ值") + { + rsrq_ck = readConfig[i].Svalue.Split('~'); + } + if (readConfig[i].name == "外电电压值") + { + wd1 = Convert.ToInt32(readConfig[i].Svalue.Substring(0, 2))-Convert.ToInt32(readConfig[i].Svalue.Substring(5,1)); + wd2 = Convert.ToInt32(readConfig[i].Svalue.Substring(0, 2)) + Convert.ToInt32(readConfig[i].Svalue.Substring(5, 1)); + } + if (readConfig[i].name == "GNSS SNR值") + { + gnss = Convert.ToInt32(readConfig[i].Svalue.Substring(0, 2)); + } + } + for (int i = 0; i < writeConfig.Length; i++) + { + writeConfig[i].Svalue = (string)object_data_prase_json[writeConfig[i].name]; + } + for (int i = 0; i < readConfig.Length; i++) + { + readConfig[i].status = (bool)object_data_prase_json[readConfig[i].name + "status"]; + } + for (int i = 0; i < writeConfig.Length; i++) + { + writeConfig[i].status = (bool)object_data_prase_json[writeConfig[i].name + "status"]; + } + + + } + } + } + catch (Exception) + { + + } + } + + + private void read_set() + { + string strLoadConfigFilePath = Application.StartupPath + @"\YD10配置.json";//路径 + try + { + using (StreamReader configFile = new StreamReader(strLoadConfigFilePath)) + { + string str_data_json = configFile.ReadToEnd(); //这一步至关重要 差一点写错了 + + JObject object_data_prase_json = (JObject)JsonConvert.DeserializeObject(str_data_json); + if (object_data_prase_json != null) + { + comboBox1.Text = (string)object_data_prase_json["打印机"]; + comboBox2.Text = (string)object_data_prase_json["张数"]; + checkBox2.Checked = (bool)object_data_prase_json["自动打印机"]; + //checkBox1.Checked = (bool)object_data_prase_json["自动蓝牙连接"]; + checkBox3.Checked = (bool)object_data_prase_json["号码校验"]; + + } + } + } + catch (Exception) + { + + } + } + + private void cmbBox_Port_Update() + { + cmbPort.Items.Clear(); + RegistryKey keyCom = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm"); + + if (keyCom != null) + { + string[] sSubKeys = keyCom.GetValueNames(); + foreach (string sName in sSubKeys) + { + string sValue = (string)keyCom.GetValue(sName); + cmbPort.Items.Add(sValue); + } + } + + } + + //// + //把十六进制格式的字符串转换成字节数组。 + // + //要转换的十六进制格式的字符串 + //返回字节数组。 + public static byte[] getBytesFromString(string pString) + { + string[] str = pString.Split(' '); //把十六进制格式的字符串按空格转换为字符串数组。 + byte[] bytes = new byte[str.Length]; //定义字节数组并初始化,长度为字符串数组的长度。 + for (int i = 0; i < str.Length; i++) //遍历字符串数组,把每个字符串转换成字节类型赋值给每个字节变量。 + bytes[i] = Convert.ToByte(Convert.ToInt32(str[i], 16)); + return bytes; //返回字节数组。 + } + + + //把字节数组转为十六进制字符串 + public static string getStringFromBytes(byte[] pByte) + { + string str = ""; //定义字符串类型临时变量。 + //遍历字节数组,把每个字节转换成十六进制字符串,不足两位前面添“0”,以空格分隔累加到字符串变量里。 + for (int i = 0; i < pByte.Length; i++) + str += (pByte[i].ToString("X").PadLeft(2, '0') + " "); + str = str.TrimEnd(' '); //去掉字符串末尾的空格。 + return str; //返回字符串临时变量。 + } + + // /16进制转字符串 + static string ushortToHexString(ushort value) + { + byte[] bytes = BitConverter.GetBytes(value); // 将ushort转换为字节数组 + //if (BitConverter.IsLittleEndian) // 检查系统是否为小端字节序 + //{ + // Array.Reverse(bytes); // 如果是小端字节序,需要反转字节数组 + //} + + // 将每个字节转换为两位的十六进制字符串,并拼接 + string hexString = string.Join(" ", bytes.Select(b => b.ToString("X2"))); + return hexString; + } + + // CRC16-CCITT (0xFFFF)算法实现 + public static ushort ComputeChecksum(byte[] data) + { + ushort crc = 0xFFFF; // 初始化 CRC 为 0xFFFF + foreach (byte b in data) + { + crc ^= b; // 确保 b 是一个整数 + for (int i = 0; i < 8; i++) + { + if ((crc & 0x0001) != 0) + { + crc = (ushort)((crc >> 1) ^ 0xA001); // 0xA001 是 0x8005 按位颠倒后的结果 + } + else + { + crc = (ushort)(crc >> 1); + } + } + } + return crc; + } + + + // 将十六进制字符串转换为CRC16校验码的字符串格式("XX XX") + public static string crc16(string hexString) + { + // 将十六进制字符串转换为字节数组 + byte[] data = getBytesFromString(hexString); + + // 计算CRC16校验码 + ushort crc = ComputeChecksum(data); + + // 将校验码转换为字符串格式("XX XX") + return $"{(crc >> 8):X2} {(crc & 0xFF):X2}"; + } + + // 将字符串中的每个字符转换为十六进制字符串 + public static string StringToHex(string str) + { + string hexString = ""; + foreach (char c in str) + { + hexString += ((int)c).ToString("X2") + " "; // 每个字符转换为两位的十六进制字符串,并用空格分隔 + } + return hexString.Trim(); // 去掉尾部多余的空格 + } + + static string Int32ToTwoHexBytes(int value) + { + // 提取低8位和高8位 + byte low8 = (byte)(value & 0xFF); // 低8位 + byte high8 = (byte)((value >> 8) & 0xFF); // 高8位 + + // 转换为两位的十六进制字符串 + string lowHex = low8.ToString("X2"); // 低8位的十六进制字符串 + string highHex = high8.ToString("X2"); // 高8位的十六进制字符串 + + return $"{lowHex} {highHex}"; + } + + public static int ConvertToAsciiHex(string input) + { + // 将输入的字符串转换为 int32 类型的数值 + int intValue = int.Parse(input); + + // 将 int32 类型的数值转换为十六进制表示(字符串形式) + string hexString = intValue.ToString("X"); + + // 获取十六进制表示的第一个字符(假设只关心第一个字符) + char hexChar = hexString[0]; + + // 返回该字符的 ASCII 码值 + return (int)hexChar; + } + + private void send(string data) + { + if (serialPort.IsOpen) + { + byte[] temdata1 = getBytesFromString(data); + serialPort.Write(temdata1, 0, temdata1.Length); //发到串口 + } + else + { + txtStatus.Text = "请先打开串口!!"; + } + //this.Invoke(new Action(() => + //{ + // label2.Text = "send:" +data; + //})); + } + + int flag_readn = 0; + //建立连接 + private void _yd_connet() + { + string head = "59 44 "; + string data = "07 02 00 10 03"; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //断开连接 + private void _yd_disconnet() + { + string head = "59 44 "; + string data = "07 02 00 10 00"; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + + //心跳包 + private void yd_heart() + { + string head = "59 44 "; + string data = "07 02 00 3E 00" ; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //交互指令 + private void yd_rid_opt(UInt16 cmd) + { + string head = "59 44 "; + string data = "07 04 00 31 00 " + ushortToHexString(cmd); + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //读 + private void yd_did_read_one(UInt16 cmd) + { + string head = "59 44 "; + string data = "07 03 00 22 " + ushortToHexString(cmd); + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + + } + + //写 + private void yd_did_write_one(UInt16 cmd, string data) + { + if (checkBox3.Checked) + { + return; + } + + string cmd_data = ""; + if (cmd == 0xcf40) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 99) + { + cmd_data = Convert.ToInt32(data).ToString("X2"); + } + else + { + + } + } + + if (cmd == 0xcf41) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 254) + { + cmd_data = Convert.ToInt32(data).ToString("X2"); + } + else + { + + } + } + + if (cmd == 0xcf42) + { + if (data == "IOT") + { + cmd_data = StringToHex("E"); + } + if (data == "BCM") + { + cmd_data = StringToHex("D"); + } + else + { + + } + } + + if (cmd == 0xcf43) + { + if (data == "嘉为") + { + cmd_data = StringToHex("2"); + } + if (data == "高兴新") + { + cmd_data = StringToHex("6"); + } + if (data == "如新") + { + cmd_data = StringToHex("9"); + } + } + + if (cmd == 0xcf44) + { + if (data == "无锡雅迪") + { + cmd_data = StringToHex("1"); + } + if (data == "天津雅迪") + { + cmd_data = StringToHex("2"); + } + if (data == "浙江雅迪") + { + cmd_data = StringToHex("3"); + } + if (data == "广州雅迪") + { + cmd_data = StringToHex("4"); + } + if (data == "成都雅迪") + { + cmd_data = StringToHex("5"); + } + if (data == "越南雅迪") + { + cmd_data = StringToHex("6"); + } + } + + if (cmd == 0xcf45) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 31) + { + cmd_data = StringToHex(data.Substring(0,1)); + yd_did_write_one(0xcf46, data.Substring(1,1)); + } + } + + if (cmd == 0xcf46) + { + cmd_data = StringToHex(data); + } + + if (cmd == 0xcf47) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 12) + { + cmd_data = ConvertToAsciiHex(data).ToString("X"); + } + } + + if (cmd == 0xcf48 ) + { + if (Convert.ToInt32(data.Substring(0, 1)) >= 0 && Convert.ToInt32(data.Substring(0, 1)) <= 9) + { + cmd_data = StringToHex(data.Substring(0, 1)); + yd_did_write_one(0xcf49, data.Substring(1, 1)); + } + } + + if (cmd == 0xcf49) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 9) + { + cmd_data = StringToHex(data); + } + } + + if (cmd == 0xcf4a) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 999999) + { + cmd_data = StringToHex(data)+" 00"; + } + } + + if (cmd == 0xcf4b) + { + if (data.Length<65) { + cmd_data = StringToHex(data) + " 00"; + } + + } + + if (cmd == 0xcf4c) + { + if (data.Length < 65535) + { + cmd_data = Int32ToTwoHexBytes(Convert.ToInt32(data)); + } + + } + + if (cmd == 0xcf4d) + { + string hexString = Convert.ToInt32(data).ToString("X8"); + cmd_data = $"{hexString.Substring(6, 2)} {hexString.Substring(4, 2)} {hexString.Substring(2, 2)} {hexString.Substring(0, 2)}"; + } + + if (cmd == 0xcf4e) + { + if (data.Length < 17) + { + cmd_data = StringToHex(data) + " 00"; + } + + } + + if (cmd == 0xcf4f) + { + if (data.Length < 7) + { + cmd_data = StringToHex(data) + " 00"; + } + + } + + if (cmd == 0xcf50) + { + if (data.Length < 10) + { + cmd_data = StringToHex(data) + " 00 00 00"; + } + + } + + string head = "59 44 "; + string data2 = "07 "+ ((cmd_data.Length+1)/3+3).ToString("X2") + " 00 2E " + ushortToHexString(cmd)+" " + cmd_data; + string end = head + data2 + " " + crc16(data2) + " 4B 4A"; + send(end); + + } + + + //自动测试 + private void zd_test(int i) + { + if (this.Text.IndexOf("YD10") != -1) { + if (i < 26) + { + ushort did = Convert.ToUInt16(readConfig[i].DID, 16); + yd_did_read_one(did); + } + else if (i > 25) + { + ushort did = Convert.ToUInt16(writeConfig[i - 26].DID, 16); + if (did == 0xcf46) + { + yd_did_read_one(0xcf45); + } + if (did == 0xcf49) + { + yd_did_read_one(0xcf48); + } + yd_did_read_one(did); + } + } + else if (this.Text.IndexOf("YD07") != -1) + { + + } + + + } + + + private void btnOpen_usb_Click(object sender, EventArgs e) + { + if (btnOpen_usb.Text == "打开") + { + try + { + if (!serialPort.IsOpen) + { + serialPort.PortName = cmbPort.Text; + serialPort.BaudRate = 115200; //波特率 + serialPort.DataBits = 8; //数据位 + serialPort.StopBits = StopBits.One; //停止位 + serialPort.Parity = Parity.None; //奇偶校验 + + serialPort.Open();//打开串口 + } + btnOpen_usb.Text = "关闭"; + txtStatus.Text = "串口已打开!"; + + serialPort.DataReceived += new SerialDataReceivedEventHandler(PortReceivedHandle); //加载接收事件 + + } + + catch + { + txtStatus.Text = "串口打开错误或串口不存在!"; + } + } + else //关闭串口 + try + { + if (serialPort.IsOpen) + { + serialPort.Close(); //关闭串口 + btnOpen_usb.Text = "打开"; + txtStatus.Text = "串口已关闭!"; + flag_heart = 0; + out_time = -1; + _yd_disconnet(); + flag_connet = 0; + clean(); + //button1.Text = "开始检测"; + } + } + catch + { + txtStatus.Text = "串口关闭错误或串口不存在!"; + } + } + + + // 将十六进制字符串转换为整数 + public static int HexStringToInt(string hexString) + { + // 移除字符串中的所有空格 + string cleanedHexString = hexString.Replace(" ", ""); + + // 将十六进制字符串转换为整数 + int result = Convert.ToInt32(cleanedHexString, 16); + return result; + } + private void PortReceivedHandle(object sender, SerialDataReceivedEventArgs e) + { + try + { + //第一部分 串口接收 + SerialPort serialport = (SerialPort)(sender); + System.Threading.Thread.Sleep(200); + int n = serialport.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致 + //writeA883SmtLog(smt_log_path,"n = "+ Convert.ToString(n), 0, 2); + byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据 + serialport.Read(buf, 0, n);//读取缓冲数据 + serialport.DiscardInBuffer(); //清空接收中断buffer + //str_result = Encoding.UTF8.GetString(buf); + //byte[] str16_result = getBytesFromString(str_result); + string str_result = getStringFromBytes(buf); + int ret_index = -1; + //if (buf[0]==0x59 && buf[1]==0x44 && buf[2]==0x0f) //找到头 + //{ + + // int data_len = buf[4] << 8 | buf[3]; + // byte[] data= buf.Skip(2 + 1 + 2).Take(data_len).ToArray(); + // int crc = buf[2 + 1 + 2 + data_len] << 8 | buf[2 + 1 + 2 + data_len + 1]; + // byte[] end = buf.Skip(2 + 1 + 2 + data_len + 2).Take(data_len + 2 + 2).ToArray(); + // // 校验CRC + // byte[] tmp = buf.Skip(2).Take(data_len+1+2).ToArray(); + // int tmp_crc16 = HexStringToInt(crc16(getStringFromBytes(tmp))); + // if (crc == tmp_crc16) + // { + // if (end[0] == 0x4b && end[1] == 0x4a) + // { + // recvAnalz(data,data_len); + // } + // } + + //} + int index = 0; // 当前处理的索引 + while (index < buf.Length) + { + // 检查头部 + if (index + 5 < buf.Length && buf[index] == 0x59 && buf[index + 1] == 0x44 && buf[index + 2] == 0x0f) + { + // 提取数据长度 + int data_len = buf[index + 4] << 8 | buf[index + 3]; + + // 提取数据部分 + byte[] data = buf.Skip(index + 2 + 1 + 2).Take(data_len).ToArray(); + + // 提取CRC部分 + int crc = buf[index + 2 + 1 + 2 + data_len] << 8 | buf[index + 2 + 1 + 2 + data_len + 1]; + + // 提取结束标志部分 + byte[] end = buf.Skip(index + 2 + 1 + 2 + data_len + 2).Take(2).ToArray(); + + // 提取用于CRC校验的数据 + byte[] tmp = buf.Skip(index + 2).Take(data_len + 1 + 2).ToArray(); + + // 计算CRC + int tmp_crc16 = HexStringToInt(crc16(getStringFromBytes(tmp))); + + // 校验CRC + if (crc == tmp_crc16) + { + // 校验结束标志 + if (end.Length == 2 && end[0] == 0x4b && end[1] == 0x4a) + { + // 处理有效数据 + Heart = true; + recvAnalz(data, data_len); + //this.Invoke(new Action(() => + //{ + // label2.Text = str_result ; + //})); + } + } + } + + // 移动到下一组数据 + index++; + } + + + } + catch (Exception) + { + + } + } + + int flag_gnss = 0,acc_bl=1000; + string year = "", day = ""; + string[] numbers; + //响应数据分析 + private void recvAnalz(byte[] data, int data_len) + { + ushort cmd = data[0]; + Heart = true; + switch (cmd) + { + case 0x7f://错误码 + if (data[1] == 0x10) + { + if (data[2] == 0x12) + { + this.Invoke(new Action(() => + { + label2.Text = "连接/断开:不受支持的子功能"; + })); + } + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "连接/断开:消息长度或格式不正确"; + })); + } + + } + if (data[1] == 0x3E) + { + if (data[2] == 0x12) + { + this.Invoke(new Action(() => + { + label2.Text = "心跳:不受支持的子功能"; + })); + } + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "心跳:消息长度或格式不正确"; + })); + } + } + if (data[1] == 0x22) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "读:消息长度或格式不正确"; + })); + } + + } + if (data[1] == 0x2E) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "写:消息长度或格式不正确"; + })); + } + if (data[2] == 0x31) + { + this.Invoke(new Action(() => + { + label2.Text = "写:不支持的DID或DID为只读DID"; + })); + } + if (data[2] == 0x72) + { + this.Invoke(new Action(() => + { + label2.Text = "写:写出错"; + })); + + } + } + if (data[1] == 0x31) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "交互:消息长度或格式不正确"; + })); + } + if (data[2] == 0x31) + { + this.Invoke(new Action(() => + { + label2.Text = "交互:不支持的DID或DID为只读DID"; + })); + } + if (data[2] == 0x72) + { + this.Invoke(new Action(() => + { + label2.Text = "交互:写出错"; + })); + + } + } + + + break; + case 0x50://建立连接 + if (data[1] == 0x03) + { + this.Invoke(new Action(() => + { + label2.Text = "连接成功"; + })); + yd_heart(); + flag_connet = 0; + flag_result = 0; + flag_heart = 1; + + } + + if (data[1] == 0x00)//断开连接 + { + + } + break; + + case 0x7e://心跳报文 + if (data[1] == 0x00) + { + //Heart = true; + } + break; + + case 0x62://读响应 + ushort did = (ushort)((data[2] << 8) | data[1]); + string DID = ((data[2] << 8) | data[1]).ToString("X4"); + // 查找特定 value 对应的 name + int index = Array.FindIndex(readConfig, myUnitClass => myUnitClass.DID == DID); + //数字 + if ((did >= 0xCF81) && (did <= 0xCF8C) || (did == 0xCF08) || (did == 0xCF09) || (did == 0xCF0C)) + { + if (did == 0xCF85) + { + readConfig[index].threshold = string.Join(", ", data.Skip(3).Select(s8 => (s8 > 127) ? s8 - 256 : s8)); + // 使用 Split 方法按逗号拆分字符串 + numbers = readConfig[index].threshold.Split(','); + flag_gnss = 1; + } + else if ((did == 0xCF86) || (did == 0xCF87)) + { + readConfig[index].threshold = ((data[3] > 127) ? data[3] - 256 : data[3]).ToString() + "dbm"; + readConfig[index].Ivalue = Convert.ToInt32(((data[3] > 127) ? data[3] - 256 : data[3]).ToString()); + } + else if ((did == 0xCF88) || (did == 0xCF89)) + { + readConfig[index].threshold = ((data[3] > 127) ? data[3] - 256 : data[3]).ToString() + "db"; + readConfig[index].Ivalue = Convert.ToInt32(((data[3] > 127) ? data[3] - 256 : data[3]).ToString()); + } + else if (did == 0xCF0C) + { + readConfig[index].threshold =Convert.ToString((data[4] << 8) | data[3]); + } + else + { + readConfig[index].threshold = Convert.ToString(data[3]); + readConfig[index].Ivalue = Convert.ToInt32(readConfig[index].threshold); + } + + } + // 显示字符串 + if (((did >= 0xCF00) && (did <= 0xCF06)) || (did == 0xCF0A) || (did == 0xCF0B) || (did == 0xCF80) && data[3]!=0xff) + { + readConfig[index].threshold = string.Join("", data.Skip(3).Select(b => (char)b)).Replace("\0", ""); + } + // BCD 字符串 + if (did == 0xCF07 && data[3] != 0xff) + { + readConfig[index].threshold = string.Concat(data.Skip(3).Select(b => (char)b)).Replace("\0", ""); + + } + + //读写分组 + int index2 = Array.FindIndex(writeConfig, myUnitClass => myUnitClass.DID == DID); + // 数字1 + if ((did == 0xCF40) || (did == 0xCF41)) + { + writeConfig[index2].threshold = Convert.ToString(data[3]); + } + if (did == 0xCF42) + { + if (data[3] == 0xff) + { + writeConfig[index2].threshold = "0xFF"; + } + else + { + char character = (char)data[3]; + if (character == 'E') + { + writeConfig[index2].threshold = "IOT"; + } + if (character == 'D') + { + writeConfig[index2].threshold = "BCM"; + } + } + } + + if (did == 0xCF43) + { + if (data[2] == 0xff) + { + writeConfig[index2].threshold = "0xFF"; + } + else + { + char character = (char)data[3]; + if (character == '2') + { + writeConfig[index2].threshold = "嘉为"; + } + if (character == '6') + { + writeConfig[index2].threshold = "高新兴"; + } + if (character == '9') + { + writeConfig[index2].threshold = "如新"; + } + } + } + + if (did == 0xCF44) + { + if (data[2] == 0xff) + { + writeConfig[index2].threshold = "0xFF"; + } + else + { + char character = (char)data[3]; + writeConfig[index2].threshold = character + "."; + if (character == '1') + { + writeConfig[index2].threshold += "无锡"; + } + if (character == '2') + { + writeConfig[index2].threshold += "天津"; + } + if (character == '3') + { + writeConfig[index2].threshold += "浙江"; + } + if (character == '4') + { + writeConfig[index2].threshold += "广州"; + } + if (character == '5') + { + writeConfig[index2].threshold += "成都"; + } + if (character == '6') + { + writeConfig[index2].threshold += "越南"; + } + writeConfig[index2].threshold += "雅迪"; + } + } + + if ((did == 0xCF45)) + { + day = Convert.ToString((char)data[3]); + //writeConfig[index2].threshold = Convert.ToString((char)data[3]); + } + + if (did == 0xCF47) + { + string years =Convert.ToString( (char)data[3]); + string yeadrss = Convert.ToInt32(years,16).ToString("D2"); + writeConfig[index2].threshold = yeadrss; + } + + if ((did == 0xCF48)) + { + year = Convert.ToString((char)data[3]); + + } + + + if ((did == 0xCF4A) || (did == 0xCF4B) || (did == 0xCF4E) || (did == 0xCF4F) || (did == 0xCF50) ) + { + writeConfig[index2].threshold = string.Join("", data.Skip(3).Select(b => (char)b)).Replace("\0", ""); + } + + // 数字2 + if (did == 0xCF4C) + { + writeConfig[index2].threshold = Convert.ToString((data[4] << 8) | data[3]); + } + // 数字4 + if (did == 0xCF4D) + { + writeConfig[index2].threshold = Convert.ToString((data[6] << 24 | data[5] << 16 | data[4] << 8 | data[3])); + if (Convert.ToInt32(writeConfig[index2].threshold)>0) + { + acc_bl = Convert.ToInt32(writeConfig[index2].threshold); + } + } + + if ((did == 0xCF46)) + { + writeConfig[index2].threshold = day + Convert.ToString((char)data[3]); + yd_did_read_one(0xcf45); + } + if ((did == 0xCF49)) + { + writeConfig[index2].threshold = year+ Convert.ToString((char)data[3]); + yd_did_read_one(0xcf48); + } + + + break; + + case 0x6e://写响应 + ushort did2 = (ushort)((data[2] << 8) | data[1]); + //string DID2 = ((data[2] << 8) | data[1]).ToString("X4"); + //int index3= Array.FindIndex(writeConfig, myUnitClass => myUnitClass.DID ==DID2); + //writeConfig[index3].threshold = ""; + yd_did_read_one(did2); + this.Invoke(new Action(() => + { + label2.Text = "写入成功"; + })); + + flag_write = 0; + break; + + case 0x71://交互指令 + if (data[1] == 0x00) + { + + } + break; + + + } + + + } + + struct myUnitClass + { + public string DID; //DID + public string name; //名称 + public string threshold; + public bool status; + public Int64 Ivalue; + public bool Bvalue; + public string Svalue; + public byte[] Fvalue; + public string sw; //是pass 还是fail , 用于pass排在上上方 + }; + + myUnitClass[] readConfig = new myUnitClass[26]; + myUnitClass[] writeConfig = new myUnitClass[15]; + myUnitClass[] alm_readConfig = new myUnitClass[23]; + myUnitClass[] alm_writeConfig = new myUnitClass[5]; + + + + private void my_set() + { + //------只读1次----- + readConfig[0].DID = "CF00"; + readConfig[0].name = "串口诊断协议版本号"; + readConfig[0].status = true; + + readConfig[1].DID = "CF01"; + readConfig[1].name = "软件版本号"; + readConfig[1].status = true; + + readConfig[2].DID = "CF02"; + readConfig[2].name = "设备IMEI"; + readConfig[2].status = true; + + readConfig[3].DID = "CF03"; + readConfig[3].name = "设备ICCID"; + readConfig[3].status = true; + + readConfig[4].DID = "CF04"; + readConfig[4].name = "GNSS产品型号"; + readConfig[4].status = true; + + readConfig[5].DID = "CF05"; + readConfig[5].name = "GNSS软件版本号"; + readConfig[5].status = true; + + readConfig[6].DID = "CF06"; + readConfig[6].name = "GNSS硬件版本号"; + readConfig[6].status = true; + + readConfig[7].DID = "CF07"; + readConfig[7].name = "SPI FLASH ID"; + readConfig[7].status = true; + + readConfig[8].DID = "CF08"; + readConfig[8].name = "BOOT底层软件版本"; + readConfig[8].status = true; + + readConfig[9].DID = "CF09"; + readConfig[9].name = "BOOT升级协议版本"; + readConfig[9].status = true; + + readConfig[10].DID = "CF0A"; + readConfig[10].name = "通信协议版本号"; + readConfig[10].status = true; + + readConfig[11].DID = "CF0B"; + readConfig[11].name = "备份区软件版本号"; + readConfig[11].status = true; + + readConfig[12].DID = "CF0C"; + readConfig[12].name = "OTA零部件编码"; + readConfig[12].status = true; + //------只读N次----- + readConfig[13].DID = "CF80"; + readConfig[13].name = "OTA域名"; + readConfig[13].status = true; + + readConfig[14].DID = "CF81"; + readConfig[14].name = "拨号状态"; + readConfig[14].status = true; + + readConfig[15].DID = "CF82"; + readConfig[15].name = "驻网状态"; + readConfig[15].status = true; + + readConfig[16].DID = "CF83"; + readConfig[16].name = "服务器连接状态"; + readConfig[16].status = true; + + readConfig[17].DID = "CF84"; + readConfig[17].name = "GNSS定位状态"; + readConfig[17].status = true; + + readConfig[18].DID = "CF85"; + readConfig[18].name = "GNSS SNR值"; + readConfig[18].status = true; + + readConfig[19].DID = "CF86"; + readConfig[19].name = "RSSI值"; + readConfig[19].status = true; + + readConfig[20].DID = "CF87"; + readConfig[20].name = "RSRP值"; + readConfig[20].status = true; + + readConfig[21].DID = "CF88"; + readConfig[21].name = "RSRQ值"; + readConfig[21].status = true; + + readConfig[22].DID = "CF89"; + readConfig[22].name = "SINR值"; + readConfig[22].status = true; + + readConfig[23].DID = "CF8A"; + readConfig[23].name = "ACC管脚电平状态"; + readConfig[23].status = true; + + readConfig[24].DID = "CF8B"; + readConfig[24].name = "外电电压值"; + readConfig[24].status = true; + + readConfig[25].DID = "CF8C"; + readConfig[25].name = "K线通讯状态"; + readConfig[25].status = true; + + ////新增YD07K + /// + //readConfig[26].DID = "CF0D"; + //readConfig[26].name = "GSENSOR地址"; + //readConfig[26].status = true; + + //readConfig[27].DID = "CF8D"; + //readConfig[27].name = "六轴数据校准值"; + //readConfig[27].status = true; + + //readConfig[28].DID = "CF8E"; + //readConfig[28].name = "六轴传感器状态"; + //readConfig[28].status = true; + + //readConfig[29].DID = "CF8F"; + //readConfig[29].name = "音频文件状态"; + //readConfig[29].status = true; + + //readConfig[30].DID = "CF90"; + //readConfig[30].name = "外电电平"; + //readConfig[30].status = true; + + //---alm读节点---- + alm_readConfig[0].DID = "CF01"; + alm_readConfig[0].name = "alm软件版本号"; + alm_readConfig[0].status = true; + + + alm_readConfig[1].DID = "CFA0"; + alm_readConfig[1].name = "ACC1输出"; + alm_readConfig[1].status = true; + + + alm_readConfig[2].DID = "CFA1"; + alm_readConfig[2].name = "ACC1预充"; + alm_readConfig[2].status = true; + + + alm_readConfig[3].DID = "CFA2"; + alm_readConfig[3].name = "ACC2输出"; + alm_readConfig[3].status = true; + + alm_readConfig[4].DID = "CFA3"; + alm_readConfig[4].name = "ACC2预充"; + alm_readConfig[4].status = true; + + + alm_readConfig[5].DID = "CFA4"; + alm_readConfig[5].name = "ACC1输入"; + alm_readConfig[5].status = true; + + alm_readConfig[6].DID = "CFA5"; + alm_readConfig[6].name = "机械钥匙"; + alm_readConfig[6].status = true; + + alm_readConfig[7].DID = "CFA6"; + alm_readConfig[7].name = "ACC2输入"; + alm_readConfig[7].status = true; + + alm_readConfig[8].DID = "CFA7"; + alm_readConfig[8].name = "右转向灯输入"; + alm_readConfig[8].status = true; + + alm_readConfig[9].DID = "CFA8"; + alm_readConfig[9].name = "蓝牙指示灯输出"; + alm_readConfig[9].status = true; + + alm_readConfig[10].DID = "CFA9"; + alm_readConfig[10].name = "双闪输出"; + alm_readConfig[10].status = true; + + alm_readConfig[11].DID = "CFAA"; + alm_readConfig[11].name = "轮动输入"; + alm_readConfig[11].status = true; + + alm_readConfig[12].DID = "CFAB"; + alm_readConfig[12].name = "左转向灯输入"; + alm_readConfig[12].status = true; + + alm_readConfig[13].DID = "CFAC"; + alm_readConfig[13].name = "MOTO_A输出"; + alm_readConfig[13].status = true; + + alm_readConfig[14].DID = "CFAD"; + alm_readConfig[14].name = "MOTO_B输出"; + alm_readConfig[14].status = true; + + alm_readConfig[15].DID = "CFAE"; + alm_readConfig[15].name = "锁电机输出"; + alm_readConfig[15].status = true; + + alm_readConfig[16].DID = "CFAF"; + alm_readConfig[16].name = "电磁阀输出"; + alm_readConfig[16].status = true; + + alm_readConfig[17].DID = "CFB0"; + alm_readConfig[17].name = "一键启动输入"; + alm_readConfig[17].status = true; + + alm_readConfig[18].DID = "CFB1"; + alm_readConfig[18].name = "坐垫感应输入"; + alm_readConfig[18].status = true; + + alm_readConfig[19].DID = "CFB2"; + alm_readConfig[19].name = "外电电压值"; + alm_readConfig[19].status = true; + + alm_readConfig[20].DID = "CFB3"; + alm_readConfig[20].name = "K线通讯"; + alm_readConfig[20].status = true; + + alm_readConfig[21].DID = "CFB4"; + alm_readConfig[21].name = "蓝牙连接"; + alm_readConfig[21].status = true; + + alm_readConfig[22].DID = "CFB5"; + alm_readConfig[22].name = "弹簧振子"; + alm_readConfig[22].status = true; + + //---alm写节点---- + + alm_writeConfig[0].DID = "CF4D"; + alm_writeConfig[0].name = "外电电压AD比例值"; + alm_writeConfig[0].status = true; + + alm_writeConfig[1].DID = "CF61"; + alm_writeConfig[1].name = "音量等级"; + alm_writeConfig[1].status = true; + + alm_writeConfig[2].DID = "CF62"; + alm_writeConfig[2].name = "声音主题"; + alm_writeConfig[2].status = true; + + alm_writeConfig[3].DID = "CF63"; + alm_writeConfig[3].name = "ACC电压AD分压比例值"; + alm_writeConfig[3].status = true; + + alm_writeConfig[4].DID = "CF64"; + alm_writeConfig[4].name = "蓝牙MCA地址"; + alm_writeConfig[4].status = true; + + //-----读写---- + writeConfig[0].DID = "CF40"; + writeConfig[0].name = "硬件版本号"; + writeConfig[0].status = true; + + writeConfig[1].DID = "CF41"; + writeConfig[1].name = "产品型号"; + writeConfig[1].status = true; + + writeConfig[2].DID = "CF42"; + writeConfig[2].name = "产品识别码"; + writeConfig[2].status = true; + + writeConfig[3].DID = "CF43"; + writeConfig[3].name = "产商识别码"; + writeConfig[3].status = true; + + writeConfig[4].DID = "CF44"; + writeConfig[4].name = "客户识别码"; + writeConfig[4].status = true; + + // writeConfig[6].DID = "CF45"; + // writeConfig[6].name = "生产日十位"; + + writeConfig[5].DID = "CF46"; + writeConfig[5].name = "生产日"; + writeConfig[5].status = true; + + writeConfig[6].DID = "CF47"; + writeConfig[6].name = "生产月份"; + writeConfig[6].status = true; + + // writeConfig[7].DID = "CF48"; + //writeConfig[7].name = "生产年份十位"; + + writeConfig[7].DID = "CF49"; + writeConfig[7].name = "生产年份"; + writeConfig[7].status = true; + + writeConfig[8].DID = "CF4A"; + writeConfig[8].name = "流水号"; + writeConfig[8].status = true; + + writeConfig[9].DID = "CF4B"; + writeConfig[9].name = "服务器域名"; + writeConfig[9].status = true; + + writeConfig[10].DID = "CF4C"; + writeConfig[10].name = "服务器端口号"; + writeConfig[10].status = true; + + writeConfig[11].DID = "CF4D"; + writeConfig[11].name = "外电电压AD比列值"; + writeConfig[11].status = true; + + writeConfig[12].DID = "CF4E"; + writeConfig[12].name = "物料编码"; + writeConfig[12].status = true; + + writeConfig[13].DID = "CF4F"; + writeConfig[13].name = "供应商编码"; + writeConfig[13].status = true; + + writeConfig[14].DID = "CF50"; + writeConfig[14].name = "批次号"; + writeConfig[14].status = true; + + + } + + int index = 0; + int index2 = 0, flag_dy = 0; + string flag_pass = "FAIL"; + private void timer1_Tick(object sender, EventArgs e) + { + if (serialPort.IsOpen && flag_heart == 0 ) //串口打开且无心跳 进入连接流程 + { + out_time = 0; + flag_connet = 1; + + } + + + if (!checkBox3.Checked) + { + //this.dataGridView1.Rows.Clear(); + ///---------初始化------------ + if (index < 1) + { + for (int i = 0; i < readConfig.Length; i++) + { + if (readConfig[i].status) + { + index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[index].Cells[0].Value = readConfig[i].name; + dataGridView1.Rows[index].Cells[1].Value = readConfig[i].threshold; + } + } + + //for (int i = 0; i < alm_readConfig.Length; i++) + //{ + // if (alm_readConfig[i].status) + // { + // index = this.dataGridView1.Rows.Add(); + // dataGridView1.Rows[index].Cells[0].Value = alm_readConfig[i].name; + // dataGridView1.Rows[index].Cells[1].Value = alm_readConfig[i].threshold; + // } + //} + } + + if (index2 < 1) + { + + + for (int i = 0; i < writeConfig.Length; i++) + { + if (writeConfig[i].status) + { + index2 = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index2].Cells[0].Value = writeConfig[i].name; + dataGridView2.Rows[index2].Cells[1].Value = writeConfig[i].threshold; + } + } + + //for (int i = 0; i < alm_writeConfig.Length; i++) + //{ + // if (alm_readConfig[i].status) + // { + // index2 = this.dataGridView2.Rows.Add(); + // dataGridView2.Rows[index2].Cells[0].Value = alm_writeConfig[i].name; + // dataGridView2.Rows[index2].Cells[1].Value = alm_writeConfig[i].threshold; + // } + //} + + } + + ///---------测试中------------ + int smt_result = 1; + if (index <= 0 || index2 <= 0) + { + return; + } + + for (int i = 0; i <= index; i++) + { + string name = (string)dataGridView1.Rows[i].Cells[0].Value; + // 查找特定 value 对应的 name + int readindex = Array.FindIndex(readConfig, myUnitClass => myUnitClass.name == name.ToString()); + dataGridView1.Rows[i].Cells[1].Value = readConfig[readindex].threshold; + if (readConfig[readindex].name == "拨号状态" || readConfig[readindex].name == "驻网状态" || + readConfig[readindex].name == "服务器连接状态" || readConfig[readindex].name == "GNSS定位状态" || + readConfig[readindex].name == "K线通讯状态") + { + if (readConfig[readindex].threshold == "1") + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "GNSS SNR值") + { + int snr_cnt = 0; + if (flag_gnss == 1) + { + for (int a = 0; a < 4; a++) + { + if (Convert.ToInt64(numbers[a]) >= gnss) + { + snr_cnt++; + } + } + } + if (snr_cnt == 4) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "RSSI值") + { + if (readConfig[readindex].Ivalue >= Convert.ToInt32(rssi) && readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "SINR值") + { + if (readConfig[readindex].Ivalue >= Convert.ToInt32(sinr) && readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "RSRP值") + { + if (readConfig[readindex].Ivalue <= Convert.ToInt32(rsrp_ck[0]) && readConfig[readindex].Ivalue >= Convert.ToInt32(rsrp_ck[1]) && + readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "RSRQ值") + { + if (readConfig[readindex].Ivalue <= Convert.ToInt32(rsrq_ck[0]) && readConfig[readindex].Ivalue >= Convert.ToInt32(rsrq_ck[1]) && + readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "ACC管脚电平状态") + { + if (readConfig[readindex].Ivalue == Convert.ToInt32(readConfig[readindex].Svalue) && readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "外电电压值") + { + if (readConfig[readindex].Ivalue <=wd2 && readConfig[readindex].Ivalue >= wd1 && readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else + { + if (readConfig[readindex].Svalue != null) + { + if (readConfig[readindex].threshold == readConfig[readindex].Svalue) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else + { + if (readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + } + + } + + int rowIndex = -1; + if (dataGridView2.IsCurrentCellInEditMode) + { + DataGridViewCell currentCell = dataGridView2.CurrentCell; + rowIndex = currentCell.RowIndex; // 当前单元格的行索引 + // 获取编辑控件 + } + + int write_result = 1; + + for (int i = 0; i <= index2; i++) + { + string name2 = (string)dataGridView2.Rows[i].Cells[0].Value; + // 查找特定 value 对应的 name + int writeindex = Array.FindIndex(writeConfig, myUnitClass => myUnitClass.name == name2.ToString()); + if (i != rowIndex) + { + dataGridView2.Rows[i].Cells[1].Value = writeConfig[writeindex].threshold; + } + + if (writeConfig[writeindex].name == "物料编码") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_wl) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + + yd_did_write_one(0xcf4e, bd_wl); + + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "供应商编码") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_cs) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + + yd_did_write_one(0xcf4f, bd_cs); + + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "生产日") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_day) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf45, bd_day); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "生产月份") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_month) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf47, bd_month); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + + } + else if (writeConfig[writeindex].name == "生产年份") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_year) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf48, bd_year); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "流水号") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_ls) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf4a, bd_ls); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "批次号") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_ls) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf50, bd_ls); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else + { + + if (writeConfig[writeindex].Svalue != null) + { + if (writeConfig[writeindex].threshold == writeConfig[writeindex].Svalue) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != "" && writeConfig[writeindex].threshold != null) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + + } + } + + if (flag_heart == 0) + { + return; + } + if (write_result ==0 && flag_sn == 1) + { + for (int i = 0; i < writeConfig.Length; i++) + { + if (writeConfig[i].Svalue != null && writeConfig[i].Svalue != "(不填)") + { + string hexString = writeConfig[i].DID; + ushort did = ushort.Parse(hexString, System.Globalization.NumberStyles.HexNumber); + yd_did_write_one(did, writeConfig[i].Svalue); + } + + } + } + + if (smt_result == 0 && flag_sn==1) + { + label2.BackColor = Color.DarkGray; + flag_result = 0; + } + + if (smt_result == 0) + { + label2.BackColor = Color.DarkGray; + flag_result = 0; + } + + if (smt_result == 1) + { + + label2.Text = "测试通过"+out_time; + label2.BackColor = Color.Green; + flag_result = 1; + flag_pass = "PASS"; + //-----结束测试----- + //flag_heart = 0; + //out_time = -1; + //_yd_disconnet(); + //flag_connet = 0; + //button1.Text = "开始测试"; + + if (checkBox2.Checked == true && comboBox1.Text != "" && flag_dy == 0 && flag_sn==1) + { + save_zb(); + PaperSize paperSize = new PaperSize("Custom", 260, 75); // 宽度500, 高度700 + // paperSize.RawKind = (int)PaperKind.Custom; + printDocument1.DefaultPageSettings.PaperSize = paperSize; + printDocument1.DefaultPageSettings.Landscape = false; + + printDocument1.DefaultPageSettings.Margins.Top = 0; + printDocument1.DefaultPageSettings.Margins.Left = 0; + pagesToPrint = Convert.ToInt32(comboBox2.Text); + + //PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog(); + //printPreviewDialog.Document = printDocument1; + + //try + //{ + // printPreviewDialog.ShowDialog(); + //} + //catch (Exception ex) + //{ + // MessageBox.Show(ex.Message); + //} + + printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //"导出为WPS PDF"; // + printDocument1.Print(); + + flag_dy = 1; + } + } + } + + if (checkBox3.Checked) + { + int smt_result = 1; + + dataGridView2.Rows[0].Cells[1].Value = readConfig[2].threshold; + dataGridView2.Rows[1].Cells[1].Value = readConfig[3].threshold; + dataGridView2.Rows[2].Cells[1].Value = writeConfig[5].threshold; + dataGridView2.Rows[3].Cells[1].Value = writeConfig[6].threshold; + dataGridView2.Rows[4].Cells[1].Value = writeConfig[7].threshold; + dataGridView2.Rows[5].Cells[1].Value = writeConfig[8].threshold; + dataGridView2.Rows[6].Cells[1].Value = writeConfig[14].threshold; + dataGridView2.Rows[7].Cells[1].Value = writeConfig[13].threshold; + dataGridView2.Rows[8].Cells[1].Value = writeConfig[12].threshold; + + if (jy_imei == readConfig[2].threshold && readConfig[2].threshold != "") + { + dataGridView2.Rows[0].Cells[2].Value = "pass"; + dataGridView2.Rows[0].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[0].Cells[2].Value = "fail"; + dataGridView2.Rows[0].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_iccid == readConfig[3].threshold && readConfig[3].threshold != "") + { + dataGridView2.Rows[1].Cells[2].Value = "pass"; + dataGridView2.Rows[1].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[1].Cells[2].Value = "fail"; + dataGridView2.Rows[1].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_year == writeConfig[7].threshold && jy_year == bd_year && bd_year == writeConfig[7].threshold && writeConfig[7].threshold != "") + { + dataGridView2.Rows[2].Cells[2].Value = "pass"; + dataGridView2.Rows[2].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[2].Cells[2].Value = "fail"; + dataGridView2.Rows[2].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_month == writeConfig[6].threshold && jy_month == bd_month && bd_month == writeConfig[6].threshold && writeConfig[6].threshold != "") + { + dataGridView2.Rows[3].Cells[2].Value = "pass"; + dataGridView2.Rows[3].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[3].Cells[2].Value = "fail"; + dataGridView2.Rows[3].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + + if (jy_day == writeConfig[5].threshold && jy_day == bd_day && bd_day == writeConfig[5].threshold && writeConfig[5].threshold != "") + { + dataGridView2.Rows[4].Cells[2].Value = "pass"; + dataGridView2.Rows[4].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[4].Cells[2].Value = "fail"; + dataGridView2.Rows[4].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + + if (jy_ls == writeConfig[8].threshold && jy_ls == bd_ls && bd_ls == writeConfig[8].threshold && writeConfig[8].threshold != "") + { + dataGridView2.Rows[5].Cells[2].Value = "pass"; + dataGridView2.Rows[5].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[5].Cells[2].Value = "fail"; + dataGridView2.Rows[5].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + + if (jy_ls == writeConfig[14].threshold && jy_ls == bd_ls && bd_ls == writeConfig[14].threshold && writeConfig[14].threshold != "") + { + dataGridView2.Rows[6].Cells[2].Value = "pass"; + dataGridView2.Rows[6].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[6].Cells[2].Value = "fail"; + dataGridView2.Rows[6].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_cs == writeConfig[13].threshold && jy_cs == bd_cs && bd_cs == writeConfig[13].threshold && writeConfig[13].threshold != "") + { + dataGridView2.Rows[7].Cells[2].Value = "pass"; + dataGridView2.Rows[7].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[7].Cells[2].Value = "fail"; + dataGridView2.Rows[7].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_wl == writeConfig[12].threshold && jy_wl == bd_wl && bd_wl == writeConfig[12].threshold && writeConfig[12].threshold != "") + { + dataGridView2.Rows[8].Cells[2].Value = "pass"; + dataGridView2.Rows[8].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[8].Cells[2].Value = "fail"; + dataGridView2.Rows[8].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (smt_result == 1) + { + string str_get_sn = "YD" + writeConfig[7].threshold.Substring(1, 1) + writeConfig[6].threshold.Substring(1, 1) + writeConfig[5].threshold + writeConfig[8].threshold.Substring(2, 4); + if (str_get_sn == textBox3.Text) + { + smt_result *= 1; + label10.Text = " "; + } + else + { + smt_result *= 0; + label10.Text = "SN号有误"; + label10.ForeColor = Color.Red; + } + } + else + { + return; + } + + if (smt_result == 1) + { + label2.Text = "测试通过"; + label2.BackColor = Color.Green; + flag_pass = "PASS"; + flag_result = 1; + + //flag_heart = 0; + //out_time = -1; + //_yd_disconnet(); + //flag_connet = 0; + //button1.Text = "开始测试"; + } + } + + } + + private void DataGridView2_CellClick(object sender, DataGridViewCellEventArgs e) + { + // 检查是否点击了按钮列 + if (e.ColumnIndex == dataGridView2.Columns["ButtonColumn"].Index && e.RowIndex >= 0) + { + // 获取点击的行索引 + //flag_write = 1; + int rowIndex = e.RowIndex; + object name = dataGridView2.Rows[rowIndex ].Cells[0].Value; + // 查找特定 value 对应的 name + int index = Array.FindIndex(writeConfig, myUnitClass => myUnitClass.name == name.ToString()); + UInt16 did = Convert.ToUInt16(writeConfig[index].DID, 16); + // object cellValue = dataGridView2.Rows[rowIndex].Cells[1].Value; + string data = writeConfig[e.RowIndex].threshold; + yd_did_write_one(did,data); + writeConfig[rowIndex].threshold = ""; + //MessageBox.Show($"Button clicked in row {rowIndex + 1}"); // 行索引从 0 开始,显示时加 1 + } + } + + private void cmbPort_DropDown(object sender, EventArgs e) + { + cmbBox_Port_Update(); + } + + private string get_date_time() + { + string strdate = string.Empty; + strdate = DateTime.Now.ToString(); + return strdate; + } + string tempData=" "; + private void save_zb() + { + string str_get_sn = "YD" + writeConfig[7].threshold.Substring(1, 1) + writeConfig[6].threshold.Substring(1, 1) + writeConfig[5].threshold + writeConfig[8].threshold.Substring(2, 4); + tempData = tempData + get_date_time() + "," + "E-2" + writeConfig[0].threshold + "," + + readConfig[1].threshold + "," +str_get_sn+ ","+readConfig[2].threshold+","+ readConfig[3].threshold+","+flag_pass; + writeA883SmtLogCSV2(tempData); + tempData = " "; + } + + public static void CreateDirectoryOrFile(string newFileName) + { + + string strdate = string.Empty; + strdate = DateTime.Now.ToString(); + string str = ""; + if (strdate.IndexOf("/") != -1) + { + str = strdate.Replace("/", "_"); + } + + string[] sArray = str.Split(' ');// + + + //string path = Application.StartupPath + @"\configfile\研发\" + sArray[0]; + string path = @"C:\YD10日志\";//+ sArray[0]; + if (!Directory.Exists(path)) + { + Directory.CreateDirectory(path); + + /* + if (!File.Exists(path + "\\")) + { + File.Create(path + "\\" + newFileName).Close(); + } + */ + + } + + } + + + + public void writeA883SmtLogCSV2(string data)//保存路径, 索引设备 + { + CreateDirectoryOrFile("FileName.log"); + + string strdate = string.Empty; + strdate = DateTime.Now.ToString(); + string str = ""; + string str2 = ""; + string testtime = DateTime.Now.ToShortTimeString().ToString(); + + if (strdate.IndexOf("/") != -1) + { + str = strdate.Replace("/", "_"); + } + + if (testtime.IndexOf(":") != -1) + { + str2 = testtime.Replace(":", "点"); + } + // 使用正确的 Split 方法 + string[] sArray = str.Split(' '); // 以空格分隔 + + string smt_log_path2 = @"C:\YD10日志\";//+ sArray[0]; + string str_get_sn = "YD" + writeConfig[7].threshold.Substring(1, 1) + writeConfig[6].threshold.Substring(1, 1) + writeConfig[5].threshold + writeConfig[8].threshold.Substring(2,4); + //判断是否已经有了这个文件 + + FileStream fs = null; + StreamWriter sw = null; + + try + { + + if (!System.IO.File.Exists($"{smt_log_path2}\\{sArray[0]}.CSV"))//路径 日期 序列号 + { + //没有则创建这个文件 + fs = new FileStream($"{smt_log_path2}\\{sArray[0]}.CSV", FileMode.Create, FileAccess.Write);//创建 + sw = new StreamWriter(fs); + + } + else + { + /* + fs = new FileStream($"{smt_log_path1}\\{My_Log[LogIndex_T].Barcode}_{sArray[0]}.log", FileMode.Open, FileAccess.Write); + sw = new StreamWriter(fs);*/ + sw = File.AppendText($"{smt_log_path2}\\{sArray[0]}.CSV"); + } + + + + sw.WriteLine(data); + + if (sw != null) + { + sw.Close(); + } + if (fs != null) + { + fs.Close(); + } + } + catch (Exception ex) + { + if (sw != null) + { + sw.Close(); + } + if (fs != null) + { + fs.Close(); + } + } + + //My_Log[LogIndex_T].Status = false; + + + } + + + int time = 0,time_over=0, flag_connet=0,flag_heart,time2=0,flag_print=0; + private int pagesToPrint; // 要打印的张数 + private BarCodeClass bcc = new BarCodeClass(); + private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) + { + //if ( flag_print == 0) //保存数据 + //{ + // save_zb(); + + //} + + + if (flag_print == 1) + { + string tm2 = "#3-868022069907587 898604F3102340070986&39121-A081-01003560820240724000001"; + bcc.QuickMarkHeight = 100; + bcc.QuickMarkWidth = 100; + Image image2 = bcc.CreateQuickMark(tm2); + e.Graphics.DrawImage(image2, 175, 8, 70, 70); + e.Graphics.DrawString("雅 迪 科 技 集 团 有 限 公 司", new Font(new FontFamily("宋体"), 9, FontStyle.Bold), System.Drawing.Brushes.Black, 28, 0); + e.Graphics.DrawString("名称:IOT (JW) 供应商代码:35608", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 13); + e.Graphics.DrawString("物料编码:39110-0047-0100", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 23); + e.Graphics.DrawString("电压:48-72V", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 130, 23); + e.Graphics.DrawString("HW:E-213", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 33); + e.Graphics.DrawString("类型:一键启动/无电池/无手柄", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 50, 33); + e.Graphics.DrawString("SW:X450805", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 43); + //e.Graphics.DrawString("SN:" + myConfig[6].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 70, 43); + e.Graphics.DrawString("IMEI:868022069907587", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 53); + e.Graphics.DrawString("ICCID:898604F3102340070986" + readConfig[3].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 63); + flag_print = 0; + } + else + { + string tm = "#3-" + readConfig[2].threshold + " " + readConfig[3].threshold + "&" + writeConfig[12].threshold + "3560820" + + writeConfig[7].threshold + writeConfig[6].threshold + writeConfig[5].threshold + writeConfig[8].threshold; + string str_get_sn = "YD" + writeConfig[7].threshold.Substring(1, 1) + writeConfig[6].threshold.Substring(1, 1) + writeConfig[5].threshold + writeConfig[8].threshold.Substring(2, 4); + bcc.QuickMarkHeight = 100; + bcc.QuickMarkWidth = 100; + Image image = bcc.CreateQuickMark(tm); + e.Graphics.DrawImage(image, 175, 8, 70, 70); + e.Graphics.DrawString("雅 迪 科 技 集 团 有 限 公 司", new Font(new FontFamily("宋体"), 9, FontStyle.Bold), System.Drawing.Brushes.Black, 28, 0); + e.Graphics.DrawString("名称:"+ product + " 供应商代码:" + writeConfig[13].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 13); + e.Graphics.DrawString("物料编码:" + writeConfig[12].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 23); + //e.Graphics.DrawString("电压:48-72V", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 130, 23); + e.Graphics.DrawString("HW:" +"E-2"+ writeConfig[0].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 33); + // e.Graphics.DrawString("类型:一键启动/无电池/无手柄", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 50, 33); + e.Graphics.DrawString("SW:" + readConfig[1].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 43); + e.Graphics.DrawString("SN:" + str_get_sn, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 70, 43); + e.Graphics.DrawString("IMEI:" + readConfig[2].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 53); + e.Graphics.DrawString("ICCID:" + readConfig[3].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 63); + } + + pagesToPrint--; + if (pagesToPrint <= 0) + { + e.HasMorePages = false; + } + else + { + e.HasMorePages = true; + } + + } + + private void dataGridView2_CellValueChanged(object sender, DataGridViewCellEventArgs e) + { + if (dataGridView2.IsCurrentCellInEditMode) + { + DataGridViewCell currentCell = dataGridView2.CurrentCell; + int rowIndex = currentCell.RowIndex; // 当前单元格的行索引 + if (e.RowIndex == rowIndex) + { + object newValue = dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; + writeConfig[e.RowIndex].threshold = (string)newValue; + flag_write = 1; + time2 = 20; + } + } + } + + public void GetPrinter() + { + //string strList = ""; + //System.Drawing.Printing.PrinterSettings.StringCollection PrinterList = System.Drawing.Printing.PrinterSettings.InstalledPrinters; + //foreach (var item in PrinterList) + //{ + // strList += item + ","; + // comboBox1.Items.Add(item); + //} + //return strList; + PrintDocument printDoc = new PrintDocument(); + PrinterSettings printerSettings; + + foreach (string printerName in PrinterSettings.InstalledPrinters) + { + printerSettings = new PrinterSettings(); + printerSettings.PrinterName = printerName; + printDoc.PrinterSettings = printerSettings; + if (printerName!= "Microsoft Print to PDF") { + comboBox1.Items.Add(printerName); + } + //Console.WriteLine(printerName); + } + } + + private void button3_Click(object sender, EventArgs e) + { + PaperSize paperSize = new PaperSize("Custom", 260, 75); // 宽度500, 高度700 + // paperSize.RawKind = (int)PaperKind.Custom; + printDocument1.DefaultPageSettings.PaperSize = paperSize; + printDocument1.DefaultPageSettings.Landscape = false; + + printDocument1.DefaultPageSettings.Margins.Top = 0; + printDocument1.DefaultPageSettings.Margins.Left = 0; + pagesToPrint = 1; + + printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //"导出为WPS PDF"; // + printDocument1.Print(); + } + + + string bd_wl="", bd_cs = "", bd_year = "", bd_year2 = "", bd_month = "", bd_day = "", bd_day1 = "", bd_ls = ""; + + private void yD10ToolStripMenuItem_Click(object sender, EventArgs e) + { + this.Text = "YD10上位机测试V1.9"; + } + + private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + + } + + + int flag_save = 0; + private void yD07KToolStripMenuItem_Click(object sender, EventArgs e) + { + //this.Text = "YD07K上位机测试V1.9"; + + if (serialPort.IsOpen) + { + _yd_disconnet(); + serialPort.Close(); + }//关闭串口 + + // 创建 Form3 的实例 + Form3 form3 = new Form3(this); + + // 隐藏 Form1 + this.Hide(); + + + // 显示 Form3 + form3.ShowDialog(); + + //this.Close(); + + + } + + private void 手动打印ToolStripMenuItem_Click(object sender, EventArgs e) + { + save_zb(); + PaperSize paperSize = new PaperSize("Custom", 260, 75); // 宽度500, 高度700 + // paperSize.RawKind = (int)PaperKind.Custom; + printDocument1.DefaultPageSettings.PaperSize = paperSize; + printDocument1.DefaultPageSettings.Landscape = false; + + printDocument1.DefaultPageSettings.Margins.Top = 0; + printDocument1.DefaultPageSettings.Margins.Left = 0; + pagesToPrint = 1;//Convert.ToInt32(comboBox2.Text); + + printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //"导出为WPS PDF"; // + printDocument1.Print(); + } + + string jy_iccid = "", jy_imei = "", jy_wl = "", jy_cs = "", jy_year = "", jy_month = "", jy_day="", jy_ls = ""; + private void textBox2_TextChanged(object sender, EventArgs e) + { + //#3-868022069907587 898604F3102340070986&39121-A081-01003560820240724000001 + if (textBox2.Text.Length == 74) + { + jy_imei = textBox2.Text.Substring(3, 15); + jy_iccid = textBox2.Text.Substring(19, 20); + jy_wl= textBox2.Text.Substring(40, 15); + jy_cs = textBox2.Text.Substring(55, 5); + jy_year= textBox2.Text.Substring(62,2 ); + jy_month = textBox2.Text.Substring(64, 2); + jy_day = textBox2.Text.Substring(66, 2); + jy_ls = textBox2.Text.Substring(68, 6); + label7.Text = ""; + } + else + { + jy_iccid = ""; + jy_imei = ""; + jy_wl = ""; + jy_cs = ""; + jy_year = ""; + jy_month = ""; + jy_day = ""; + jy_ls = ""; + if (textBox2.Text.Length != 0) + { + label7.Text = "长度有误"; + } + else + { + label7.Text = ""; + } + } + } + + private void checkBox3_CheckedChanged(object sender, EventArgs e) + { + if (checkBox3.Checked) + { + textBox2.Enabled = true; + textBox3.Enabled = true; + index = 0; + index2 = 0; + this.dataGridView1.Rows.Clear(); + this.dataGridView2.Rows.Clear(); + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "设备IMEI"; + dataGridView2.Rows[index].Cells[1].Value = readConfig[2].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "设备ICCID"; + dataGridView2.Rows[index].Cells[1].Value = readConfig[3].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产日"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[5].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产月份"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[6].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产年份"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[7].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "流水号"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[8].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "批次号"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[14].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "供应商编码"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[13].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "物料编码"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[12].threshold; + + } + else + { + textBox2.Enabled = false; + textBox3.Enabled = false; + index = 0; + index2 = 0; + this.dataGridView1.Rows.Clear(); + this.dataGridView2.Rows.Clear(); + } + } + + private void Form1_FormClosing(object sender, FormClosingEventArgs e) + { + JObject setData_jsonObject = new Newtonsoft.Json.Linq.JObject(); + setData_jsonObject.Add("打印机", comboBox1.Text); + setData_jsonObject.Add("张数", comboBox2.Text); + setData_jsonObject.Add("自动打印机", checkBox2.Checked); + // setData_jsonObject.Add("自动蓝牙连接", checkBox1.Checked); + setData_jsonObject.Add("号码校验", checkBox3.Checked); + string config_file_str = setData_jsonObject.ToString(); + string savePath = Application.StartupPath + @"\YD10配置.json"; + System.IO.File.WriteAllText(savePath, config_file_str, Encoding.UTF8); + } + + int flag_sn = 0; + private void textBox1_TextChanged(object sender, EventArgs e) + { + if (textBox1.Text.Length == 34) + { + bd_wl = textBox1.Text.Substring(0, 15); + bd_cs = textBox1.Text.Substring(15, 5); + bd_year = textBox1.Text.Substring(22, 2); + bd_month = textBox1.Text.Substring(24, 2); + bd_day = textBox1.Text.Substring(26, 2); + bd_ls = textBox1.Text.Substring(28, 6); + //bd_sn= textBox1.Text.Substring(23, 1)+ textBox1.Text.Substring(25, 1)+ textBox1.Text.Substring(26, 2)+ textBox1.Text.Substring(31, 3); + label5.Text = ""; + flag_sn = 1; + } + else + { + bd_wl =""; + bd_cs = ""; + bd_year = ""; + bd_year2 = ""; + bd_month = ""; + bd_day = ""; + bd_day1 = ""; + bd_ls = ""; + //bd_sn = ""; + flag_sn = 0; + if (textBox1.Text.Length != 0) + { + label5.Text = "长度有误"; + } + else + { + label5.Text = ""; + } + } + } + + private void 打印较准页ToolStripMenuItem_Click(object sender, EventArgs e) + { + PaperSize paperSize = new PaperSize("Custom", 260, 75); // 宽度500, 高度700 + // paperSize.RawKind = (int)PaperKind.Custom; + printDocument1.DefaultPageSettings.PaperSize = paperSize; + printDocument1.DefaultPageSettings.Landscape = false; + + printDocument1.DefaultPageSettings.Margins.Top = 0; + printDocument1.DefaultPageSettings.Margins.Left = 0; + pagesToPrint = 1; + flag_print = 1; + + printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //"导出为WPS PDF"; // + printDocument1.Print(); + } + + + private void 标定信息设置ToolStripMenuItem_Click(object sender, EventArgs e) + { + Form2 form2 = new Form2(); + form2.Form2Closed += Form2_Closed; + form2.Show(); + } + + private void Form2_Closed() + { + read(); + index = 0; + index2 = 0; + this.dataGridView1.Rows.Clear(); + this.dataGridView2.Rows.Clear(); + } + + + int out_time = -1, flag_result=1; + //private void button1_Click(object sender, EventArgs e) + //{ + // if (!serialPort.IsOpen) + // { + // txtStatus.Text = "请先打开串口!"; + // return; + // } + // if (button1.Text=="开始测试") + // { + // clean(); + // out_time = 0; + // label2.Text = "测试开始"; + // //_yd_disconnet(); + // flag_connet = 1; + // button1.Text ="结束测试"; + // } + // else if (button1.Text == "结束测试") + // { + // flag_heart = 0; + // _yd_disconnet(); + // flag_connet = 0; + // out_time = -1; + // button1.Text = "开始测试"; + // label2.Text = "测试已结束"; + // } + + //} + + private void clean() + { + for (int i = 0; i < readConfig.Length; i++) + { + readConfig[i].threshold = ""; + } + for (int i = 0; i < writeConfig.Length; i++) + { + writeConfig[i].threshold = ""; + writeConfig[i].Bvalue = false; + } + this.Invoke(new Action(() => + { + label2.Text = "等待测试"; + label2.BackColor = Color.DarkGray; + })); + textBox1.Text = ""; + textBox2.Text = ""; + textBox3.Text = ""; + flag_gnss = 0; + heart_out = 0; + flag_dy = 0; + flag_result = 0; + flag_pass = "FAIL"; + Heart = false; + heart = false; + } + + + int did_i, flag_write,heart_out,time_heart; + bool heart=false, Heart=false; + private void timer2_Tick(object sender, EventArgs e) + { + time++; + time2++; + time_heart++; //15次约为1s + //超时机制 + if (time2 > 15 /*&& out_time<120 */&& out_time>=0) + { + time2 = 0; + out_time++; + if (flag_result == 0) + { + label2.Text = "测试开始" + out_time; + + } + //if (flag_connet == 1 && out_time > 10) + //{ + // label2.Text = "连接超时"; + // label2.BackColor = Color.Red; + // flag_heart = 0; + // flag_connet = 0; + // out_time = -1; + // button1.Text = "开始测试"; + //} + //else + //{ + // label2.Text = "连接中..." + Convert.ToString(out_time); + //} + + //if (out_time>=120) + //{ + // label2.Text = "测试超时"; + // label2.BackColor = Color.Red; + // flag_heart = 0; + // flag_connet = 0; + // out_time = -1; + // button1.Text = "开始测试"; + //} + } + + // + + if (flag_connet==1) + { + label2.Text = "连接中..."; + _yd_connet(); + } + if (time > 30 && flag_heart==1) //3s发送一次心跳包(改为2s) + { + time = 0; + yd_heart(); + } + + if (time_heart >=8 && flag_heart == 1) //500ms来检测一次保活 + { + time_heart = 0; + if (!Heart && heart)//说明心跳断开一次 + { + heart_out++; + if (heart_out >= 10)//5S不回复说明设备已经离线 + { + //-----结束测试----- + flag_heart = 0; + out_time = -1; + _yd_disconnet(); + flag_connet = 0; + //button1.Text = "开始测试"; + label2.Text = "设备已离线"; + + clean(); + } + } + else + { + heart = Heart; + Heart = false; + heart_out = 0; + } + } + + if (flag_write == 1 && time2>0) + { + time2--; + if (time2==0) + { + flag_write = 0; + label2.Text = "写入响应超时"; + } + } + if (flag_heart == 1 && flag_write == 0) + { + zd_test(did_i); + did_i++; + if (did_i > 40) + { + did_i = 0; + } + + } + + } + } + + } + diff --git a/YD10测试机/Form1.resx b/YD10测试机/Form1.resx new file mode 100644 index 0000000..07c2bfb --- /dev/null +++ b/YD10测试机/Form1.resx @@ -0,0 +1,1313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 21, 17 + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + 107, 17 + + + 256, 17 + + + 346, 17 + + + 44 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAMMOAADDDgAAAAAAAAAA + AAD///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///+/v7/+/v7//T09P/z8/P/8/Pz//Pz8//z8/P/9fX1//v7+/////////////////////////////// + //////////////39/f/y8vL/4+Pj/93d3f/e3t7/5ubm//b29v////////////////////////////// + ///39/f/6enp/+Hh4f/f39//397f/9/e3//f3t//397f/9/e3//f3t//397f/9/e3//f3t//397f/9/e + 3//f3t//397f/97e3v/d3d3/3d3d/93d3f/e3t7/3t7e/+Hh4f/r6+v/+vr6//7+/v////////////// + //////////////////////////////7+/v/y8vL/5eXl/9/f3//d3d3/3d3d/93d3f/d3d3/3d3d/97e + 3v/e3t7/39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/9/f + 3//f39//39/f/9/f3//f39//39/f/9/f3//f39//39/f/97e3v/f39//39/f/9/f3//f39//39/f/9/f + 3//f39//39/f/9/f3//f39//39/f/9/f3//g4OD/6enp//f39//+/v7///////////////////////// + ///////////////////////////////////////////////////u7u7/t7e3/5ycnP+ampr/mpqa/5mZ + mf+goKD/wsLC/+zs7P/9/f3/////////////////////////////////9PT0/7Kysv9jY2P/SEhI/0tL + S/9sbGz/r6+v/+3t7f/+/v7////////////+/v7/6+vr/7Kxsv9zc3P/VFRU/01NTf9NTE3/TU1N/01N + Tf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TExM/0pKSv9JSUn/SkpK/0tL + S/9NTU3/VlZW/39/f//T09P/+vr6///////////////////////////////////////6+vr/1tbW/5eX + l/9mZmb/TU1N/0hISP9ISEj/SEhI/0lJSf9KSkr/SkpK/0xMTP9NTU3/TU1N/01NTf9NTU3/TU1N/05O + Tv9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09PT/9PT0//T09P/09P + T/9PT0//Tk5O/05OTv9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/1VV + Vf90dHT/s7Oz/+/v7//+/v7///////////////////////////////////////////////////////// + /////////////+vr6/+Ghob/Kioq/xgYGP8ZGRn/GRkZ/xsbG/85OTn/m5ub/+/v7/////////////// + ///////////////////t7e3/hISE/xoaGv8CAgL/BQUF/wwMDP84ODj/q6ur//X19f////////////Hw + 8f+dnJ3/MzIz/w4ODv8HBwf/BQUF/wUFBf8FBQX/BQUF/wUFBf8FBQX/BQUF/wUFBf8FBQX/BQUF/wUF + Bf8FBQX/BQUF/wUFBf8FBQX/BAQE/wQEBP8EBAT/BAQE/wUFBf8FBQX/ICAg/42Njf/u7u7///////// + /////////////////////////Pz8/8/Pz/9fX1//HR0d/wsLC/8FBQX/BAQE/wQEBP8DAwP/AwMD/wMD + A/8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BQUF/wUFBf8FBQX/BQUF/wUFBf8FBQX/BQUF/wUF + Bf8FBQX/BQUF/wUFBf8FBQX/BQUF/wUFBf8FBQX/BQUF/wUFBf8FBQX/BQUF/wQEBP8EBAT/BAQE/wQE + BP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BgYG/w0NDf86Ojr/sbGx//b29v////////////// + ////////////////////////////////////////////////////////+vr6/729vf84ODj/AAAA/wAA + AP8AAAD/AAAA/wMDA/9BQUH/xcXF//z8/P///////////////////////////+zs7P9+fn7/EhIS/wAA + AP8AAAD/AAAA/woKCv9iYmL/4+Pj////////////19fX/0lJSf8DAwP/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEB + Af8BAQH/AQEB/wAAAP8QEBD/eXl5/+rq6v/////////////////////////////////r6+v/f39//xcX + F/8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8EBAT/BQUF/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE + BP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE + BP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQEBP8EBAT/BAQE/wQE + BP8EBAT/AgIC/xEREf9tbW3/5eXl//////////////////////////////////////////////////// + ////////////////////////7Ozs/4iIiP8ZGRn/AAAA/wAAAP8AAAD/AAAA/xMTE/94eHj/5ubm//// + ////////////////////////7Ozs/35+fv8TExP/AAAA/wAAAP8AAAD/AgIC/z4+Pv/S0tL///////7+ + /v/CwsL/Jycn/wAAAP8AAAD/AAAA/wAAAP8BAQH/Dw8P/ysrK/8yMjL/MTEx/zExMf8yMjL/Kysr/w4O + Dv8BAQH/AAAA/wAAAP8AAAD/AAAA/wgICP8rKyv/Ozs7/zw8PP88PDz/Ozs7/0lJSf+bm5v/7+/v//// + /////////////////////////////9vb2/9KSkr/BAQE/wAAAP8AAAD/AAAA/wAAAP8ICAj/Li4u/0pK + Sv9OTk7/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01N + Tf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01N + Tf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/TU1N/01NTf9NTU3/UFBQ/319ff/j4+P///////// + ///////////////////////////////////////////////////////////////////+/v7/z8/P/0xM + TP8GBgb/AAAA/wAAAP8AAAD/AgIC/zAwMP+zs7P/+Pj4///////////////////////s7Oz/fn5+/xMT + E/8AAAD/AAAA/wAAAP8AAAD/LCws/8PDw//+/v7//f39/7u7u/8iIiL/AAAA/wAAAP8AAAD/AAAA/wQE + BP88PDz/sLCw/8zMzP/Jycn/ycnJ/8vLy/+vr6//PDw8/wQEBP8AAAD/AAAA/wAAAP8AAAD/HBwc/5iY + mP/R0dH/1NTU/9TU1P/U1NT/19fX/+jo6P/6+vr/////////////////////////////////0tLS/zQ0 + NP8AAAD/AAAA/wAAAP8AAAD/AAAA/xYWFv+FhYX/1NTU/9/f3//e3t7/3t/e/+Dg4P/h4eH/4eHh/+Hh + 4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh + 4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Hh + 4f/g4OD/39/f/97e3v/e3t7/5eXl//n5+f////////////////////////////////////////////// + ///////////////////////////////////z8/P/nZ2d/yEhIf8AAAD/AAAA/wAAAP8AAAD/DAwM/2Fh + Yf/b29v//////////////////////+zs7P9+fn7/ExMT/wAAAP8AAAD/AAAA/wAAAP8nJyf/vb29//39 + /f/8/Pz/ubm5/yIiIv8AAAD/AAAA/wAAAP8AAAD/BQUF/0tLS//e3t7//////////////////////93d + 3f9MTEz/BQUF/wAAAP8AAAD/AAAA/wAAAP8iIiL/uLi4//z8/P////////////////////////////7+ + /v/////////////////////////////////S0tL/MzMz/wAAAP8AAAD/AAAA/wAAAP8AAAD/GRkZ/5qa + mv/29vb////////////9/f3/7u7u/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq + 6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq + 6v/q6ur/6urq/+rq6v/q6ur/6urq/+rq6v/q6ur/6urq/+7u7v/7+/v///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///c3Nz/YWFh/wsLC/8AAAD/AAAA/wAAAP8AAAD/ISEh/5ubm//y8vL/////////////////7Ozs/35+ + fv8TExP/AAAA/wAAAP8AAAD/AAAA/yUlJf+8vLz//f39//39/f+5ubn/IiIi/wAAAP8AAAD/AAAA/wAA + AP8FBQX/TExM/+Dg4P//////////////////////39/f/0xMTP8FBQX/AAAA/wAAAP8AAAD/AAAA/yIi + Iv+3t7f//Pz8/////////////////////////////////////////////////////////////////9PT + 0/83Nzf/AAAA/wAAAP8AAAD/AAAA/wAAAP8ZGRn/mJiY//Pz8////////////+Pj4/+FhYX/a2tr/21t + bf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21t + bf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21tbf9tbW3/bW1t/21t + bf9ubm7/gICA/8LCwv/29vb///////////////////////////////////////////////////////// + //////////////////////////////////////////////n5+f+zs7P/Ly4v/wEBAf8AAAD/AAAA/wAA + AP8FBQX/SEhI/8rKyv/9/f3////////////s7Oz/fn5+/xMTE/8AAAD/AAAA/wAAAP8AAAD/JSUl/7u7 + u//9/f3//f39/7m5uf8iIiL/AAAA/wAAAP8AAAD/AAAA/wQEBP9HR0f/0NDQ//Pz8//w8PD/8PDw//Ly + 8v/Q0ND/R0dH/wUFBf8AAAD/AAAA/wAAAP8AAAD/ICAg/66urv/v7+//9PT0//Pz8//z8/P/9/f3//39 + /f/+/v7//v7+////////////////////////////1dXV/zs7O/8BAQH/AAAA/wAAAP8AAAD/AAAA/xkZ + Gf+YmJj/8/Pz////////////0dHR/zU1Nf8KCgr/Dg4O/w4ODv8ODg7/Dg4O/w4ODv8NDQ3/DQ0N/w0N + Df8NDQ3/DQ0N/w0NDf8NDQ3/Dg4O/w4ODv8ODg7/Dg4O/w4ODv8ODg7/Dg4O/w4ODv8NDQ3/DQ0N/w0N + Df8NDQ3/DQ0N/w0NDf8NDQ3/Dg4O/w4ODv8ODg7/Dg4O/w0NDf8YGBj/ZWVl/+Pj4/////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+fm5/94eHj/EhIS/wAAAP8AAAD/AAAA/wAAAP8VFRX/f39//+no6f///////////+zs + 7P9+fn7/ExMT/wAAAP8AAAD/AAAA/wAAAP8kJCT/u7u7//39/f/9/f3/ubm5/yIiIv8AAAD/AAAA/wAA + AP8AAAD/AwMD/ykpKf95eXn/jY2N/4uLi/+Li4v/jY2N/3l5ef8qKir/AwMD/wAAAP8AAAD/AAAA/wAA + AP8VFRX/bm5u/5iYmP+bm5v/mZmZ/5qamv+urq7/4+Pj//z8/P/+/v7///////////////////////// + ///W1tb/Pj4+/wICAv8AAAD/AAAA/wAAAP8AAAD/GRkZ/5iYmP/z8/P////////////Ozs7/KCgo/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP84ODj/2dnZ//////////////////////////////////////////////////// + /////////////////////////////////////////////////////////Pz8/8bGxv89PT3/AwMD/wAA + AP8AAAD/AAAA/wEBAf8zMzP/tra2//n5+f//////7Ozs/35+fv8SEhL/AAAA/wAAAP8AAAD/AAAA/yMj + I/+6urr//Pz8//39/f+5ubn/IiIi/wAAAP8AAAD/AAAA/wAAAP8AAAD/BgYG/xMTE/8WFhb/FRUV/xUV + Ff8WFhb/ExMT/wcHB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wMDA/8SEhL/GRkZ/xoaGv8ZGRn/FxcX/zAw + MP+cnJz/8fHx/////////////////////////////////9fX1/9BQUH/AgIC/wAAAP8AAAD/AAAA/wAA + AP8ZGRn/mJiY//Pz8////////////8/Pz/8qKir/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCgr/KSkp/zY2 + Nv83Nzf/Nzc3/zc3N/83Nzf/Ly8v/w4ODv8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8VFRX/Ly8v/zU1 + Nf80NDT/NDQ0/zQ0NP8wMDD/Ghoa/wQEBP8AAAD/AAAA/wAAAP8AAAD/AAAA/zExMf/X19f///////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////7u7u/4yMjP8aGhr/AAAA/wAAAP8AAAD/AAAA/wwMDP9lZWX/3t7e//// + ///s7Oz/fn5+/xISEv8AAAD/AAAA/wAAAP8AAAD/IyMj/7m5uf/8/Pz//f39/7m5uf8iIiL/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DQ0N/319ff/r6+v///////////////////////// + ////////2NjY/0JCQv8DAwP/AAAA/wAAAP8AAAD/AAAA/xkZGf+YmJj/8/Pz////////////z8/P/yoq + Kv8AAAD/AAAA/wAAAP8AAAD/AAAA/yQkJP+jo6P/1dXV/9fX1//X19f/19fX/9ra2v+4uLj/NDQ0/wEB + Af8AAAD/AAAA/wAAAP8AAAD/CgoK/1RUVP+/v7//1tbW/9TU1P/U1NT/1tbW/8TExP9oaGj/Dw8P/wAA + AP8AAAD/AAAA/wAAAP8AAAD/MTEx/9fX1/////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+/v7/09PT/1JS + Uv8HBwf/AAAA/wAAAP8AAAD/AAAA/yUlJf+hoaH/9fX1/+3t7f9+fn7/ExMT/wAAAP8AAAD/AAAA/wAA + AP8jIyP/uLi4//z8/P/8/Pz/ubm5/yEhIf8AAAD/AAAA/wAAAP8AAAD/AQEB/woKCv8UFBT/FhYW/xYW + Fv8WFhb/FhYW/xMTE/8HBwf/AQEB/wAAAP8AAAD/AAAA/wAAAP8FBQX/EhIS/xcXF/8YGBj/GBgY/xYW + Fv8oKCj/iYmJ/+3t7f/////////////////////////////////Y2Nj/Q0ND/wMDA/8AAAD/AAAA/wAA + AP8AAAD/GRkZ/5eXl//y8vL////////////Pz8//Kioq/wAAAP8AAAD/AAAA/wAAAP8AAAD/Kioq/8PD + w////////////////////////////93d3f8/Pz//AQEB/wAAAP8AAAD/AAAA/wAAAP8MDAz/ZmZm/+fn + 5///////////////////////7u7u/35+fv8SEhL/AAAA/wAAAP8AAAD/AAAA/wAAAP8wMDD/19fX//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////29vb/ra2t/zU1Nf8DAwP/AAAA/wAAAP8AAAD/BQUF/01N + Tf/S0tL/6+vr/39/f/8TExP/AAAA/wAAAP8AAAD/AAAA/yMjI/+4uLj//Pz8//z8/P+5ubn/ISEh/wAA + AP8AAAD/AAAA/wAAAP8JCQn/QEBA/39/f/+MjIz/i4uL/4uLi/+NjY3/enp6/y0tLf8DAwP/AAAA/wAA + AP8AAAD/AAAA/xwcHP9zc3P/kpKS/5OTk/+Tk5P/kpKS/5qamv/Hx8f/9vb2//////////////////// + /////////////9jY2P9DQ0P/AwMD/wAAAP8AAAD/AAAA/wAAAP8YGBj/lZWV//Ly8v///////////8/P + z/8qKir/AAAA/wAAAP8AAAD/AAAA/wAAAP8qKir/wcHB//39/f//////////////////////2tra/z4+ + Pv8BAQH/AAAA/wAAAP8AAAD/AAAA/wwMDP9lZWX/5eXl///////////////////////s7Oz/fHx8/xIS + Ev8AAAD/AAAA/wAAAP8AAAD/AAAA/zAwMP/X19f///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///t7e3/nZ2d/0FBQf8cHBz/FhYW/xUVFf8XFxf/NjY2/6enp//h4eH/gICA/xMTE/8AAAD/AAAA/wAA + AP8AAAD/IyMj/7i4uP/8/Pz//Pz8/7m5uf8hISH/AAAA/wAAAP8AAAD/AAAA/w8PD/9vb2//29vb//Hx + 8f/v7+//7+/v//Ly8v/S0tL/TU1N/wYGBv8AAAD/AAAA/wAAAP8AAAD/Li4u/7y8vP/x8fH/8vLy//Ly + 8v/y8vL/8vLy//f39//9/f3/////////////////////////////////2NjY/0NDQ/8DAwP/AAAA/wAA + AP8AAAD/AAAA/xgYGP+VlZX/8vLy////////////z8/P/yoqKv8AAAD/AAAA/wAAAP8AAAD/AAAA/yoq + Kv/BwcH//f39///////////////////////a2tr/Pj4+/wEBAf8AAAD/AAAA/wAAAP8AAAD/DAwM/2Vl + Zf/l5eX//////////////////////+zs7P98fHz/EhIS/wAAAP8AAAD/AAAA/wAAAP8AAAD/MDAw/9fX + 1/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////7+/v/v7+//ysrK/6Ghof+NjY3/i4uL/5OT + k/+jo6P/z8/P/+Tk5P9/f3//ExMT/wAAAP8AAAD/AAAA/wAAAP8jIyP/uLi4//z8/P/8/Pz/ubm5/yEh + If8AAAD/AAAA/wAAAP8AAAD/EBAQ/3d3d//s7Oz//////////////////////+Hh4f9TU1P/BwcH/wAA + AP8AAAD/AAAA/wAAAP8wMDD/yMjI//////////////////////////////////////////////////// + ///////////////////Y2Nj/Q0ND/wMDA/8AAAD/AAAA/wAAAP8AAAD/GBgY/5WVlf/y8vL///////// + ///Pz8//Kioq/wAAAP8AAAD/AAAA/wAAAP8AAAD/Kioq/8LCwv///////////////////////////9zc + 3P8/Pz//AQEB/wAAAP8AAAD/AAAA/wAAAP8MDAz/ZWVl/+fn5///////////////////////7u7u/319 + ff8SEhL/AAAA/wAAAP8AAAD/AAAA/wAAAP8wMDD/19fX//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////+Pj4//Ly8v/y8vL/9PT0//f39//+/v7/7e3t/4CAgP8TExP/AAAA/wAA + AP8AAAD/AAAA/yMjI/+4uLj//Pz8//z8/P+5ubn/ISEh/wAAAP8AAAD/AAAA/wAAAP8QEBD/eHh4/+3t + 7f//////////////////////4uLi/1RUVP8HBwf/AAAA/wAAAP8AAAD/AAAA/zExMf/Jycn///////// + /////////////////////////////////////////////////////////////9fX1/9BQUH/AgIC/wAA + AP8AAAD/AAAA/wAAAP8YGBj/lZWV//Ly8v///////////8/Pz/8qKir/AAAA/wAAAP8AAAD/AAAA/wAA + AP8nJyf/s7Oz/+rq6v/t7e3/7Ozs/+zs7P/v7+//ysrK/zk5Of8BAQH/AAAA/wAAAP8AAAD/AAAA/wsL + C/9eXl7/1dXV//Dw8P/t7e3/7e3t//Dw8P/c3Nz/dHR0/xAQEP8AAAD/AAAA/wAAAP8AAAD/AAAA/zAw + MP/X19f///////////////////////////////////////////////////////////////////////// + ///////////////////////////////////+/v7/9vb2/+Xl5f/f39//39/f/9/f3//g4OD/4ODg/+Dg + 4P/g4OD/4ODg/+Hh4f/Pz8//b29v/xEREf8AAAD/AAAA/wAAAP8AAAD/IyMj/7i4uP/8/Pz//Pz8/7m5 + uf8hISH/AAAA/wAAAP8AAAD/AAAA/w4ODv9mZmb/ycnJ/93d3f/b29v/29vb/97e3v/AwMD/R0dH/wYG + Bv8AAAD/AAAA/wAAAP8AAAD/Kioq/66urv/e3t7/39/f/9/f3//f39//5eXl//b29v/+/v7///////// + ////////////////////////19fX/0BAQP8CAgL/AAAA/wAAAP8AAAD/AAAA/xgYGP+VlZX/8vLy//// + ////////z8/P/yoqKv8AAAD/AAAA/wAAAP8AAAD/AAAA/xUVFf9eXl7/fHx8/319ff99fX3/fX19/35+ + fv9ra2v/Hx8f/wEBAf8AAAD/AAAA/wAAAP8AAAD/BgYG/zQ0NP92dnb/hISE/4ODg/+Dg4P/hISE/3l5 + ef9AQED/CQkJ/wAAAP8AAAD/AAAA/wAAAP8AAAD/MDAw/9fX1/////////////////////////////// + //////////////////////////////////////////////////////////////////////////////j4 + +P/AwMD/a2tr/1JSUv9SUlL/UlJS/1JSUv9SUlL/UlJS/1JSUv9SUlL/U1NT/0xMTP8pKSn/BgYG/wAA + AP8AAAD/AAAA/wAAAP8jIyP/uLi4//z8/P/8/Pz/ubm5/yEhIf8AAAD/AAAA/wAAAP8AAAD/BQUF/yEh + If9BQUH/SEdI/0dHR/9HR0f/SEhI/z4+Pv8XFxf/AgIC/wAAAP8AAAD/AAAA/wAAAP8QEBD/QEBA/1FR + Uf9SUlL/UlJS/1JSUv9sbGz/wMDA//j4+P/////////////////////////////////X19f/QEBA/wIC + Av8AAAD/AAAA/wAAAP8AAAD/GBgY/5WVlf/y8vL////////////Pz8//Kioq/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AwMD/w0NDf8SEhL/EhIS/xISEv8SEhL/EhIS/w8PD/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAA + AP8BAQH/CAgI/xEREf8TExP/ExMT/xMTE/8TExP/EhIS/wkJCf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAA + AP8wMDD/19fX//////////////////////////////////////////////////////////////////// + ////////////////////////////////////////7Ozs/4SEhP8bGxv/BQUF/wcHB/8HBwf/BwcH/wYG + Bv8GBgb/BgYG/wYGBv8GBgb/BQUF/wMDA/8AAAD/AAAA/wAAAP8AAAD/AAAA/yMjI/+4uLj//Pz8//39 + /f+5ubn/IiIi/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wMDA/8DAwP/AwMD/wMDA/8DAwP/AwMD/wEB + Af8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8EBAT/BQUF/wYGBv8GBgb/BAQE/xoaGv+EhIT/7e3t//// + /////////////////////////////9fX1/8+Pj7/AgIC/wAAAP8AAAD/AAAA/wAAAP8ZGRn/l5eX//Ly + 8v///////////8/Pz/8qKir/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/zAwMP/X19f///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///o6Oj/cnJy/w4ODv8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8CAgL/AgIC/wICAv8CAgL/AQEB/wAA + AP8AAAD/AAAA/wAAAP8AAAD/IyMj/7i4uP/8/Pz//f39/7q6uv8iIiL/AAAA/wAAAP8AAAD/AAAA/wAA + AP8CAgL/AwMD/wMDA/8DAwP/AwMD/wMDA/8DAwP/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wQE + BP8GBgb/BgYG/wYGBv8DAwP/FxcX/39/f//s7Oz/////////////////////////////////1tbW/z4+ + Pv8CAgL/AAAA/wAAAP8AAAD/AAAA/xkZGf+YmJj/8/Pz////////////z8/P/yoqKv8AAAD/AAAA/wAA + AP8AAAD/AAAA/wYGBv8ZGRn/ICAg/yAgIP8gICD/ICAg/yEhIf8cHBz/CAgI/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AQEB/wgICP8RERH/ExMT/xISEv8SEhL/ExMT/xEREf8JCQn/AQEB/wAAAP8AAAD/AAAA/wAA + AP8AAAD/MDAw/9fX1/////////////////////////////////////////////////////////////// + /////////////////////////////////////////////+np6f9ycnL/Dw8P/wAAAP8AAAD/AAAA/wAA + AP8JCQn/MDAw/0RERP9FRUX/RkZG/z8/P/8eHh7/BAQE/wAAAP8AAAD/AAAA/wAAAP8jIyP/uLi4//z8 + /P/9/f3/urq6/yIiIv8AAAD/AAAA/wAAAP8AAAD/BQUF/yIiIv9CQkL/SEhI/0dHR/9HR0f/SEhI/z4+ + Pv8VFRX/AQEB/wAAAP8AAAD/AAAA/wAAAP8QEBD/QEBA/1JSUv9SUlL/UlJS/1FRUf9gYGD/rq6u//Pz + 8//////////////////////////////////V1dX/Ozs7/wEBAf8AAAD/AAAA/wAAAP8AAAD/GRkZ/5iY + mP/z8/P////////////Pz8//Kioq/wAAAP8AAAD/AAAA/wAAAP8AAAD/ICAg/4qKiv+zs7P/tLS0/7S0 + tP+0tLT/t7e3/5ubm/8uLi7/AQEB/wAAAP8AAAD/AAAA/wAAAP8GBgb/MzMz/3Nzc/+BgYH/gICA/4CA + gP+BgYH/dnZ2/z4+Pv8JCQn/AAAA/wAAAP8AAAD/AAAA/wAAAP8wMDD/19fX//////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////6enp/3Nzc/8PDw//AAAA/wAAAP8AAAD/AAAA/xsbG/+Xl5f/1dXV/9ra2v/c3Nz/xsbG/1xc + XP8LCwv/AAAA/wAAAP8AAAD/AAAA/yMjI/+4uLj//Pz8//39/f+6urr/IiIi/wAAAP8AAAD/AAAA/wAA + AP8ODg7/Z2dn/8nJyf/d3d3/29vb/9vb2//e3t7/vr6+/0FBQf8EBAT/AAAA/wAAAP8AAAD/AAAA/yoq + Kv+urq7/39/f/+Hh4f/g4OD/4ODg/+Pj4//w8PD//Pz8/////////////////////////////////9XV + 1f86Ojr/AQEB/wAAAP8AAAD/AAAA/wAAAP8ZGRn/mJiY//Pz8////////////8/Pz/8qKir/AAAA/wAA + AP8AAAD/AAAA/wAAAP8sLCz/wMDA//n5+f/7+/v/+vr6//r6+v/+/v7/2NjY/0BAQP8CAgL/AAAA/wAA + AP8AAAD/AAAA/wsLC/9eXl7/1dXV/+/v7//s7Oz/7Ozs/+7u7v/a2tr/c3Nz/xAQEP8AAAD/AAAA/wAA + AP8AAAD/AAAA/zAwMP/X19f///////////////////////////////////////////////////////// + ///////////////////////////////////////////////////p6en/dHR0/w8PD/8AAAD/AAAA/wAA + AP8AAAD/Hx8f/7Kysv/8/Pz////////////p6en/bW1t/w0NDf8AAAD/AAAA/wAAAP8AAAD/IyMj/7m5 + uf/8/Pz//f39/7q6uv8iIiL/AAAA/wAAAP8AAAD/AAAA/xEREf95eXn/7e3t//////////////////// + ///g4OD/TExM/wUFBf8AAAD/AAAA/wAAAP8AAAD/MDAw/8jIyP////////////////////////////// + ////////////////////////////////////////1dXV/zo6Ov8BAQH/AAAA/wAAAP8AAAD/AAAA/xkZ + Gf+YmJj/8/Pz////////////z8/P/yoqKv8AAAD/AAAA/wAAAP8AAAD/AAAA/y0tLf/FxcX//v7+//// + ///////////////////d3d3/QUFB/wICAv8AAAD/AAAA/wAAAP8AAAD/DAwM/2ZmZv/n5+f///////// + /////////////+7u7v99fX3/EhIS/wAAAP8AAAD/AAAA/wAAAP8AAAD/MDAw/9fX1/////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+np6f9zc3P/Dw8P/wAAAP8AAAD/AAAA/wAAAP8fHx//sLCw//n5+f///////////+fn + 5/9ra2v/DQ0N/wAAAP8AAAD/AAAA/wAAAP8jIyP/ubm5//z8/P/9/f3/u7u7/yIiIv8AAAD/AAAA/wAA + AP8AAAD/EBAQ/3h4eP/s7Oz//////////////////////9/f3/9MTEz/BQUF/wAAAP8AAAD/AAAA/wAA + AP8wMDD/xsbG//////////////////////////////////////////////////////////////////// + ///V1dX/Ojo6/wAAAP8AAAD/AAAA/wAAAP8AAAD/GBgY/5qamv/09PT////////////Pz8//Kioq/wAA + AP8AAAD/AAAA/wAAAP8AAAD/LS0t/8TExP/+/v7//////////////////////9zc3P9BQUH/AgIC/wAA + AP8AAAD/AAAA/wAAAP8LCwv/ZWVl/+Xl5f//////////////////////7Ozs/3x8fP8SEhL/AAAA/wAA + AP8AAAD/AAAA/wAAAP8wMDD/19fX//////////////////////////////////////////////////// + ////////////////////////////////////////////////////////6Ojo/3Jycv8PDw//AAAA/wAA + AP8AAAD/AAAA/x8fH/+wsLD/+fn5////////////5+fn/2tra/8NDQ3/AAAA/wAAAP8AAAD/AAAA/yQk + JP+6urr//f39//39/f+8vLz/IiIi/wAAAP8AAAD/AAAA/wAAAP8QEBD/cnJy/93d3f/z8/P/8fHx//Hx + 8f/09PT/0dHR/0dHR/8FBQX/AAAA/wAAAP8AAAD/AAAA/y4uLv++vr7/9PT0//X19f/09PT/9fX1//n4 + +f/+/v7//////////////////////////////////////9bW1v9CQkL/CwsL/wkJCf8KCgr/CgoK/wkJ + Cf8uLi7/r6+v//j4+P///////////8/Pz/8qKir/AAAA/wAAAP8AAAD/AAAA/wAAAP8tLS3/xMTE//7+ + /v//////////////////////3Nzc/0FBQf8CAgL/AAAA/wAAAP8AAAD/AAAA/wsLC/9lZWX/5eXl//// + ///////////////////s7Oz/fX19/xISEv8AAAD/AAAA/wAAAP8AAAD/AAAA/zAwMP/X19f///////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////q6ur/eXl5/xAQEP8AAAD/AAAA/wAAAP8AAAD/HBwc/6+vr//5+fn///////// + ///n5+f/a2tr/w0NDf8AAAD/AAAA/wAAAP8AAAD/JCQk/7u7u//9/f3//f39/7y8vP8iIiL/AAAA/wAA + AP8AAAD/AAAA/woKCv9ERET/hYWF/5KSkv+RkZH/kZGR/5KSkv99fX3/Kioq/wMDA/8AAAD/AAAA/wAA + AP8AAAD/Hh4e/3t7e/+enp7/n5+f/56env+goKD/tLO0/+Pj4//8/Pz///////////////////////// + ////////5OTk/4ODg/9fX1//Xl5e/15eXv9eXl7/ZGRk/4+Pj//g4OD//v7+////////////z8/P/yoq + Kv8AAAD/AAAA/wAAAP8AAAD/AAAA/y4uLv/FxcX//v7+///////////////////////c3Nz/QUFB/wIC + Av8AAAD/AAAA/wAAAP8AAAD/CwsL/2RkZP/i4uL//v7+//v7+//7+/v//v7+/+no6f97e3v/ERER/wAA + AP8AAAD/AAAA/wAAAP8AAAD/MDAw/9fX1/////////////////////////////////////////////// + //////////////////////////////////////////////////////////////T09P+qqqr/QkJC/yIi + Iv8hISH/ISEh/x4eHv88PDz/urq6//r6+v///////////+fn5/9ra2v/DQ0N/wAAAP8AAAD/AAAA/wAA + AP8mJib/vb29//39/f/+/v7/vb29/yMjI/8AAAD/AAAA/wAAAP8AAAD/AgIC/wsLC/8VFRX/FxcX/xcX + F/8XFxf/FxcX/xQUFP8HBwf/AAAA/wAAAP8AAAD/AAAA/wAAAP8FBQX/FRUV/xsbG/8bGxv/Gxsb/xkZ + Gf8xMDH/l5eX//Dw8P/////////////////////////////////6+vr/6enp/+Pj4//j4+P/4+Pj/+Pj + 4//l5eX/7u7u//v7+//////////////////Pz8//Kioq/wAAAP8AAAD/AAAA/wAAAP8AAAD/JSUl/5+f + n//Nzc3/zs7O/87Ozv/Ozs7/0dHR/7Gxsf81NTX/AgIC/wAAAP8AAAD/AAAA/wAAAP8ICAj/SkpK/6io + qP+8vLz/urq6/7q6uv+8vLz/rKys/1xbXP8NDQ3/AAAA/wAAAP8AAAD/AAAA/wAAAP8wMDD/19fX//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/v7//f39/+7u7v/Kysr/tra2/7S0tP+0tLT/s7Oz/729vf/n5+f//f39//// + ////////5+fn/2tra/8NDQ3/AAAA/wAAAP8AAAD/AAAA/ygoKP+/v7///f39//7+/v/AwMD/JCQk/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wsLC/94eHj/6urq//////////////////// + /////////////////////////////////////////////////////////////////////////////8/P + z/8rKyv/AAAA/wAAAP8AAAD/AAAA/wAAAP8KCgr/Kioq/zU1Nf82Njb/NTU1/zU1Nf82Njb/Li4u/w4O + Dv8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8NDQ3/Hh4e/yIiIv8iIiL/IiIi/yIiIv8fHx//ERER/wMD + A/8AAAD/AAAA/wAAAP8AAAD/AAAA/zIyMv/Y2Nj///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///8/Pz/+/v7//z8/P/7+/v//Pz8///////////////////////o6Oj/bGxs/w0NDf8AAAD/AAAA/wAA + AP8AAAD/KCgo/7+/v//9/f3//////8rKyv8tLS3/AAAA/wAAAP8AAAD/AAAA/wAAAP8EBAT/ERER/xQU + FP8UFBT/FBQU/xQUFP8SEhL/CAgI/wEBAf8AAAD/AAAA/wAAAP8BAQH/CQkJ/xoaGv8eHh7/Hh4e/x4e + Hv8cHBz/Li4u/46Ojv/u7u7/////////////////////////////////+/v7/+7u7v/p6en/6enp/+np + 6f/p6en/6urq//Hx8f/8/Pz/////////////////0dHR/y8vL/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Pz8//9vb + 2/////////////////////////////////////////////////////////////////////////////// + ///////////////////+/v7/+/v7//Ly8v/w8PD/8fHx//Hx8f/x8fH/8fHx//Hx8f/x8fH/8fHx//Hx + 8f/x8fH/8/Pz/9ra2v9mZmb/DQ0N/wAAAP8AAAD/AAAA/wAAAP8jIyP/ubm5//v7+///////3d3d/1NT + U/8HBwf/AAAA/wAAAP8AAAD/AAAA/xISEv9bW1v/g4OD/4eHh/+Ghob/h4eH/3h4eP80NDT/BgYG/wAA + AP8AAAD/AAAA/wICAv8wMDD/lZWV/66urv+rq6v/q6ur/6qqqv+ysrL/19fX//j4+P////////////// + ///////////////////v7+//qKio/3p6ev9zc3P/dHR0/3R0dP94eHj/m5ub/9/f3//9/f3///////// + ///d3d3/VlZW/xQUFP8MDAz/DAwM/wwMDP8MDAz/DAwM/wwMDP8MDAz/DAwM/wwMDP8MDAz/DAwM/wsL + C/8EBAT/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/BgYG/wwMDP8NDQ3/DAwM/wwMDP8MDAz/DAwM/wwM + DP8MDAz/DAwM/wwMDP8MDAz/DQ0N/x4eHv91dXX/6Ojo//////////////////////////////////// + //////////////////////////////////////////////////////////////7+/v/l5eX/oKCg/46O + jv+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+Pj4//j4+P/4+Pj/+RkZH/goKC/z09Pf8ICAj/AAAA/wAA + AP8AAAD/AAAA/x4eHv+oqKj/9/f3///////x8fH/lpaW/xwcHP8AAAD/AAAA/wAAAP8AAAD/Dw8P/21t + bf/Y2Nj/8PDw/+7u7v/x8fH/1dXV/1tbW/8KCgr/AAAA/wAAAP8AAAD/AwMD/0RERP/X19f//Pz8//j4 + +P/4+Pj/+Pj4//j4+P/7+/v//v7+//////////////////////////////////Hx8f+Xl5f/Jycn/w4O + Dv8PDw//Dw8P/w8PD/8pKSn/i4uL/+vr6/////////////T09P+8vLz/fn5+/2pqav9paWn/aWlp/2lp + af9paWn/aWlp/2lpaf9paWn/aWlp/2lpaf9qamr/XFxc/yMjI/8DAwP/AAAA/wAAAP8AAAD/AAAA/wgI + CP8zMzP/YWFh/2pqav9paWn/aWlp/2lpaf9paWn/aWlp/2lpaf9paWn/aWlp/2lpaf9vb2//jo6O/9LS + 0v/5+fn///////////////////////////////////////////////////////////////////////// + /////////////////////////////9TU1P9LS0v/FhYW/xUVFf8WFhb/FhYW/xYWFv8WFhb/FhYW/xYW + Fv8WFhb/FhYW/xYWFv8UFBT/CQkJ/wEBAf8AAAD/AAAA/wAAAP8AAAD/ERER/3l5ef/p6On///////// + ///V1dX/UFBQ/wcHB/8AAAD/AAAA/wAAAP8CAgL/NTU1/7q6uv/7+/v////////////m5ub/YWFh/woK + Cv8AAAD/AAAA/wAAAP8DAwP/RkZG/97e3v////////////////////////////////////////////// + /////////////////////////f39/8vLy/9AQED/AgIC/wAAAP8AAAD/AAAA/wEBAf83Nzf/uLi4//n5 + +f///////f39//f39//r6+v/5ubm/+bm5v/m5ub/5+fn/+fn5//n5+f/5+fn/+fn5//n5+f/5+fn/+np + 6f/Kysr/Tk5O/wcHB/8AAAD/AAAA/wAAAP8AAAD/EBAQ/29vb//V1dX/6Ojo/+bm5v/m5ub/5ubm/+bm + 5v/m5ub/5ubm/+bm5v/m5ub/5ubm/+jo6P/v7+//+/v7//7+/v////////////////////////////// + ////////////////////////////////////////////////////////////////////////5+fn/3d3 + d/8aGhr/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8DAwP/Ozs7/8HBwf/7+/v///////X19f+kpKT/JiYm/wAAAP8AAAD/AAAA/wAA + AP8NDQ3/ZWVl/97e3v///////////+fn5/9vb2//EBAQ/wAAAP8AAAD/AAAA/wQEBP9HR0f/3d3d//// + ////////////////////////////////////////////////////////////////////////8PDw/5OT + k/8fHx//AAAA/wAAAP8AAAD/AAAA/w0NDf9iYmL/29vb///////+/v7///////////////////////// + /////////////////////////////////////////////+Li4v9YWFj/CAgI/wAAAP8AAAD/AAAA/wAA + AP8RERH/fHx8/+7u7v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////7+/v/1NTU/4ODg/9KSkr/Ozs7/zo6Ov86Ojr/Ojo6/zo6 + Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zo6Ov86Ojr/Ojo6/zg4OP9LS0v/o6Kj//Ly + 8v///////////+Hh4f9ra2v/Dw8P/wAAAP8AAAD/AAAA/wAAAP8lJSX/o6Oj//T09P//////9fX1/7Oz + s/9WVlb/Ojo6/zo6Ov85OTn/PT09/3Fxcf/k5OT///////////////////////////////////////// + ////////////////////////////////////////29vb/2NjY/8PDw//AAAA/wAAAP8AAAD/AAAA/yEh + If+ampr/8fHx///////+/v7///////////////////////////////////////////////////////// + ////////4ODg/1RUVP8HBwf/AAAA/wAAAP8AAAD/AAAA/xEREf97e3v/6+vr//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///7+/v/7Ozs/97e3v/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ + 2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9vb2//p6en/+/v7////////////+vr6/7+/v/9AQED/CAgI/wEB + Af8BAQH/AAAA/woKCv9UVFT/1NTU//7+/v/+/v7/9PT0/+Hh4f/a2dr/2dnZ/9nZ2f/a2tr/5OTk//r6 + +v////////////////////////////////////////////////////////////////////////////// + ///6+vr/w8PD/09PT/8ODg7/AgIC/wEBAf8AAAD/BwcH/0lKSf/Ly8v//Pz8//////////////////// + ///////////////////////////////////////////////////j4+P/X19f/wkJCf8AAAD/AAAA/wAA + AP8AAAD/Dg4O/3l5ef/r6+v///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////8fHx/6ysrP9ZWVn/Ozs7/zw8PP8+PT7/PT09/1hYWP+7u7v/9/f3//// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////29vb/vLy8/2RkZP9AQED/Ozs7/zs7 + O/86Ojr/UVFR/66urv/08/T///////////////////////////////////////////////////////// + //////////////Hx8f+fn5//Pz8//yQkJP8jIyP/IyMj/yEhIf8yMjL/jIyM/+7u7v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+/v7/8/Pz/97e + 3v/S0tL/1NTU/9bV1v/V1dX/2NjY/+vr6//8/Pz///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v/39/f/4+Pj/9bW1v/T09P/09PT/9PT0//W1tb/5+fn//r6+v////////////// + /////////////////////////////////////////////////////////f39/+3s7f/My8z/vb29/7u7 + u/+7u7v/u7u7/7+/v//a2tr/+fn5//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////7+/v/9/f3//Pz8//z8/P/8/Pz//Pz8//39/f////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /v////7///////7//v/+/////v/////////////////////////////////////////+/////v////7/ + ///+//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////v/+//7/9/39/+v3/P/r9/v/+f39//7//v/+//////////// + ////////+/3+/+/4/P/q9vz/9/v9//7//v/+/////f////7///////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////v///v7+//7+/v/+//7/+Pz+/+Hz + /P+24Pn/isjy/53P7//n9fr//v/9//7//v///////////////v/x+fz/s9r1/4jF8/+y2/j/4PL8//f8 + /v/9/v7//v7+///+///+//7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////+/v/+/v7//P7+/+n2/P+84fn/db32/zee8/8gk/H/W7Hv/9jv+v/+//3///7///// + ///+///////+/+b0+v9/wPP/J5Xz/zWc8v91vvT/vuL5/+v2/P/8/v3///7+//7+/v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////7+/v/+/v7//v79//f8/f/X7fr/j8r0/0Ki + 8v8WjfX/BIX2/wOF9P9AofD/zer6//3//v/+/v////////7+/v/9//3/2vD6/16x7/8LifX/A4b2/xaP + 9P9GpvH/mM72/9zv+//5/f7//v////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////v///v7+//z+/v/w+f3/wuP5/2658v8llfL/B4b2/wCE+P8Ahfj/AYT1/zOZ7//D5fr//P/+//7/ + /////////v7+//3//v/R6/v/S6nw/waI9v8Ahfj/AIX3/wiI9P8rmPL/d77z/8jo+v/z+/7//v7+///+ + /v///v////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////7+/v/9/v7/7Pf9/67b+P9TrPL/F4/z/wOF + 9/8BhPj/AYT4/wGF+P8Ag/X/LJfy/7zi+//7/v7////////////+/v7/+/7+/8jn+/9AovP/BIb2/wCF + +P8Ahfj/AIX3/wSG9v8ckfP/XrHz/7jf+f/v+f3//v7+///+//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////+//7+ + /v/9/v7//P7+/+n1/P+k1Pj/RKTy/w6L8/8Chfb/AoX3/wGF9/8Bhff/AYX4/wCD9/8olvX/tN78//n9 + //////////////7////6/v7/weT6/zed8/8Dhfb/AYX4/wGF+P8Ahfj/AYX4/wKF9/8TjPX/Tqny/63Z + +P/t9/3//f7+//7+/v///v////7///////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////7//v79//r+/P/k9fv/nND2/z2f8/8LifX/AYX3/wGF + 9/8Bhfj/AYX4/wGF+P8Bhfj/AIP3/yWV9f+v2/v/+Pz//////////////v////r+/v+/4vn/NJvy/wKE + 9v8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wKF+P8OivT/RaTz/6bV9//q9v3//f7+//7+///+/v////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////7/ + ///9/v7/5fT7/5jQ9v84n/L/CYj1/wGG9/8Bhfj/AYX3/wGF+P8Bhfj/AYX4/wGF+P8AhPf/JZX1/63Z + +v/3/P7/////////////////+v7//77i+f8ymvD/AYT2/wGF+P8Bhfj/AYX4/wGF+P8Bhfn/AYb4/wGF + +P8LifX/QKLy/6LU9//q9v3//v7///7+//////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v/+//7+/v/+/v7//P7+/+j2/P+d0fb/OJ7y/wiI9f8Bhff/AYX4/wGF + 9/8Bhff/AYX4/wGF+P8Bhfj/AYX4/wCE9/8llfX/rNn5//f8/v/////////////////6/v//vuL5/zKa + 8P8BhPb/AYX4/wGF+P8Bhfj/AYX4/wGF+f8Bhfj/AYX4/wGF+P8KifX/QKLy/6XV9//r9/3//f7+//7/ + /v////7////+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+//7//v79//3+ + /P/s+Pz/pdb4/z2g8/8JiPX/AIX3/wGF9/8AhPf/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AIT3/yWV + 9f+u2vr/+Pz+//////////////////v+//+/4/n/NJvw/wKE9v8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Ahfj/AYb4/wKF+f8MifX/QqTy/6nZ+P/u+fz//v/+//7//v/+//7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////v/+/v3/8fn8/7Hb+P9FpPP/C4j2/wKF+P8Bhvf/AIX3/wCE + 9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Ag/f/Jpb1/7Hd/P/4/f7/////////////////+/7+/8Lk + +v84nfL/A4X2/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Chfn/AYb5/wGF9/8LivT/R6fz/7Lc + +P/y+v3//f////3//v/+//////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////7+/v/+/v3//v79//X7 + /P+94fj/Uqry/w6K9f8Bhff/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wCD + 9v8pl/L/ueL7//r+/v////////////7+/v/8/v3/x+b7/z+h9P8Ehvf/AIX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AIX3/wGF9/8PivT/U6vy/77i+P/0+/3/+/78//3+/f////7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v7+//7+/f/5/Pz/y+j5/2Gy8P8UjfP/AoX3/wGF9/8BhPj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AIP1/y2X8P/A5Pv//P/+/////////////v7+//3/ + /v/O6vv/SKby/waH9v8Ahfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8AhPj/AYT4/wKF + +P8UjfT/YbLw/8vo+P/4/fz//v79/////v////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+/v7//P39/9rv + +v94vvP/HZDy/wKF9/8Bhfj/AYX3/wGF9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8AhPX/M5nv/8bm+v/8//7////+///////+/v7//v/+/9Tt+v9Qqu//CIj1/wCF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8BhPj/AYX5/wGF9/8bkPP/dr70/9nv+v/8/v3//v/+//// + /v////7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////7+/v/o9Pz/ksz1/yuY8v8Ehff/AYT5/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AIX4/wOF9f8/ofH/zur7//3//v////7///////7+ + /v/+//7/2u/6/1uv7/8LifX/AIT4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wOF9/8ol/P/jsv1/+X1/P/8/v3//v79//7+/v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////8vn9/63Z + +P8+ofH/CYf1/wCE+f8BhPj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Ahfj/B4j1/1Cs8v/X7vv////+/////v///////v7+//7//v/g8vv/bbjy/w+L9v8AhPf/AYX3/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8BhPj/AYT4/weH9f85n/L/ptf3/+/5 + /P/+/v7//v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////v///v7+//n8/f/G5fr/V67y/xCK9P8Bhfj/AYT5/wCF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX3/wCE9/8MivX/ZLTw/9/x+/////7////+//// + ///+/v7////+/+j1/P+CxPX/Fo/1/wCF9/8Bhvf/AIX3/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYT3/w2J9P9QqvP/weP5//f8/f///v7////+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////+///7/v7/3PD7/3e+ + 9P8bkPP/Aob2/wGF9/8BhPj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhff/AIT4/xOM9v96vvP/5vT8/////v////7/////////////////8Pj9/5XN9v8fkvP/AIX2/wGG + 9/8Ahff/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYT4/wGE+P8BhPj/AYT3/xiO + 9P9wuvP/2O77//z+/v///v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v7+/+v3/P+az/b/LZny/wOG9f8Bhvf/AYX3/wGE+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGE+P8Ag/j/G5D2/5LM9v/u9/z//v/+//7/ + /v////////7////////3/P7/rNr5/ymW8f8Bhfb/AIX3/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8BhPj/AYT4/wGF+P8BhPj/BIX3/ymW8v+Sy/X/6vb8//7+/v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////+/v7//v7+///+/v/4/P7/vuL5/0qn + 8v8JiPT/AIX3/wGF9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wCE9v8llfL/qdj4//T7/f/+//7//v/+//////////////////z////C5Pr/OZ3x/wSF + 9v8Bhff/AIT3/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGE + +P8Chfj/CIf2/0Ci8f+03Pj/9fv9//7//v/+/////v////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v/+/v3//P39/9vv+v9xu/T/F4/0/wGF9/8Bhff/AYX3/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AoX1/zad8P/C5fr/+/7+//7+ + /v/+//7//////////////////////9Xs+/9PqfL/Coj1/wKF+P8BhPf/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Ahfn/EYz1/2O08//S6/v/+/7+//7/ + ///+//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v7+//3+/f/t+Pv/nNH1/yyY + 8v8Ehvb/AYb3/wGF9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + 9/8Bhff/AYX4/wCE+P8Ih/b/Uarz/9bu/P////7//v7+//7//v//////////////////////4/L8/2y5 + 9P8RjfX/AYT4/wCE9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Ahfj/AIb4/wCF+P8Chvf/JJXy/47J9f/o9fz//v////7//////////v////7///////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/v7/+f3+/8Tl+v9NqfH/Coj1/wGF+P8Bhvf/AYX3/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYT4/wGE+P8Bhfj/AIT3/xOM9f90vvX/5/T9//// + ///////////////////////////////////u9/z/jsr2/xyR9P8AhPf/AIT4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8JiPX/QqPx/7je + +P/2/P7////+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////7////+//////////7//v/i8/v/fMH0/xqQ + 9P8Bhff/AYX4/wGF+P8Bhff/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhff/AYT4/wGF+P8BhPf/I5Pz/5zS9v/z+v3///////////////////////////////////////f8 + /f+z3fn/LZjx/wGE9v8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AoX4/wKF+P8Chfj/AYT4/wGF+P8VjfT/a7j0/9jv+//9/v7///7////+//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////v////7/////////9fv9/6/c9/82nfL/BIb2/wCE9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF9/8Bhff/AYX4/wSF9v85nPP/w+T6//z/ + /v///////////////////////////////////////f/+/8/r+v9KpvH/B4f1/wCF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGE+P8BhPj/AYX4/wSG + 9/8rl/T/m9D3/+74/P/+//7//v7///7///////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v7+//z+/v/X7vv/ZrXx/xCM + 8/8Ahff/AIT3/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Ahfj/DIr1/12v8v/d7/z///////////////////////////////////////// + //////7/4/P6/3S78v8SjfX/AIT4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX3/wGF9/8Bhff/AIX4/wuI9f9QqvL/yOf6//n9/f/+/v7//v7///// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/v7/7/j8/5zS9v8ql/L/A4b2/wKF9/8BhPf/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8BhPj/AYT4/wCE9/8ckfP/jcn1/+32 + /P///////////////////////////////////////////////v/y+vv/odP2/ySV8f8BhPb/AYX3/wGF + 9/8Bhfj/AYX3/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + 9/8Ahfj/AIT3/x2Q9P+Fw/T/5fT7//7//v/+//7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////7+//v9/v/O6fr/VKzy/wyJ + 9f8Bhff/AoX4/wGE9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/BIX1/zac8P+44Pn/9/z9/////v////////////////////////////// + /////////v7+//r9/f/I5vn/Q6Pv/weG9f8Bhfj/AYX3/wGF+P8Bhff/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF9/8Ahff/Bob2/z2h8v+64Pn/+Pz9//// + /v////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////7/6/b8/4/K9v8ik/P/AYT2/wGF9/8Bhff/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGE+P8BhPj/AYT4/wCE+P8OivX/YbLy/9nv + +//9//3//v7+///////////////////////////////////////+/v7//v7+/+Ly+/9wuvP/E431/wGF + 9/8Chfj/AYX4/wGF9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX3/wCF9/8Ahff/Fo30/3W98//g8vv//v7+//7+/v/+/v7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////v9/v/G5vr/S6f0/wqI + 9f8Ahff/AYT4/wGE+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYT4/wGE+P8Bhff/AYX2/yKU8v+XzvX/7/j8//7//v/+/v7///////////////////////// + //////////////7+/v/+/v7/8/r9/6fW9/8ql/L/A4X2/wKF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYT4/wGE+P8Fhfb/Npzx/6/b + +P/1+/z//v79//7+/v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7+/v////7/6fb8/4rJ9P8fkvT/AoX3/wGF+P8Ahff/AIX3/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8BhPj/AYX4/wGF+P8KiPT/SKbw/8bm + +f/6/f3//f7+//7+/v///////////////////////////////////////v7+//7+/v/9/v7/0uv7/1Sr + 8v8KifX/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGE+P8BhPj/AYT4/wCE+P8SjPT/arny/9zw+//9/v7//v7+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////7+//r8/v/G5vr/S6jx/wqJ + 9f8Bhff/AYX4/wCF9/8Ahff/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wCE+P8Bhfn/AYX3/xuQ8/+DxPP/5/X7//7+/v/+/v7///////////////////////// + ///////////////////+/v///v/+/////v/u9/3/lMz2/yKU9P8Bhfb/AYX3/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX3/wGF9/8BhPj/AIX4/wKF + 9v8xm/H/rdv4//X7/f/+/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////v7/6/X8/4zJ9v8fk/P/AYX3/wGG9/8Bhff/AYT4/wGE+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AIX4/wCF+P8Hh/X/QqLw/7/i + +P/5/f3///7+//7+///////////////////////////////////////////////////////////+//v+ + /f/L6fr/Uavy/wuI9f8BhPf/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhff/AIT4/xKN9f9sufT/3fH8//7//v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////v9/v/L6Pr/UKry/wqJ + 9f8Ahff/AIX4/wGE+P8Bhff/AYX3/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX3/xyR8/+DxPT/5fX7//7//v/+/v7//v/+//////////////////// + /////////////////////////////////////////v/+/+34/f+Y0Pb/KJbz/wWF9/8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + 9/8AhPj/BIb1/zWc8v+z3fj/9/z+//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////7vf8/5bO9v8jlfL/AYX2/wCE+P8AhPj/AYT4/wGF9/8Bhff/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wCE+P8LifX/T6nz/8bm + +v/5/f7//v7+//7+/v////7///////////////////////////////////////////////////////// + ///+//7/+/7+/9Xu+/9nt/P/FY31/wKF9/8Bhff/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AIX3/wCE+P8AhPf/FY70/3a98//j8/v////+///+ + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////3////U7Pr/XLDx/w2K + 9P8AhPj/AYX3/wGF9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/BIb2/zCa8v+e0vf/7/j9//7+/v/+/v////////////////////////// + //////////////////////////////////////////////3+/v/9//7/9fz9/7ng+P9HpfH/CYn1/wCF + 9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhff/AYX3/wCE+P8Fh/b/PaHx/77i+f/5/f7///7+///+//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////9Pv+/6nY9/8tmfH/Aob1/wGF+P8Bhff/AYX3/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhff/AYT4/wGE+P8Ahff/AYX4/wOF9/8gkvP/fsD0/97w + +//9/v7//v7+//7+//////////////////////////////////////////////////////////////// + //////////////7////+//7/6/f8/5rP9f8vmvL/BIb1/wCF9/8Bhff/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF9/8Bhfj/AYX4/wCE+P8akPT/hcX0/+n1 + /P/+//7//v7+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////v7+//7//v/h8/v/cbvz/xON + 9P8Ahff/AYX3/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + 9/8BhPj/AYT4/wCF9/8Chff/GY/0/2i18//O6Pr/+f39/////v///v////7///////////////////// + /////////////////////////////////////////////////////////////////v/8/v3/3vH7/4PE + 9P8llfL/A4X1/wGF9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AIX4/wiI9v9OqfP/zen7//v+/f/+//7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////+/v7/+v39/8Ll+f8/ofH/BYb1/wCE+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYT4/wGF9/8Ahff/AoX3/xiO9P9gsvT/w+T6//X7 + /f/+/v7///7//////v////7///////////////////////////////////////////////////////// + //////////////////////////////7+/v/5/f7/1e37/3a+9P8hk/P/A4X3/wCF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Ahfj/AYT2/yiW + 8v+i1Pj/8Pr8//7//v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////7//v/t+Pz/ks32/x+S + 8/8AhPf/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8BhPj/AIT3/wKG9f8dkvT/Z7b0/8Tk+v/1+/3//f7+//7+/v///v/////+/////v////////////// + /////////////////////////////////////////////////////////////////////////v7///7/ + ///6/v7/0ez5/3S98/8hk/P/A4X2/wCE+P8BhPj/AYX4/wGF+P8Bhfj/AYT4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wCF9/8AhPf/Eoz1/2658//f8fv//v/+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////f/+/9nv+/9hs/P/DYr1/wCE+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AIT4/wCE+P8FhvT/J5fx/3a+9P/O6fv/9/v+//7+ + /f/+/v3////+//////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////v/5/f3/0ev6/3q/8/8nlvL/BYb1/wCE + +P8Bhfj/AYT4/wGE+P8BhPj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX3/wCF + 9/8Fhvb/QKPy/8Pl+v/7/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////5/f3/vOH5/zme + 8/8Ehfb/AIX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF9/8BhPj/AYX3/wGF9/8Bhfj/AYT4/wCE + +P8Bhff/C4n1/zae8v+MyfT/2O/6//n9/v/+/v7//v7+///+/v////7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7//v/5/f7/2e77/4nH9P8znPL/Coj1/wGF9/8Bhfn/AYX5/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhff/AYX3/wCE9/8ilPP/nNH3//H5/f////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////+/4/P+Yzvb/IZP1/wCE+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX3/wGE+P8Bhff/AYX3/wGF+P8AhPj/AoX3/xaO8/9MqfL/pdb3/+T0+//7/v3//f7+//7+ + /////v////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////8/v7/4/P7/6HU + 9v9Kp/L/Fo31/wSF+P8Bhfn/AYX5/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AIT4/xKM9f9uufP/4vL8//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////3/L7/2q3 + 8v8SjPX/AYT4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX3/wCF9/8AhPf/AIT3/weH + 9f8nlvL/brnz/8Lj+f/v+f3//P7+//3+/v/+/v7//v7///7+//////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+/v/9/v7/7vj8/8Hj+f9wufT/LJf1/wuI9v8Bhff/AIX3/wGE + +P8BhPj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/B4f2/0ek8f/M6Pr//P7+//7/ + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////7////L6fv/RKPw/wiH9P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX3/wSG9v8UjfT/QaPy/5LM9v/Z7/v/+f3+/////v/+//7//v/+///+ + ///+/v///v////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////+///+ + /v////7/+f3+/9vv+/+d0Pb/UKrx/x6R8/8Hh/X/AYT4/wGE+f8Ahfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8ChPb/LJfx/6zZ9//1+v3//f7+//7//v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////+P3+/7Db + +P8tmPH/A4X2/wGF+P8BhPf/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AIb4/wGG9/8KivX/Kpjz/2u3 + 8/+43vn/6vb8//3+/v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////7//P79/+34/P/G5/r/hMX1/z+i + 8f8WjvT/BIX2/wCE9/8AhPf/AIT3/wCE9/8Bhfj/AYX4/wGF+P8Bhfj/AYT4/wCD9/8bkPP/jMn2/+z3 + /P/9//7//v/+//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////+/////v/w+f3/ks32/x6S9P8BhPf/AYX4/wCE9/8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wCF9/8Fh/b/G5Hz/0yo8f+Yz/X/2O37//b7/v/+/v7//v7///////////////////// + /v///v7//v7+//7+/v////7////+/////v/9/v7/+Pv9//H4/f/q9f3/4/L9/9rw/P/V7vv/0+37/9Pt + +//T7fv/1u77/9vw/P/h8v3/6fX9//D5/f/3/P3//f7+/////v////7//v7+///+/v///v7////+//// + /v////////////7+///9/v7//f/+//n9/v/l9fz/uN/5/3K69P8ym/L/D4v0/wKE9/8AhPj/AYX4/wGF + +P8Bhfj/AYX3/wGF+P8BhPj/AIP4/xGL9f9vufT/4vL8//7+/v/+/v7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////7////+/+f1 + /P93v/X/FY72/wGE+P8Chfj/AYX4/wGF+P8Bhfj/AYX4/wCE9/8Ehvb/E430/zif8v9+wfT/xOT5/+33 + /P/9/v7////////////////////////////////////+///+/v/+/vz/+/78//T7/P/p9vz/3O/7/8nm + +v+w2vj/lMz3/37B9v9rt/b/Wa7y/02q7/9KqO//Sqfv/0uo7/9Qqu//Wa7x/2e29P97wfb/k833/67b + +P/K5/r/3vH7/+z3+//3/P3//f79/////f///v7///7+/////////////v////7///////////////// + ///2/P7/3PD7/6jX9/9is/P/Kpfz/w2J9f8Chff/AoX4/wGF+P8Bhff/AYX4/wGF+P8AhPj/CYj1/1as + 8f/W7fv//f7+//7+/v////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+////////3/H8/2Ky9P8Nivb/AYX4/wKG+P8Bhfj/AYX4/wCE + +P8Chff/Dov1/y+a8f9rufL/sd34/+Hz+//4/Pz//v79//7+/v////////////////////////////// + ///+//7/9fv8/+Tz+v/L6fn/q9n4/4TE9f9csPP/PqHz/yuY8/8fkvT/Fo72/w+M9v8JivX/Bon1/waH + 9v8Hh/b/B4j1/wmJ9f8KifX/DYv2/xSO9v8dkvT/Kpjy/0Ci8/9js/T/jsr1/7ff+P/W7vr/7Pf8//v9 + /v///////////////////////////////////////v////7////9/v7/8vr9/9Xs+v+d0vf/WK7z/ySV + 8/8KifX/AYX2/wCF9/8Bhfj/AYX4/wCF+P8FhvX/QqLw/8no+v/7/v3//v/+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////v7+//// + /v/W7vv/Uany/wiI9v8Ahfj/AYb3/wGF9/8Chfb/DYn1/ymW8/9gs/P/p9f3/9vw+v/1/P3//f/+//7+ + /f/+/v7//v7+///+///+/v7//v/+//7//v/6/f7/7Pf9/9Ps+/+q2Pf/eL7z/0mm8f8qmPP/F4/1/wuI + 9v8Ehvf/AYX3/wCF9v8Ahff/AIX4/wCF+P8Ahfj/AIT4/wCE+f8Bhfn/AYX5/wCF+P8AhPj/AIT4/wCE + 9/8Ahff/BIb3/w2K9v8bkfT/M5zx/1uw8v+Py/b/wOP6/+Hy/P/0+v3//f7+///+/v/+/v7//v7+//7+ + /////////v/+/////v////7//P79//D4/P/Q6vr/lc31/0+p8f8ekvP/B4f1/wCF9/8Ahfj/AYX4/wOG + 9f82nfP/vuL7//n9/v/+//7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////+/v3//f/9/9Ds+v9GpO//BYb1/wCE+P8Chfb/Dor1/ymX + 8/9dsPP/odP3/9fu+v/z+v3//v7+/////v////////////////////////////7//v/1+/3/4vL7/8Di + +v+Kxvb/Uarz/yuX8/8VjvX/B4j2/wGF9v8AhPf/AIT4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Ahfj/AIT3/wCE9/8Chfb/C4r1/xyS + 9P86n/P/brj0/6fW+P/U6/v/7vf9//v+/v////7///7+///////////////////////+/v7//v/+//r+ + /v/t9/z/yuf6/4vJ9f9IpfL/G5D1/waH9v8Bhfb/AoX1/zGa9P+53/v/+Pz+//7//v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////+/////v/////+//7+ + /f/9//3/zer6/0Gh7v8GhvT/D4v1/y2Y8v9gsfL/odT3/9Xt+//x+fz//P79//7////+/v///v7///7+ + //////7////+//7////1+/7/3PD7/6/b+P9yu/P/O5/x/xqQ9f8IiPf/AYT3/wCF+P8Ahfj/AYX3/wGF + 9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8AhPj/AIT3/wSH9v8RjPX/KZfy/1ar8v+UzPb/yuj6/+r2 + /P/6/f7////+//7+/v/+/v///v/////+///+//7/+/7+//z+/v/7/f7/6vb9/8Xm+v+GxfT/QqLy/xmP + 9P8HhvT/L5nz/7jf+v/3/f7//v/+//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////7////+//////7//v/9//z//v/S7fr/Wqzu/zec8f9ntfP/qNb3/9ju + +//y+v3//f7+/////v/+/v7//v/////////+/v///v79//z//f/0+/z/2+/7/6vX+P9ntvT/L5ry/xKN + 9P8EhfX/AIT3/wCE+P8Ahfj/AIX4/wCF9/8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wCF + 9/8Ahfj/AYX4/wCF9/8Chfb/Con1/x+T9P9Kp/P/iMf2/8Tk+v/o9fz/+Pz9//z+/f/+/v7///////7/ + ///9/////f////7+/v/+//7/+v3+/+j0/P++4fn/e7/1/z6f8P9LpvD/weP5//j9/f/+//7///////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////v////7///7/ + /v/9//3//P/+/+n1/P+22vT/t974/9vv+//0+v3//v/+/////v/+/v7//v////7///////////////7/ + ///0/Pz/2/H6/6vZ9v9otvL/MZny/xGL9f8Chfb/AIT3/wCF9/8Ahff/AYT4/wCF+P8BhPj/AYT4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYT4/wGE+P8Bhff/AYX3/wGF+P8Ahfj/AIX2/weI + 9f8ckfT/R6Tz/4bE9f/C5Pn/5vX7//r9/v/////////////////////////////////+/v///v7///j7 + /f/j8fv/vN/3/63X8//g8fv/+v3+//7//v////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+/////v/////+//7+/v/9/v7/+/39//X5/P/4/P3//f/+//// + /v/+/////v/+//7////+/////v7//////v/6/f7/5PT8/7Xe+P9uu/P/MZzx/xGM8/8Dhvb/AIT4/wGF + +P8Bhfj/AIX3/wCF9/8BhPj/AIX4/wGE+P8BhPj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8BhPj/AoT4/wKF9/8Bhff/AIX4/wGF+P8Ahff/AIX4/wGE9/8Ih/X/HJDz/0al8f+Ix/X/yOf6/+34 + /f/7/v7////+//7//v/+//7////+//7//v/+/v///v7+//3+/f/4/Pz/8/n7//n8/f/9/v7//v7+//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////+///+/v/+//7//v/+///////+/////v////7//v/8/v7/7ff9/8Tk + +v9/wvT/PKDy/xSO9P8Ehvb/AIX3/wGF+P8Bhfj/AIX4/wCF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + 9/8Bhff/AYX4/wCE9/8AhPb/B4f1/x6S9P9PqfP/k832/8/q+v/x+f3//f7+//7//v/+//7///////// + ///+//7//v7+//7+/v///////v////7////+//////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////v/////+///+ + /v///v/////////////+//7/9Pv9/9Tt+v+WzvX/S6fy/xqQ9P8Fh/b/AYX3/wGF+P8Chfj/AoX4/wKF + +P8Ahfj/AIX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYT4/wGE+P8BhPj/AYT4/wGF+P8AhPj/AYT3/wqI + 9f8klPP/Wa/y/6LU9//a7/r/9vv7//7//v////7////////+///+/v///v/+/////v////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////+//////7//v7+//3+/v/+//7/+v39/+P0+/+u2/f/YLTy/ySW + 8v8JiPX/AIT3/wCF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wCF+P8Ahfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8BhPj/AYT4/wGE+P8BhPj/AYX4/wCF+P8BhPj/A4T4/wOE9/8NivX/LJny/2m38v+z3Pf/5fT7//v9 + /v////7///7///7+///+//7////+//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///+////+/39/+/4/P/H5/n/gMPz/zee8f8PjPP/AYX2/wCF+P8AhPj/AIT4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYT4/wGE + +f8Chfj/AYX4/wCE+P8Dhfb/Eoz0/zmd8f9+wfT/xOT5/+v2+//8/f7///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////1+v3/xOP3/2Oz7/8fkfH/BoX2/wCF + +P8Ahff/AIX3/wCF+P8BhPj/AYT4/wGE+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Ahfj/AIT4/wGE+P8Ahfj/AIX5/wGF+v8BhPj/BYX1/x2R + 8f9br+7/tt3z//P6/P////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////f7/f/J5ff/cbnw/zCZ8f8Si/X/BIb2/wCF9/8Ahfj/AYX4/wKE+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wCF + 9/8Ahff/AYX3/wCG9/8Bhfj/AoT5/wmH9/8aj/T/PZ/w/3/C8f/N6vn/9/z+//////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////+////+/3+//L5/P/Y7vr/qtf3/224 + 9P85nvP/G5H2/wuJ9v8Dhfb/AIP3/wCE+P8AhPj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AIX4/wCE9/8BhPf/Bof2/xGM9v8mlfX/Tafz/4XE + 9f+94fj/4fP7//X8/v/9/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////7////9/v///v7+//3+/f/0+vz/3/D7/7vg+f+Jx/X/VKzy/y6a8P8YkPP/Con1/wOF + 9v8AhPf/AIT3/wCE+P8BhPj/AYX4/wGF9/8Chff/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8BhPj/AYX3/wGF9/8Bhff/AYX4/wCE+P8AhPj/AIP4/wCE + 9v8FhvX/EYv1/yOT8/8/ovL/arj0/5/S+P/M6Pv/6fX8//j8/f/9/v7//v7+//7+//////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////7////+/v7//v7+///+ + /v/+//7/+fz+/+z3/f/V7fv/sdz3/4bF9P9br/L/OJ7z/yKU9P8VjvX/C4n1/wWF9f8BhPb/AIT3/wCE + 9/8Ahff/AIX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF + +P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wGF+P8Bhfj/AYX4/wCE + +P8AhPf/AIX3/wCE9/8ChPb/BYb3/w2K9/8Zj/X/KJby/0Ok8f9suPP/mM/2/8Pk+f/g8vv/8vr9//z+ + /v////7///7+//7+/v/+/v7///////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////7//v/3/P3/6vX8/9jt + +/+/4/r/odP3/3zA9P9ZrvP/PqDx/yuY8v8dk/T/FI/0/w2K9f8HiPb/A4X2/wGE9v8AhPf/AIT3/wCD + +P8Ag/j/AIT3/wCE9/8AhPf/AIX3/wCF9/8Ahff/AIX4/wCF+P8AhPf/AIT4/wCE+P8AhPj/AIT4/wCE + +P8AhPf/AIT3/wCE9/8Ag/f/AIP2/wCE9v8Dhff/B4f3/w6L9v8Wj/b/IJP0/zCZ8f9Fo/L/YrT0/4fH + 9f+r2fj/yef6/9/x+//v+Pz/+/3+/////v////////////////////7///7////+/////v////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////v///v7//v7+//r9/v/z+fz/6PT6/9nu+//H5/r/sd35/5bO + 9v99wvP/Y7Pw/06p8f86n/L/LZjy/yWV8/8ekvP/GJD1/xOO9v8QjPb/DYv2/wuL9f8Jivb/CIj2/weI + 9v8Hh/b/B4f2/weH9v8Hh/f/CIf3/wiI9/8Kivb/DYv2/w+M9v8TjvX/GI/0/x6S9P8llPP/LJjy/zqe + 8/9OqfL/Z7Xy/4PD9v+cz/f/uN75/83o+v/e8Pv/7Pf8//X7/f/6/f7//v/+//7+/v/+/v7//v7+//// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////7+ + /v/+/v7///7+///+//////7////+//z+/v/4/P7/8fn9/+n1/P/g8fv/1+37/8vo+/+84fr/rNn5/5rQ + 9f+IyPT/e8L1/3K89v9puPX/YLT0/1mw9f9UrPb/Uar2/0+p9f9OqPT/T6j1/1Gp9f9Tq/X/V671/16y + 9f9ntvb/b7v2/3vB9v+Jx/X/mc/2/6zZ+f+84fr/y+j7/9ft/P/h8vz/6/b9//P5/f/5/P7//f7+//// + /v////7//v7+//3+/v/+/v7//v7+//7+/v/+/v7///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////v////7////////////////+//// + /v////////////////////7//P/+//n9/f/2+/3/8fj8/+33+//p9fz/5/T8/+Ty/P/g8fz/3vD8/9zv + /P/a7/3/2O78/9ju/P/Z7vz/2u78/9zv+//d8Pz/4PH9/+Py/f/m8/z/6fX8/+z3/P/x+fz/9vv9//n9 + /f/9/v7///////////////////////////////////7////+///+//7//v7+///+/////v////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////7////9/v7//f7+///+ + /v////7//////////v////7////+/////v////7////+/////////////////////v////7////+//// + /v///////////////v////7////+/////v////7//v7+//7+/v////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////v////3////+/////v////7////+/////v////7////+/////v////7/ + //////////////7+///9/v///v7////+/////v///////////////////v////7////+/////v////7/ + ///+//////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/YD10测试机/Form2.Designer.cs b/YD10测试机/Form2.Designer.cs new file mode 100644 index 0000000..53ec6b8 --- /dev/null +++ b/YD10测试机/Form2.Designer.cs @@ -0,0 +1,140 @@ + +namespace YD10测试机 +{ + partial class Form2 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.button1 = new System.Windows.Forms.Button(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.label1 = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToResizeRows = false; + this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight; + this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.Column2, + this.Column3}); + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2; + this.dataGridView1.EnableHeadersVisualStyles = false; + this.dataGridView1.Location = new System.Drawing.Point(26, 12); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowHeadersVisible = false; + this.dataGridView1.RowHeadersWidth = 45; + this.dataGridView1.RowTemplate.Height = 19; + this.dataGridView1.Size = new System.Drawing.Size(352, 543); + this.dataGridView1.TabIndex = 14; + this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(397, 94); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 15; + this.button1.Text = "保存退出"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // Column1 + // + this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column1.FillWeight = 30F; + this.Column1.HeaderText = "测试项"; + this.Column1.MinimumWidth = 2; + this.Column1.Name = "Column1"; + this.Column1.Resizable = System.Windows.Forms.DataGridViewTriState.True; + // + // Column2 + // + this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column2.FillWeight = 50F; + this.Column2.HeaderText = "标定信息"; + this.Column2.MinimumWidth = 2; + this.Column2.Name = "Column2"; + // + // Column3 + // + this.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column3.FillWeight = 10F; + this.Column3.HeaderText = "选项"; + this.Column3.MinimumWidth = 2; + this.Column3.Name = "Column3"; + // + // label1 + // + this.label1.Location = new System.Drawing.Point(386, 45); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(95, 46); + this.label1.TabIndex = 16; + this.label1.Text = "注意:可写入的值的参考信息值即是一键写入值"; + // + // Form2 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(493, 569); + this.Controls.Add(this.label1); + this.Controls.Add(this.button1); + this.Controls.Add(this.dataGridView1); + this.Name = "Form2"; + this.Text = "参考信息设置"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form2_FormClosing); + this.Load += new System.EventHandler(this.Form2_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewCheckBoxColumn Column3; + private System.Windows.Forms.Label label1; + } +} \ No newline at end of file diff --git a/YD10测试机/Form2.cs b/YD10测试机/Form2.cs new file mode 100644 index 0000000..2074b94 --- /dev/null +++ b/YD10测试机/Form2.cs @@ -0,0 +1,356 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace YD10测试机 +{ + public partial class Form2 : Form + { + + // 在窗口2中 + public delegate void Form2ClosedHandler(); + public event Form2ClosedHandler Form2Closed; + + + int form2_index = 0; + + public Form2( ) + { + InitializeComponent(); + } + + private void Form2_Load(object sender, EventArgs e) + { + my_set(); + read(); + + form2_index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[form2_index].Cells[0].Value = "打印名称设置"; + dataGridView1.Rows[form2_index].Cells[1].Value = product; + dataGridView1.Rows[form2_index].Cells[2].Value =true; + + for (int i = 0; i < readConfig.Length; i++) + { + form2_index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[form2_index].Cells[0].Value = readConfig[i].name; + dataGridView1.Rows[form2_index].Cells[1].Value = readConfig[i].Svalue; + dataGridView1.Rows[form2_index].Cells[2].Value = readConfig[i].status; + } + for (int i = 0; i < writeConfig.Length; i++) + { + form2_index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[form2_index].Cells[0].Value = writeConfig[i].name; + dataGridView1.Rows[form2_index].Cells[1].Value = writeConfig[i].Svalue; + dataGridView1.Rows[form2_index].Cells[2].Value = writeConfig[i].status; + } + } + + + private void button1_Click(object sender, EventArgs e) + { + save(); + this.Close(); // 关闭当前窗体 + } + + private void save() + { + JObject setData_jsonObject = new Newtonsoft.Json.Linq.JObject(); + setData_jsonObject.Add("打印名称设置", (string)dataGridView1.Rows[0].Cells[1].Value); + for (int i = 0; i < readConfig.Length; i++) + { + setData_jsonObject.Add(readConfig[i].name,(string)dataGridView1.Rows[i+1].Cells[1].Value); + } + for (int i = 0; i < writeConfig.Length; i++) + { + setData_jsonObject.Add(writeConfig[i].name,(string)dataGridView1.Rows[i+27].Cells[1].Value); + } + + for (int i = 0; i < readConfig.Length; i++) + { + setData_jsonObject.Add(readConfig[i].name + "status", readConfig[i].status); + } + for (int i = 0; i < writeConfig.Length; i++) + {; + setData_jsonObject.Add(writeConfig[i].name + "status", writeConfig[i].status); + } + string config_file_str = setData_jsonObject.ToString(); + string savePath = Application.StartupPath + @"\\YD10参考信息.json"; + + System.IO.File.WriteAllText(savePath, config_file_str, Encoding.UTF8); + } + + + string product; + private void read() + { + string strLoadConfigFilePath = Application.StartupPath + @"\YD10参考信息.json";//路径 + try + { + using (StreamReader configFile = new StreamReader(strLoadConfigFilePath)) + { + string str_data_json = configFile.ReadToEnd(); //这一步至关重要 差一点写错了 + + JObject object_data_prase_json = (JObject)JsonConvert.DeserializeObject(str_data_json); + if (object_data_prase_json != null) + { + product = (string)object_data_prase_json["打印名称设置"]; + for (int i = 0; i < readConfig.Length; i++) + { + readConfig[i].Svalue = (string)object_data_prase_json[readConfig[i].name]; + } + for (int i = 0; i < writeConfig.Length; i++) + { + writeConfig[i].Svalue = (string)object_data_prase_json[writeConfig[i].name]; + } + for (int i = 0; i < readConfig.Length; i++) + { + readConfig[i].status = (bool)object_data_prase_json[readConfig[i].name + "status"]; + } + for (int i = 0; i < writeConfig.Length; i++) + { + writeConfig[i].status = (bool)object_data_prase_json[writeConfig[i].name + "status"]; + } + + } + } + } + catch (Exception) + { + + } + + } + + struct myUnitClass2 + { + public string DID; //DID + public string name; //名称 + public string threshold; + public bool status; + public Int64 Ivalue; + public bool Bvalue; + public string Svalue; + public byte[] Fvalue; + public string sw; //是pass 还是fail , 用于pass排在上上方 + }; + + myUnitClass2[] readConfig = new myUnitClass2[26]; + myUnitClass2[] writeConfig = new myUnitClass2[15]; + + + private void my_set() + { + //------只读1次----- + readConfig[0].DID = "CF00"; + readConfig[0].name = "串口诊断协议版本号"; + readConfig[0].status = true; + + readConfig[1].DID = "CF01"; + readConfig[1].name = "软件版本号"; + readConfig[1].status = true; + + readConfig[2].DID = "CF02"; + readConfig[2].name = "设备IMEI"; + readConfig[2].status = true; + + readConfig[3].DID = "CF03"; + readConfig[3].name = "设备ICCID"; + readConfig[3].status = true; + + readConfig[4].DID = "CF04"; + readConfig[4].name = "GNSS产品型号"; + readConfig[4].status = true; + + readConfig[5].DID = "CF05"; + readConfig[5].name = "GNSS软件版本号"; + readConfig[5].status = true; + + readConfig[6].DID = "CF06"; + readConfig[6].name = "GNSS硬件版本号"; + readConfig[6].status = true; + + readConfig[7].DID = "CF07"; + readConfig[7].name = "SPI FLASH ID"; + readConfig[7].status = true; + + readConfig[8].DID = "CF08"; + readConfig[8].name = "BOOT底层软件版本"; + readConfig[8].status = true; + + readConfig[9].DID = "CF09"; + readConfig[9].name = "BOOT升级协议版本"; + readConfig[9].status = true; + + readConfig[10].DID = "CF0A"; + readConfig[10].name = "通信协议版本号"; + readConfig[10].status = true; + + readConfig[11].DID = "CF0B"; + readConfig[11].name = "备份区软件版本号"; + readConfig[11].status = true; + + readConfig[12].DID = "CF0C"; + readConfig[12].name = "OTA零部件编码"; + readConfig[12].status = true; + //------只读N次----- + readConfig[13].DID = "CF80"; + readConfig[13].name = "OTA域名"; + readConfig[13].status = true; + + readConfig[14].DID = "CF81"; + readConfig[14].name = "拨号状态"; + readConfig[14].status = true; + + readConfig[15].DID = "CF82"; + readConfig[15].name = "驻网状态"; + readConfig[15].status = true; + + readConfig[16].DID = "CF83"; + readConfig[16].name = "服务器连接状态"; + readConfig[16].status = true; + + readConfig[17].DID = "CF84"; + readConfig[17].name = "GNSS定位状态"; + readConfig[17].status = true; + + readConfig[18].DID = "CF85"; + readConfig[18].name = "GNSS SNR值"; + readConfig[18].status = true; + + readConfig[19].DID = "CF86"; + readConfig[19].name = "RSSI值"; + readConfig[19].status = true; + + readConfig[20].DID = "CF87"; + readConfig[20].name = "RSRP值"; + readConfig[20].status = true; + + readConfig[21].DID = "CF88"; + readConfig[21].name = "RSRQ值"; + readConfig[21].status = true; + + readConfig[22].DID = "CF89"; + readConfig[22].name = "SINR值"; + readConfig[22].status = true; + + readConfig[23].DID = "CF8A"; + readConfig[23].name = "ACC管脚电平状态"; + readConfig[23].status = true; + + readConfig[24].DID = "CF8B"; + readConfig[24].name = "外电电压值"; + readConfig[24].status = true; + + readConfig[25].DID = "CF8C"; + readConfig[25].name = "K线通讯状态"; + readConfig[25].status = true; + //-----读写---- + writeConfig[0].DID = "CF40"; + writeConfig[0].name = "硬件版本号"; + writeConfig[0].status = true; + + writeConfig[1].DID = "CF41"; + writeConfig[1].name = "产品型号"; + writeConfig[1].status = true; + + writeConfig[2].DID = "CF42"; + writeConfig[2].name = "产品识别码"; + writeConfig[2].status = true; + + writeConfig[3].DID = "CF43"; + writeConfig[3].name = "产商识别码"; + writeConfig[3].status = true; + + writeConfig[4].DID = "CF44"; + writeConfig[4].name = "客户识别码"; + writeConfig[4].status = true; + + // writeConfig[6].DID = "CF45"; + // writeConfig[6].name = "生产日十位"; + + writeConfig[5].DID = "CF46"; + writeConfig[5].name = "生产日"; + writeConfig[5].status = true; + + writeConfig[6].DID = "CF47"; + writeConfig[6].name = "生产月份"; + writeConfig[6].status = true; + + // writeConfig[7].DID = "CF48"; + //writeConfig[7].name = "生产年份十位"; + + writeConfig[7].DID = "CF49"; + writeConfig[7].name = "生产年份"; + writeConfig[7].status = true; + + writeConfig[8].DID = "CF4A"; + writeConfig[8].name = "流水号"; + writeConfig[8].status = true; + + writeConfig[9].DID = "CF4B"; + writeConfig[9].name = "服务器域名"; + writeConfig[9].status = true; + + writeConfig[10].DID = "CF4C"; + writeConfig[10].name = "服务器端口号"; + writeConfig[10].status = true; + + writeConfig[11].DID = "CF4D"; + writeConfig[11].name = "外电电压AD比列值"; + writeConfig[11].status = true; + + writeConfig[12].DID = "CF4E"; + writeConfig[12].name = "物料编码"; + writeConfig[12].status = true; + + writeConfig[13].DID = "CF4F"; + writeConfig[13].name = "供应商编码"; + writeConfig[13].status = true; + + writeConfig[14].DID = "CF50"; + writeConfig[14].name = "批次号"; + writeConfig[14].status = true; + } + + private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + for (int i = 0; i < readConfig.Length; i++) + { + if ((bool)dataGridView1.Rows[i+1].Cells[2].EditedFormattedValue == true) + { + readConfig[i].status = true; + } + else + { + readConfig[i].status = false; + } + } + for (int i = 0; i < writeConfig.Length; i++) + { + if ((bool)dataGridView1.Rows[i+27].Cells[2].EditedFormattedValue == true) + { + writeConfig[i].status = true; + } + else + { + writeConfig[i].status = false; + } + } + + + } + + private void Form2_FormClosing(object sender, FormClosingEventArgs e) + { + Form2Closed?.Invoke(); + } + } +} diff --git a/YD10测试机/Form2.resx b/YD10测试机/Form2.resx new file mode 100644 index 0000000..a6bfe3f --- /dev/null +++ b/YD10测试机/Form2.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + \ No newline at end of file diff --git a/YD10测试机/Form3.Designer.cs b/YD10测试机/Form3.Designer.cs new file mode 100644 index 0000000..9578103 --- /dev/null +++ b/YD10测试机/Form3.Designer.cs @@ -0,0 +1,613 @@ + +namespace YD10测试机 +{ + partial class Form3 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); + this.label3 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.comboBox2 = new System.Windows.Forms.ComboBox(); + this.label8 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.dataGridView2 = new System.Windows.Forms.DataGridView(); + this.dataGridViewTextBoxColumn9 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn11 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.txtStatus = new System.Windows.Forms.Label(); + this.btnOpen_usb = new System.Windows.Forms.Button(); + this.cmbPort = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.参考信息设置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.打印较准页ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.手动打印ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.车型设置ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.yD10ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.yD07KToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.dataGridView3 = new System.Windows.Forms.DataGridView(); + this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.timer2 = new System.Windows.Forms.Timer(this.components); + this.printDocument1 = new System.Drawing.Printing.PrintDocument(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.menuStrip1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).BeginInit(); + this.SuspendLayout(); + // + // label3 + // + this.label3.Location = new System.Drawing.Point(248, 35); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(59, 26); + this.label3.TabIndex = 86; + this.label3.Text = "标定信息:产前标签"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(666, 73); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(0, 12); + this.label7.TabIndex = 85; + // + // checkBox3 + // + this.checkBox3.AutoSize = true; + this.checkBox3.Checked = true; + this.checkBox3.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBox3.Location = new System.Drawing.Point(429, 124); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(72, 16); + this.checkBox3.TabIndex = 84; + this.checkBox3.Text = "号码校验"; + this.checkBox3.UseVisualStyleBackColor = true; + this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged); + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(311, 65); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(355, 21); + this.textBox2.TabIndex = 83; + this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(248, 68); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(59, 12); + this.label6.TabIndex = 82; + this.label6.Text = "号码校验:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(666, 42); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(0, 12); + this.label5.TabIndex = 81; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(311, 35); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(355, 21); + this.textBox1.TabIndex = 80; + this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.DarkGray; + this.label2.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label2.Location = new System.Drawing.Point(776, 35); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(278, 88); + this.label2.TabIndex = 78; + this.label2.Text = "等待测试"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // comboBox2 + // + this.comboBox2.FormattingEnabled = true; + this.comboBox2.Items.AddRange(new object[] { + "1", + "2", + "3"}); + this.comboBox2.Location = new System.Drawing.Point(704, 134); + this.comboBox2.Name = "comboBox2"; + this.comboBox2.Size = new System.Drawing.Size(40, 20); + this.comboBox2.TabIndex = 76; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(670, 138); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(35, 12); + this.label8.TabIndex = 75; + this.label8.Text = "张数:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(511, 138); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(47, 12); + this.label4.TabIndex = 74; + this.label4.Text = "打印机:"; + // + // comboBox1 + // + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(564, 134); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(102, 20); + this.comboBox1.TabIndex = 73; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Checked = true; + this.checkBox2.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBox2.Location = new System.Drawing.Point(672, 118); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(72, 16); + this.checkBox2.TabIndex = 72; + this.checkBox2.Text = "自动打印"; + this.checkBox2.UseVisualStyleBackColor = true; + // + // dataGridView2 + // + this.dataGridView2.AllowUserToAddRows = false; + this.dataGridView2.AllowUserToResizeRows = false; + this.dataGridView2.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight; + this.dataGridView2.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridView2.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTextBoxColumn9, + this.dataGridViewTextBoxColumn10, + this.dataGridViewTextBoxColumn11}); + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView2.DefaultCellStyle = dataGridViewCellStyle1; + this.dataGridView2.EnableHeadersVisualStyles = false; + this.dataGridView2.Location = new System.Drawing.Point(699, 163); + this.dataGridView2.Name = "dataGridView2"; + this.dataGridView2.RowHeadersVisible = false; + this.dataGridView2.RowHeadersWidth = 45; + this.dataGridView2.RowTemplate.Height = 21; + this.dataGridView2.Size = new System.Drawing.Size(375, 561); + this.dataGridView2.TabIndex = 71; + // + // dataGridViewTextBoxColumn9 + // + this.dataGridViewTextBoxColumn9.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn9.FillWeight = 50F; + this.dataGridViewTextBoxColumn9.HeaderText = "测试项"; + this.dataGridViewTextBoxColumn9.MinimumWidth = 2; + this.dataGridViewTextBoxColumn9.Name = "dataGridViewTextBoxColumn9"; + this.dataGridViewTextBoxColumn9.Resizable = System.Windows.Forms.DataGridViewTriState.True; + // + // dataGridViewTextBoxColumn10 + // + this.dataGridViewTextBoxColumn10.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn10.FillWeight = 50F; + this.dataGridViewTextBoxColumn10.HeaderText = "数据"; + this.dataGridViewTextBoxColumn10.MinimumWidth = 2; + this.dataGridViewTextBoxColumn10.Name = "dataGridViewTextBoxColumn10"; + // + // dataGridViewTextBoxColumn11 + // + this.dataGridViewTextBoxColumn11.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn11.FillWeight = 20F; + this.dataGridViewTextBoxColumn11.HeaderText = "结果"; + this.dataGridViewTextBoxColumn11.MinimumWidth = 2; + this.dataGridViewTextBoxColumn11.Name = "dataGridViewTextBoxColumn11"; + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToResizeRows = false; + this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight; + this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.Column2, + this.Column3}); + dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle2.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle2; + this.dataGridView1.EnableHeadersVisualStyles = false; + this.dataGridView1.Location = new System.Drawing.Point(29, 123); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowHeadersVisible = false; + this.dataGridView1.RowHeadersWidth = 45; + this.dataGridView1.RowTemplate.Height = 19; + this.dataGridView1.Size = new System.Drawing.Size(316, 601); + this.dataGridView1.TabIndex = 70; + // + // Column1 + // + this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column1.FillWeight = 50F; + this.Column1.HeaderText = "测试项"; + this.Column1.MinimumWidth = 2; + this.Column1.Name = "Column1"; + this.Column1.Resizable = System.Windows.Forms.DataGridViewTriState.True; + // + // Column2 + // + this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column2.FillWeight = 50F; + this.Column2.HeaderText = "数据"; + this.Column2.MinimumWidth = 2; + this.Column2.Name = "Column2"; + // + // Column3 + // + this.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column3.FillWeight = 20F; + this.Column3.HeaderText = "结果"; + this.Column3.MinimumWidth = 2; + this.Column3.Name = "Column3"; + // + // txtStatus + // + this.txtStatus.AutoSize = true; + this.txtStatus.Location = new System.Drawing.Point(50, 81); + this.txtStatus.Name = "txtStatus"; + this.txtStatus.Size = new System.Drawing.Size(0, 12); + this.txtStatus.TabIndex = 69; + // + // btnOpen_usb + // + this.btnOpen_usb.Location = new System.Drawing.Point(153, 55); + this.btnOpen_usb.Name = "btnOpen_usb"; + this.btnOpen_usb.Size = new System.Drawing.Size(64, 21); + this.btnOpen_usb.TabIndex = 68; + this.btnOpen_usb.Text = "打开"; + this.btnOpen_usb.UseVisualStyleBackColor = true; + this.btnOpen_usb.Click += new System.EventHandler(this.btnOpen_usb_Click); + // + // cmbPort + // + this.cmbPort.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.cmbPort.FormattingEnabled = true; + this.cmbPort.Location = new System.Drawing.Point(65, 53); + this.cmbPort.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.cmbPort.Name = "cmbPort"; + this.cmbPort.Size = new System.Drawing.Size(83, 24); + this.cmbPort.TabIndex = 67; + this.cmbPort.DropDown += new System.EventHandler(this.cmbPort_DropDown); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 10.18868F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.label1.Location = new System.Drawing.Point(23, 60); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(42, 14); + this.label1.TabIndex = 66; + this.label1.Text = "端口:"; + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.参考信息设置ToolStripMenuItem, + this.打印较准页ToolStripMenuItem, + this.手动打印ToolStripMenuItem, + this.车型设置ToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(1098, 28); + this.menuStrip1.TabIndex = 79; + this.menuStrip1.Text = "menuStrip1"; + this.menuStrip1.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.menuStrip1_ItemClicked); + // + // 参考信息设置ToolStripMenuItem + // + this.参考信息设置ToolStripMenuItem.BackColor = System.Drawing.SystemColors.Control; + this.参考信息设置ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.参考信息设置ToolStripMenuItem.Name = "参考信息设置ToolStripMenuItem"; + this.参考信息设置ToolStripMenuItem.Size = new System.Drawing.Size(105, 24); + this.参考信息设置ToolStripMenuItem.Text = "参考信息设置"; + this.参考信息设置ToolStripMenuItem.Click += new System.EventHandler(this.参考信息设置ToolStripMenuItem_Click); + // + // 打印较准页ToolStripMenuItem + // + this.打印较准页ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.打印较准页ToolStripMenuItem.Name = "打印较准页ToolStripMenuItem"; + this.打印较准页ToolStripMenuItem.Size = new System.Drawing.Size(91, 24); + this.打印较准页ToolStripMenuItem.Text = "打印较准页"; + this.打印较准页ToolStripMenuItem.Click += new System.EventHandler(this.打印较准页ToolStripMenuItem_Click); + // + // 手动打印ToolStripMenuItem + // + this.手动打印ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.手动打印ToolStripMenuItem.Name = "手动打印ToolStripMenuItem"; + this.手动打印ToolStripMenuItem.Size = new System.Drawing.Size(77, 24); + this.手动打印ToolStripMenuItem.Text = "手动打印"; + this.手动打印ToolStripMenuItem.Click += new System.EventHandler(this.手动打印ToolStripMenuItem_Click); + // + // 车型设置ToolStripMenuItem + // + this.车型设置ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.yD10ToolStripMenuItem, + this.yD07KToolStripMenuItem}); + this.车型设置ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.车型设置ToolStripMenuItem.Name = "车型设置ToolStripMenuItem"; + this.车型设置ToolStripMenuItem.Size = new System.Drawing.Size(77, 24); + this.车型设置ToolStripMenuItem.Text = "车型设置"; + this.车型设置ToolStripMenuItem.Click += new System.EventHandler(this.车型设置ToolStripMenuItem_Click); + // + // yD10ToolStripMenuItem + // + this.yD10ToolStripMenuItem.Name = "yD10ToolStripMenuItem"; + this.yD10ToolStripMenuItem.Size = new System.Drawing.Size(122, 24); + this.yD10ToolStripMenuItem.Text = "YD10"; + this.yD10ToolStripMenuItem.Click += new System.EventHandler(this.yD10ToolStripMenuItem_Click); + // + // yD07KToolStripMenuItem + // + this.yD07KToolStripMenuItem.Name = "yD07KToolStripMenuItem"; + this.yD07KToolStripMenuItem.Size = new System.Drawing.Size(122, 24); + this.yD07KToolStripMenuItem.Text = "YD07K"; + this.yD07KToolStripMenuItem.Click += new System.EventHandler(this.yD07KToolStripMenuItem_Click); + // + // dataGridView3 + // + this.dataGridView3.AllowUserToAddRows = false; + this.dataGridView3.AllowUserToResizeRows = false; + this.dataGridView3.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight; + this.dataGridView3.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dataGridView3.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridView3.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dataGridViewTextBoxColumn1, + this.dataGridViewTextBoxColumn2, + this.dataGridViewTextBoxColumn3}); + dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle3.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView3.DefaultCellStyle = dataGridViewCellStyle3; + this.dataGridView3.EnableHeadersVisualStyles = false; + this.dataGridView3.Location = new System.Drawing.Point(363, 163); + this.dataGridView3.Name = "dataGridView3"; + this.dataGridView3.RowHeadersVisible = false; + this.dataGridView3.RowHeadersWidth = 45; + this.dataGridView3.RowTemplate.Height = 19; + this.dataGridView3.Size = new System.Drawing.Size(316, 561); + this.dataGridView3.TabIndex = 87; + // + // dataGridViewTextBoxColumn1 + // + this.dataGridViewTextBoxColumn1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn1.FillWeight = 50F; + this.dataGridViewTextBoxColumn1.HeaderText = "测试项"; + this.dataGridViewTextBoxColumn1.MinimumWidth = 2; + this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; + this.dataGridViewTextBoxColumn1.Resizable = System.Windows.Forms.DataGridViewTriState.True; + // + // dataGridViewTextBoxColumn2 + // + this.dataGridViewTextBoxColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn2.FillWeight = 50F; + this.dataGridViewTextBoxColumn2.HeaderText = "数据"; + this.dataGridViewTextBoxColumn2.MinimumWidth = 2; + this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; + // + // dataGridViewTextBoxColumn3 + // + this.dataGridViewTextBoxColumn3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.dataGridViewTextBoxColumn3.FillWeight = 20F; + this.dataGridViewTextBoxColumn3.HeaderText = "结果"; + this.dataGridViewTextBoxColumn3.MinimumWidth = 2; + this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3"; + // + // timer1 + // + this.timer1.Enabled = true; + this.timer1.Interval = 500; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // timer2 + // + this.timer2.Enabled = true; + this.timer2.Interval = 50; + this.timer2.Tick += new System.EventHandler(this.timer2_Tick); + // + // printDocument1 + // + this.printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage); + // + // textBox3 + // + this.textBox3.Location = new System.Drawing.Point(311, 96); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(355, 21); + this.textBox3.TabIndex = 89; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(267, 99); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(23, 12); + this.label9.TabIndex = 88; + this.label9.Text = "SN:"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(666, 103); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(0, 12); + this.label10.TabIndex = 91; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Checked = true; + this.checkBox1.CheckState = System.Windows.Forms.CheckState.Checked; + this.checkBox1.Location = new System.Drawing.Point(29, 101); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(72, 16); + this.checkBox1.TabIndex = 92; + this.checkBox1.Text = "蓝牙连接"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // Form3 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1098, 737); + this.Controls.Add(this.checkBox1); + this.Controls.Add(this.label10); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.label9); + this.Controls.Add(this.dataGridView3); + this.Controls.Add(this.label3); + this.Controls.Add(this.label7); + this.Controls.Add(this.checkBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.comboBox2); + this.Controls.Add(this.label8); + this.Controls.Add(this.label4); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.dataGridView2); + this.Controls.Add(this.dataGridView1); + this.Controls.Add(this.txtStatus); + this.Controls.Add(this.btnOpen_usb); + this.Controls.Add(this.cmbPort); + this.Controls.Add(this.label1); + this.Controls.Add(this.menuStrip1); + this.Name = "Form3"; + this.Text = "YD07K上位机测试V1.9"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form3_FormClosing); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form3_FormClosed); + this.Load += new System.EventHandler(this.Form3_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView3)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox comboBox2; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.DataGridView dataGridView2; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn9; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewTextBoxColumn Column3; + private System.Windows.Forms.Label txtStatus; + private System.Windows.Forms.Button btnOpen_usb; + private System.Windows.Forms.ComboBox cmbPort; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem 参考信息设置ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 打印较准页ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 手动打印ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 车型设置ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem yD10ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem yD07KToolStripMenuItem; + private System.Windows.Forms.DataGridView dataGridView3; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; + private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Timer timer2; + private System.Drawing.Printing.PrintDocument printDocument1; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.CheckBox checkBox1; + } +} \ No newline at end of file diff --git a/YD10测试机/Form3.cs b/YD10测试机/Form3.cs new file mode 100644 index 0000000..865ed9e --- /dev/null +++ b/YD10测试机/Form3.cs @@ -0,0 +1,3430 @@ +using Microsoft.Win32; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO.Ports; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Timers; +using System.Drawing.Printing; +using ZXingDemo; +using System.Net; +using System.IO; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using System.Threading; +using BluetoothLibrary; + +namespace YD10测试机 +{ + public partial class Form3 : Form + { + SerialPort serialPort = new SerialPort(); + private Form1 form1; + + public Form3(Form1 form1Instance) + { + InitializeComponent(); + this.form1 = form1Instance; // 保存 Form1 的引用 + } + + + BleCore bleCore = new BleCore(); + /// + /// 存储检测到的设备 + /// + List DeviceList = new List(); + + /// + /// 当前蓝牙服务列表 + /// + List GattDeviceServices = new List(); + + /// + /// 当前蓝牙服务特征列表 + /// + List GattCharacteristics = new List(); + + private float X; private float Y; + //获取控件的width、height、left、top、字体大小的值 + //存放在控件的Tag属性中 + private void setTag(Control cons) + { + //遍历窗体中的控件 + foreach (Control con in cons.Controls) + { + con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; + if (con.Controls.Count > 0) + setTag(con); + } + } + + //根据窗体大小调整控件大小 + private void setControls(float newx, float newy, Control cons) + { + //遍历窗体中的控件,重新设置控件的值 + foreach (Control con in cons.Controls) + { + + string[] mytag = con.Tag.ToString().Split(new char[] { ':' });//获取控件的Tag属性值,并分割后存储字符串数组 + float a = Convert.ToSingle(mytag[0]) * newx;//根据窗体缩放比例确定控件的值,宽度 + con.Width = (int)a;//宽度 + a = Convert.ToSingle(mytag[1]) * newy;//高度 + con.Height = (int)(a); + a = Convert.ToSingle(mytag[2]) * newx;//左边距离 + con.Left = (int)(a); + a = Convert.ToSingle(mytag[3]) * newy;//上边缘距离 + con.Top = (int)(a); + Single currentSize = Convert.ToSingle(mytag[4]) * newy;//字体大小 + con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit); + if (con.Controls.Count > 0) + { + setControls(newx, newy, con); + } + } + } + // + void Form3_Resize(object sender, EventArgs e) + { + float newx = (this.Width) / X; //窗体宽度缩放比例 + float newy = this.Height / Y;//窗体高度缩放比例 + setControls(newx, newy, this);//随窗体改变控件大小 + } + + private void Form3_Load(object sender, EventArgs e) + { + cmbBox_Port_Update(); + my_set(); + read(); + read_set(); + GetPrinter(); + + // 添加第四列(按钮列) + DataGridViewButtonColumn buttonColumn = new DataGridViewButtonColumn + { + Name = "ButtonColumn", // 列的名称 + HeaderText = "操作", // 列头显示的文本 + Text = "写", // 按钮显示的文本 + AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells, + UseColumnTextForButtonValue = true, // 将按钮文本设置为列的值 + DefaultCellStyle = new DataGridViewCellStyle + { + Font = new Font("宋体", 9), // 设置按钮字体为 Arial,大小为 12,加粗 + } + }; + + dataGridView2.Columns.Add(buttonColumn); + + // 注册按钮点击事件 + dataGridView2.CellClick += DataGridView2_CellClick; + //set_ready(); + ServicePointManager.ServerCertificateValidationCallback = (obj, certificate, chain, sslPolicyErrors) => true; + this.Resize += new EventHandler(Form3_Resize);//窗体调整大小时引发事件 + X = this.Width;//获取窗体的宽度 + Y = this.Height;//获取窗体的高度 + setTag(this);//调用方法 + + + if (checkBox3.Checked) + { + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "设备IMEI"; + dataGridView2.Rows[index].Cells[1].Value = readConfig[2].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "设备ICCID"; + dataGridView2.Rows[index].Cells[1].Value = readConfig[3].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产日"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[5].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产月份"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[6].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产年份"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[7].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "流水号"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[8].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "批次号"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[14].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "供应商编码"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[13].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "物料编码"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[12].threshold; + } + } + + string[] rsrp_ck, rsrq_ck; + string product; + int wd1, wd2, gnss; + private void read() + { + string strLoadConfigFilePath = Application.StartupPath + @"\YD07k参考信息.json";//路径 + try + { + using (StreamReader configFile = new StreamReader(strLoadConfigFilePath)) + { + string str_data_json = configFile.ReadToEnd(); //这一步至关重要 差一点写错了 + + JObject object_data_prase_json = (JObject)JsonConvert.DeserializeObject(str_data_json); + if (object_data_prase_json != null) + { + product = (string)object_data_prase_json["打印名称设置"]; + for (int i = 0; i < readConfig.Length; i++) + { + readConfig[i].Svalue = (string)object_data_prase_json[readConfig[i].name]; + if (readConfig[i].name == "RSRP值") + { + rsrp_ck = readConfig[i].Svalue.Split('~'); + } + if (readConfig[i].name == "RSRQ值") + { + rsrq_ck = readConfig[i].Svalue.Split('~'); + } + if (readConfig[i].name == "外电电压值") + { + wd1 = Convert.ToInt32(readConfig[i].Svalue.Substring(0, 2)) - Convert.ToInt32(readConfig[i].Svalue.Substring(5, 1)); + wd2 = Convert.ToInt32(readConfig[i].Svalue.Substring(0, 2)) + Convert.ToInt32(readConfig[i].Svalue.Substring(5, 1)); + } + if (readConfig[i].name == "GNSS SNR值") + { + gnss = Convert.ToInt32(readConfig[i].Svalue.Substring(0, 2)); + } + } + for (int i = 0; i < writeConfig.Length; i++) + { + writeConfig[i].Svalue = (string)object_data_prase_json[writeConfig[i].name]; + } + for (int i = 0; i < alm_readConfig.Length; i++) + { + alm_readConfig[i].status = (bool)object_data_prase_json[alm_readConfig[i].name + "status"]; + } + for (int i = 0; i < alm_writeConfig.Length; i++) + { + alm_writeConfig[i].status = (bool)object_data_prase_json[alm_writeConfig[i].name + "status"]; + } + + + } + } + } + catch (Exception) + { + + } + } + + + private void read_set() + { + string strLoadConfigFilePath = Application.StartupPath + @"\YD07k配置.json";//路径 + try + { + using (StreamReader configFile = new StreamReader(strLoadConfigFilePath)) + { + string str_data_json = configFile.ReadToEnd(); //这一步至关重要 差一点写错了 + + JObject object_data_prase_json = (JObject)JsonConvert.DeserializeObject(str_data_json); + if (object_data_prase_json != null) + { + comboBox1.Text = (string)object_data_prase_json["打印机"]; + comboBox2.Text = (string)object_data_prase_json["张数"]; + checkBox2.Checked = (bool)object_data_prase_json["自动打印机"]; + checkBox1.Checked = (bool)object_data_prase_json["自动蓝牙连接"]; + checkBox3.Checked = (bool)object_data_prase_json["号码校验"]; + + } + } + } + catch (Exception) + { + + } + } + + private void cmbBox_Port_Update() + { + cmbPort.Items.Clear(); + RegistryKey keyCom = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm"); + + if (keyCom != null) + { + string[] sSubKeys = keyCom.GetValueNames(); + foreach (string sName in sSubKeys) + { + string sValue = (string)keyCom.GetValue(sName); + cmbPort.Items.Add(sValue); + } + } + + } + + //// + //把十六进制格式的字符串转换成字节数组。 + // + //要转换的十六进制格式的字符串 + //返回字节数组。 + public static byte[] getBytesFromString(string pString) + { + string[] str = pString.Split(' '); //把十六进制格式的字符串按空格转换为字符串数组。 + byte[] bytes = new byte[str.Length]; //定义字节数组并初始化,长度为字符串数组的长度。 + for (int i = 0; i < str.Length; i++) //遍历字符串数组,把每个字符串转换成字节类型赋值给每个字节变量。 + bytes[i] = Convert.ToByte(Convert.ToInt32(str[i], 16)); + return bytes; //返回字节数组。 + } + + + //把字节数组转为十六进制字符串 + public static string getStringFromBytes(byte[] pByte) + { + string str = ""; //定义字符串类型临时变量。 + //遍历字节数组,把每个字节转换成十六进制字符串,不足两位前面添“0”,以空格分隔累加到字符串变量里。 + for (int i = 0; i < pByte.Length; i++) + str += (pByte[i].ToString("X").PadLeft(2, '0') + " "); + str = str.TrimEnd(' '); //去掉字符串末尾的空格。 + return str; //返回字符串临时变量。 + } + + // /16进制转字符串 + static string ushortToHexString(ushort value) + { + byte[] bytes = BitConverter.GetBytes(value); // 将ushort转换为字节数组 + //if (BitConverter.IsLittleEndian) // 检查系统是否为小端字节序 + //{ + // Array.Reverse(bytes); // 如果是小端字节序,需要反转字节数组 + //} + + // 将每个字节转换为两位的十六进制字符串,并拼接 + string hexString = string.Join(" ", bytes.Select(b => b.ToString("X2"))); + return hexString; + } + + // CRC16-CCITT (0xFFFF)算法实现 + public static ushort ComputeChecksum(byte[] data) + { + ushort crc = 0xFFFF; // 初始化 CRC 为 0xFFFF + foreach (byte b in data) + { + crc ^= b; // 确保 b 是一个整数 + for (int i = 0; i < 8; i++) + { + if ((crc & 0x0001) != 0) + { + crc = (ushort)((crc >> 1) ^ 0xA001); // 0xA001 是 0x8005 按位颠倒后的结果 + } + else + { + crc = (ushort)(crc >> 1); + } + } + } + return crc; + } + + + // 将十六进制字符串转换为CRC16校验码的字符串格式("XX XX") + public static string crc16(string hexString) + { + // 将十六进制字符串转换为字节数组 + byte[] data = getBytesFromString(hexString); + + // 计算CRC16校验码 + ushort crc = ComputeChecksum(data); + + // 将校验码转换为字符串格式("XX XX") + return $"{(crc >> 8):X2} {(crc & 0xFF):X2}"; + } + + // 将字符串中的每个字符转换为十六进制字符串 + public static string StringToHex(string str) + { + string hexString = ""; + foreach (char c in str) + { + hexString += ((int)c).ToString("X2") + " "; // 每个字符转换为两位的十六进制字符串,并用空格分隔 + } + return hexString.Trim(); // 去掉尾部多余的空格 + } + + static string Int32ToTwoHexBytes(int value) + { + // 提取低8位和高8位 + byte low8 = (byte)(value & 0xFF); // 低8位 + byte high8 = (byte)((value >> 8) & 0xFF); // 高8位 + + // 转换为两位的十六进制字符串 + string lowHex = low8.ToString("X2"); // 低8位的十六进制字符串 + string highHex = high8.ToString("X2"); // 高8位的十六进制字符串 + + return $"{lowHex} {highHex}"; + } + + public static int ConvertToAsciiHex(string input) + { + // 将输入的字符串转换为 int32 类型的数值 + int intValue = int.Parse(input); + + // 将 int32 类型的数值转换为十六进制表示(字符串形式) + string hexString = intValue.ToString("X"); + + // 获取十六进制表示的第一个字符(假设只关心第一个字符) + char hexChar = hexString[0]; + + // 返回该字符的 ASCII 码值 + return (int)hexChar; + } + + private void send(string data) + { + if (serialPort.IsOpen) + { + byte[] temdata1 = getBytesFromString(data); + serialPort.Write(temdata1, 0, temdata1.Length); //发到串口 + } + else + { + txtStatus.Text = "请先打开串口!!"; + } + //this.Invoke(new Action(() => + //{ + // label2.Text = "send:" +data; + //})); + } + + int flag_readn = 0; + //建立连接 + private void _yd_connet() + { + string head = "59 44 "; + string data = "07 02 00 10 03"; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //alm建立连接 + private void _yd_alm_connet() + { + string head = "59 44 "; + string data = "37 02 00 10 03"; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //断开连接 + private void _yd_disconnet() + { + string head = "59 44 "; + string data = "07 02 00 10 00"; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //alm断开连接 + private void _yd_alm_disconnet() + { + string head = "59 44 "; + string data = "37 02 00 10 00"; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + + //心跳包 + private void yd_heart() + { + string head = "59 44 "; + string data = "07 02 00 3E 00"; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //alm心跳包 + private void yd_alm_heart() + { + string head = "59 44 "; + string data = "37 02 00 3E 00"; + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //交互指令 + private void yd_rid_opt(UInt16 cmd) + { + string head = "59 44 "; + string data = "07 04 00 31 00 " + ushortToHexString(cmd); + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //读 + private void yd_did_read_one(UInt16 cmd) + { + string head = "59 44 "; + string data = "07 03 00 22 " + ushortToHexString(cmd); + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + + } + + + //alm_读 + private void yd_almdid_read_one(UInt16 cmd) + { + string head = "59 44 "; + string data = "37 03 00 22 " + ushortToHexString(cmd); + string end = head + data + " " + crc16(data) + " 4B 4A"; + send(end); + } + + //写 + private void yd_did_write_one(UInt16 cmd, string data) + { + if (checkBox3.Checked) + { + return; + } + + string cmd_data = ""; + if (cmd == 0xcf40) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 99) + { + cmd_data = Convert.ToInt32(data).ToString("X2"); + } + else + { + + } + } + + if (cmd == 0xcf41) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 254) + { + cmd_data = Convert.ToInt32(data).ToString("X2"); + } + else + { + + } + } + + if (cmd == 0xcf42) + { + if (data == "IOT") + { + cmd_data = StringToHex("E"); + } + if (data == "BCM") + { + cmd_data = StringToHex("D"); + } + else + { + + } + } + + if (cmd == 0xcf43) + { + if (data == "嘉为") + { + cmd_data = StringToHex("2"); + } + if (data == "高兴新") + { + cmd_data = StringToHex("6"); + } + if (data == "如新") + { + cmd_data = StringToHex("9"); + } + } + + if (cmd == 0xcf44) + { + if (data == "无锡雅迪") + { + cmd_data = StringToHex("1"); + } + if (data == "天津雅迪") + { + cmd_data = StringToHex("2"); + } + if (data == "浙江雅迪") + { + cmd_data = StringToHex("3"); + } + if (data == "广州雅迪") + { + cmd_data = StringToHex("4"); + } + if (data == "成都雅迪") + { + cmd_data = StringToHex("5"); + } + if (data == "越南雅迪") + { + cmd_data = StringToHex("6"); + } + } + + if (cmd == 0xcf45) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 31) + { + cmd_data = StringToHex(data.Substring(0, 1)); + yd_did_write_one(0xcf46, data.Substring(1, 1)); + } + } + + if (cmd == 0xcf46) + { + cmd_data = StringToHex(data); + } + + if (cmd == 0xcf47) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 12) + { + cmd_data = ConvertToAsciiHex(data).ToString("X"); + } + } + + if (cmd == 0xcf48) + { + if (Convert.ToInt32(data.Substring(0, 1)) >= 0 && Convert.ToInt32(data.Substring(0, 1)) <= 9) + { + cmd_data = StringToHex(data.Substring(0, 1)); + yd_did_write_one(0xcf49, data.Substring(1, 1)); + } + } + + if (cmd == 0xcf49) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 9) + { + cmd_data = StringToHex(data); + } + } + + if (cmd == 0xcf4a) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 999999) + { + cmd_data = StringToHex(data) + " 00"; + } + } + + if (cmd == 0xcf4b) + { + if (data.Length < 65) + { + cmd_data = StringToHex(data) + " 00"; + } + + } + + if (cmd == 0xcf4c) + { + if (data.Length < 65535) + { + cmd_data = Int32ToTwoHexBytes(Convert.ToInt32(data)); + } + + } + + if (cmd == 0xcf4d) + { + string hexString = Convert.ToInt32(data).ToString("X8"); + cmd_data = $"{hexString.Substring(6, 2)} {hexString.Substring(4, 2)} {hexString.Substring(2, 2)} {hexString.Substring(0, 2)}"; + } + + if (cmd == 0xcf4e) + { + if (data.Length < 17) + { + cmd_data = StringToHex(data) + " 00"; + } + + } + + if (cmd == 0xcf4f) + { + if (data.Length < 7) + { + cmd_data = StringToHex(data) + " 00"; + } + + } + + if (cmd == 0xcf50) + { + if (data.Length < 10) + { + cmd_data = StringToHex(data) + " 00 00 00"; + } + + } + + string head = "59 44 "; + string data2 = "07 " + ((cmd_data.Length + 1) / 3 + 3).ToString("X2") + " 00 2E " + ushortToHexString(cmd) + " " + cmd_data; + string end = head + data2 + " " + crc16(data2) + " 4B 4A"; + send(end); + + } + + + //alm写 + private void yd_almdid_write_one(UInt16 cmd, string data) + { + if (checkBox3.Checked) + { + return; + } + string cmd_data = ""; + if (cmd == 0xcf4d || cmd == 0xcf63) + { + string hexString = Convert.ToInt32(data).ToString("X8"); + cmd_data = $"{hexString.Substring(6, 2)} {hexString.Substring(4, 2)} {hexString.Substring(2, 2)} {hexString.Substring(0, 2)}"; + } + + if (cmd == 0xcf61) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 2) + { + cmd_data = StringToHex(data); + } + } + + if (cmd == 0xcf62) + { + if (Convert.ToInt32(data) >= 0 && Convert.ToInt32(data) <= 1) + { + cmd_data = StringToHex(data); + } + } + + if (cmd == 0xcf64) + { + StringBuilder mac = new StringBuilder(); + + for (int i = 0; i < data.Length; i += 2) + { + if (i + 2 <= data.Length) + { + mac.Append(data.Substring(i, 2) + " "); + } + else + { + mac.Append(data.Substring(i)); // 处理剩余部分 + } + } + + cmd_data = mac.ToString().TrimEnd(); + } + + + string head = "59 44 "; + string data2 = "37 " + ((cmd_data.Length + 1) / 3 + 3).ToString("X2") + " 00 2E " + ushortToHexString(cmd) + " " + cmd_data; + string end = head + data2 + " " + crc16(data2) + " 4B 4A"; + send(end); + } + + //自动测试 + private void zd_test(int i) + { + + if (i < 31) + { + ushort did = Convert.ToUInt16(readConfig[i].DID, 16); + yd_did_read_one(did); + } + else if (i > 30 && i<46) + { + ushort did = Convert.ToUInt16(writeConfig[i - 31].DID, 16); + if (did == 0xcf46) + { + yd_did_read_one(0xcf45); + } + if (did == 0xcf49) + { + yd_did_read_one(0xcf48); + } + yd_did_read_one(did); + } + else if (i>45 && i<69) + { + ushort did = Convert.ToUInt16(alm_readConfig[i-46].DID, 16); + yd_almdid_read_one(did); + } + else if (i > 68 ) + { + ushort did = Convert.ToUInt16(alm_writeConfig[i-69].DID, 16); + yd_almdid_read_one(did); + } + + } + + + private void btnOpen_usb_Click(object sender, EventArgs e) + { + if (btnOpen_usb.Text == "打开") + { + try + { + if (!serialPort.IsOpen) + { + serialPort.PortName = cmbPort.Text; + serialPort.BaudRate = 115200; //波特率 + serialPort.DataBits = 8; //数据位 + serialPort.StopBits = StopBits.One; //停止位 + serialPort.Parity = Parity.None; //奇偶校验 + + serialPort.Open();//打开串口 + } + btnOpen_usb.Text = "关闭"; + txtStatus.Text = "串口已打开!"; + + serialPort.DataReceived += new SerialDataReceivedEventHandler(PortReceivedHandle); //加载接收事件 + + } + + catch + { + txtStatus.Text = "串口打开错误或串口不存在!"; + } + } + else //关闭串口 + try + { + if (serialPort.IsOpen) + { + serialPort.Close(); //关闭串口 + btnOpen_usb.Text = "打开"; + txtStatus.Text = "串口已关闭!"; + flag_heart = 0; + flag_almheart = 0; + out_time = -1; + _yd_disconnet(); + flag_connet = 0; + flag_almconnet = 0; + clean(); + //button1.Text = "开始检测"; + } + } + catch + { + txtStatus.Text = "串口关闭错误或串口不存在!"; + } + } + + + // 将十六进制字符串转换为整数 + public static int HexStringToInt(string hexString) + { + // 移除字符串中的所有空格 + string cleanedHexString = hexString.Replace(" ", ""); + + // 将十六进制字符串转换为整数 + int result = Convert.ToInt32(cleanedHexString, 16); + return result; + } + private void PortReceivedHandle(object sender, SerialDataReceivedEventArgs e) + { + try + { + //第一部分 串口接收 + SerialPort serialport = (SerialPort)(sender); + System.Threading.Thread.Sleep(200); + int n = serialport.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致 + //writeA883SmtLog(smt_log_path,"n = "+ Convert.ToString(n), 0, 2); + byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据 + serialport.Read(buf, 0, n);//读取缓冲数据 + serialport.DiscardInBuffer(); //清空接收中断buffer + //str_result = Encoding.UTF8.GetString(buf); + //byte[] str16_result = getBytesFromString(str_result); + string str_result = getStringFromBytes(buf); + int ret_index = -1; + //if (buf[0]==0x59 && buf[1]==0x44 && buf[2]==0x0f) //找到头 + //{ + + // int data_len = buf[4] << 8 | buf[3]; + // byte[] data= buf.Skip(2 + 1 + 2).Take(data_len).ToArray(); + // int crc = buf[2 + 1 + 2 + data_len] << 8 | buf[2 + 1 + 2 + data_len + 1]; + // byte[] end = buf.Skip(2 + 1 + 2 + data_len + 2).Take(data_len + 2 + 2).ToArray(); + // // 校验CRC + // byte[] tmp = buf.Skip(2).Take(data_len+1+2).ToArray(); + // int tmp_crc16 = HexStringToInt(crc16(getStringFromBytes(tmp))); + // if (crc == tmp_crc16) + // { + // if (end[0] == 0x4b && end[1] == 0x4a) + // { + // recvAnalz(data,data_len); + // } + // } + + //} + int index = 0; // 当前处理的索引 + while (index < buf.Length) + { + // 检查头部 + if (index + 5 < buf.Length && buf[index] == 0x59 && buf[index + 1] == 0x44 && (buf[index + 2] == 0x0f || buf[index + 2] == 0x3f)) + { + // 提取数据长度 + int data_len = buf[index + 4] << 8 | buf[index + 3]; + + // 提取数据部分 + byte[] data = buf.Skip(index + 2 + 1 + 2).Take(data_len).ToArray(); + + // 提取CRC部分 + int crc = buf[index + 2 + 1 + 2 + data_len] << 8 | buf[index + 2 + 1 + 2 + data_len + 1]; + + // 提取结束标志部分 + byte[] end = buf.Skip(index + 2 + 1 + 2 + data_len + 2).Take(2).ToArray(); + + // 提取用于CRC校验的数据 + byte[] tmp = buf.Skip(index + 2).Take(data_len + 1 + 2).ToArray(); + + // 计算CRC + int tmp_crc16 = HexStringToInt(crc16(getStringFromBytes(tmp))); + + // 校验CRC + if (crc == tmp_crc16) + { + // 校验结束标志 + if (end.Length == 2 && end[0] == 0x4b && end[1] == 0x4a) + { + // 处理有效数据 + if (buf[index + 2] == 0x0f) + { + Heart = true; + recvAnalz(data, data_len); + } + if(buf[index + 2] == 0x3f) + { + almHeart = true; + alm_recvAnalz(data, data_len); + } + //this.Invoke(new Action(() => + //{ + // label2.Text = str_result ; + //})); + } + } + } + + // 移动到下一组数据 + index++; + } + + + } + catch (Exception) + { + + } + } + + int flag_gnss = 0, acc_bl = 1000; + string year = "", day = ""; + string[] numbers; + //响应数据分析 + private void recvAnalz(byte[] data, int data_len) + { + ushort cmd = data[0]; + Heart = true; + switch (cmd) + { + case 0x7f://错误码 + if (data[1] == 0x10) + { + if (data[2] == 0x12) + { + this.Invoke(new Action(() => + { + label2.Text = "连接/断开:不受支持的子功能"; + })); + } + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "连接/断开:消息长度或格式不正确"; + })); + } + + } + if (data[1] == 0x3E) + { + if (data[2] == 0x12) + { + this.Invoke(new Action(() => + { + label2.Text = "心跳:不受支持的子功能"; + })); + } + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "心跳:消息长度或格式不正确"; + })); + } + } + if (data[1] == 0x22) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "读:消息长度或格式不正确"; + })); + } + + } + if (data[1] == 0x2E) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "写:消息长度或格式不正确"; + })); + } + if (data[2] == 0x31) + { + this.Invoke(new Action(() => + { + label2.Text = "写:不支持的DID或DID为只读DID"; + })); + } + if (data[2] == 0x72) + { + this.Invoke(new Action(() => + { + label2.Text = "写:写出错"; + })); + + } + } + if (data[1] == 0x31) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "交互:消息长度或格式不正确"; + })); + } + if (data[2] == 0x31) + { + this.Invoke(new Action(() => + { + label2.Text = "交互:不支持的DID或DID为只读DID"; + })); + } + if (data[2] == 0x72) + { + this.Invoke(new Action(() => + { + label2.Text = "交互:写出错"; + })); + + } + } + + + break; + case 0x50://建立连接 + if (data[1] == 0x03) + { + this.Invoke(new Action(() => + { + label2.Text = "连接成功IOT"; + })); + yd_heart(); + flag_connet = 0; + flag_almconnet = 0; + flag_heart = 1; + + } + + if (data[1] == 0x00)//断开连接 + { + + } + break; + + case 0x7e://心跳报文 + if (data[1] == 0x00) + { + //Heart = true; + } + break; + + case 0x62://读响应 + ushort did = (ushort)((data[2] << 8) | data[1]); + string DID = ((data[2] << 8) | data[1]).ToString("X4"); + // 查找特定 value 对应的 name + int index = Array.FindIndex(readConfig, myUnitClass => myUnitClass.DID == DID); + //数字 + if ((did >= 0xCF81) && (did <= 0xCF8C) || (did == 0xCF08) || (did == 0xCF09) || (did == 0xCF0C)) + { + if (did == 0xCF85) + { + readConfig[index].threshold = string.Join(", ", data.Skip(3).Select(s8 => (s8 > 127) ? s8 - 256 : s8)); + // 使用 Split 方法按逗号拆分字符串 + numbers = readConfig[index].threshold.Split(','); + flag_gnss = 1; + } + else if ((did == 0xCF86) || (did == 0xCF87)) + { + readConfig[index].threshold = ((data[3] > 127) ? data[3] - 256 : data[3]).ToString() + "dbm"; + readConfig[index].Ivalue = Convert.ToInt32(((data[3] > 127) ? data[3] - 256 : data[3]).ToString()); + } + else if ((did == 0xCF88) || (did == 0xCF89)) + { + readConfig[index].threshold = ((data[3] > 127) ? data[3] - 256 : data[3]).ToString() + "db"; + readConfig[index].Ivalue = Convert.ToInt32(((data[3] > 127) ? data[3] - 256 : data[3]).ToString()); + } + else if (did == 0xCF0C) + { + readConfig[index].threshold = Convert.ToString((data[4] << 8) | data[3]); + } + else + { + readConfig[index].threshold = Convert.ToString(data[3]); + readConfig[index].Ivalue = Convert.ToInt32(readConfig[index].threshold); + } + + } + // 显示字符串 + if (((did >= 0xCF00) && (did <= 0xCF06)) || (did == 0xCF0A) || (did == 0xCF0B) || (did == 0xCF80) && data[3] != 0xff) + { + readConfig[index].threshold = string.Join("", data.Skip(3).Select(b => (char)b)).Replace("\0", ""); + } + // BCD 字符串 + if (did == 0xCF07 && data[3] != 0xff) + { + readConfig[index].threshold = string.Concat(data.Skip(3).Select(b => (char)b)).Replace("\0", ""); + + } + + //读写分组 + int index2 = Array.FindIndex(writeConfig, myUnitClass => myUnitClass.DID == DID); + // 数字1 + if ((did == 0xCF40) || (did == 0xCF41)) + { + writeConfig[index2].threshold = Convert.ToString(data[3]); + } + if (did == 0xCF42) + { + if (data[3] == 0xff) + { + writeConfig[index2].threshold = "0xFF"; + } + else + { + char character = (char)data[3]; + if (character == 'E') + { + writeConfig[index2].threshold = "IOT"; + } + if (character == 'D') + { + writeConfig[index2].threshold = "BCM"; + } + } + } + + if (did == 0xCF43) + { + if (data[2] == 0xff) + { + writeConfig[index2].threshold = "0xFF"; + } + else + { + char character = (char)data[3]; + if (character == '2') + { + writeConfig[index2].threshold = "嘉为"; + } + if (character == '6') + { + writeConfig[index2].threshold = "高新兴"; + } + if (character == '9') + { + writeConfig[index2].threshold = "如新"; + } + } + } + + if (did == 0xCF44) + { + if (data[2] == 0xff) + { + writeConfig[index2].threshold = "0xFF"; + } + else + { + char character = (char)data[3]; + writeConfig[index2].threshold = character + "."; + if (character == '1') + { + writeConfig[index2].threshold += "无锡"; + } + if (character == '2') + { + writeConfig[index2].threshold += "天津"; + } + if (character == '3') + { + writeConfig[index2].threshold += "浙江"; + } + if (character == '4') + { + writeConfig[index2].threshold += "广州"; + } + if (character == '5') + { + writeConfig[index2].threshold += "成都"; + } + if (character == '6') + { + writeConfig[index2].threshold += "越南"; + } + writeConfig[index2].threshold += "雅迪"; + } + } + + if ((did == 0xCF45)) + { + day = Convert.ToString((char)data[3]); + //writeConfig[index2].threshold = Convert.ToString((char)data[3]); + } + + if (did == 0xCF47) + { + string years = Convert.ToString((char)data[3]); + string yeadrss = Convert.ToInt32(years, 16).ToString("D2"); + writeConfig[index2].threshold = yeadrss; + } + + if ((did == 0xCF48)) + { + year = Convert.ToString((char)data[3]); + + } + + + if ((did == 0xCF4A) || (did == 0xCF4B) || (did == 0xCF4E) || (did == 0xCF4F) || (did == 0xCF50)) + { + writeConfig[index2].threshold = string.Join("", data.Skip(3).Select(b => (char)b)).Replace("\0", ""); + } + + // 数字2 + if (did == 0xCF4C) + { + writeConfig[index2].threshold = Convert.ToString((data[4] << 8) | data[3]); + } + // 数字4 + if (did == 0xCF4D) + { + writeConfig[index2].threshold = Convert.ToString((data[6] << 24 | data[5] << 16 | data[4] << 8 | data[3])); + if (Convert.ToInt32(writeConfig[index2].threshold) > 0) + { + acc_bl = Convert.ToInt32(writeConfig[index2].threshold); + } + } + + if ((did == 0xCF46)) + { + writeConfig[index2].threshold = day + Convert.ToString((char)data[3]); + yd_did_read_one(0xcf45); + } + if ((did == 0xCF49)) + { + writeConfig[index2].threshold = year + Convert.ToString((char)data[3]); + yd_did_read_one(0xcf48); + } + + + break; + + case 0x6e://写响应 + ushort did2 = (ushort)((data[2] << 8) | data[1]); + //string DID2 = ((data[2] << 8) | data[1]).ToString("X4"); + //int index3= Array.FindIndex(writeConfig, myUnitClass => myUnitClass.DID ==DID2); + //writeConfig[index3].threshold = ""; + yd_did_read_one(did2); + this.Invoke(new Action(() => + { + label2.Text = "写入成功"; + })); + + flag_write = 0; + break; + + case 0x71://交互指令 + if (data[1] == 0x00) + { + + } + break; + + + } + + + } + + //响应数据分析 + private void alm_recvAnalz(byte[] data, int data_len) + { + ushort cmd = data[0]; + switch (cmd) + { + case 0x7f://错误码 + if (data[1] == 0x10) + { + if (data[2] == 0x12) + { + this.Invoke(new Action(() => + { + label2.Text = "alm连接/断开:不受支持的子功能"; + })); + } + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "alm连接/断开:消息长度或格式不正确"; + })); + } + + } + if (data[1] == 0x3E) + { + if (data[2] == 0x12) + { + this.Invoke(new Action(() => + { + label2.Text = "alm心跳:不受支持的子功能"; + })); + } + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "alm心跳:消息长度或格式不正确"; + })); + } + } + if (data[1] == 0x22) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "alm读:消息长度或格式不正确"; + })); + } + + } + if (data[1] == 0x2E) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "alm写:消息长度或格式不正确"; + })); + } + if (data[2] == 0x31) + { + this.Invoke(new Action(() => + { + label2.Text = "alm写:不支持的DID或DID为只读DID"; + })); + } + if (data[2] == 0x72) + { + this.Invoke(new Action(() => + { + label2.Text = "alm写:写出错"; + })); + + } + } + if (data[1] == 0x31) + { + if (data[2] == 0x13) + { + this.Invoke(new Action(() => + { + label2.Text = "alm交互:消息长度或格式不正确"; + })); + } + if (data[2] == 0x31) + { + this.Invoke(new Action(() => + { + label2.Text = "alm交互:不支持的DID或DID为只读DID"; + })); + } + if (data[2] == 0x72) + { + this.Invoke(new Action(() => + { + label2.Text = "alm交互:写出错"; + })); + + } + } + break; + case 0x50://建立连接 + if (data[1] == 0x03) + { + this.Invoke(new Action(() => + { + label2.Text = "连接成功"; + })); + yd_alm_heart(); + flag_almconnet = 1; + flag_almheart = 0; + + } + + if (data[1] == 0x00)//断开连接 + { + + } + break; + + case 0x7e://心跳报文 + if (data[1] == 0x00) + { + //Heart = true; + } + break; + + case 0x62://读响应 + ushort did = (ushort)((data[2] << 8) | data[1]); + string DID = ((data[2] << 8) | data[1]).ToString("X4"); + // 查找特定 value 对应的 name + int index = Array.FindIndex(alm_readConfig, myUnitClass => myUnitClass.DID == DID); + if (did>=0xCFC0 && did<=0xCFB5) + { + alm_readConfig[index].threshold = Convert.ToString(data[3]); + alm_readConfig[index].Ivalue = Convert.ToInt32(alm_readConfig[index].threshold); + } + + if (did >= 0xCF01 ) + { + alm_readConfig[index].threshold = string.Join("", data.Skip(3).Select(b => (char)b)).Replace("\0", ""); + } + + + //读写分组 + int index2 = Array.FindIndex(alm_writeConfig, myUnitClass => myUnitClass.DID == DID); + if (did == 0xCF61 || did == 0xCF62) + { + alm_writeConfig[index].threshold = Convert.ToString(data[3]); + alm_writeConfig[index].Ivalue = Convert.ToInt32(alm_writeConfig[index].threshold); + } + + if (did == 0xCF4d|| did == 0xCF63) + { + alm_writeConfig[index2].threshold = Convert.ToString((data[6] << 24 | data[5] << 16 | data[4] << 8 | data[3])); + } + + if (did == 0xCF64) + { + string ble_mac = getStringFromBytes(data); + alm_writeConfig[index2].threshold = getStringFromBytes(data).Substring(3,12); + int flag = 1; + } + + break; + case 0x6e://写响应 + ushort did2 = (ushort)((data[2] << 8) | data[1]); + //string DID2 = ((data[2] << 8) | data[1]).ToString("X4"); + //int index3= Array.FindIndex(writeConfig, myUnitClass => myUnitClass.DID ==DID2); + //writeConfig[index3].threshold = ""; + yd_almdid_read_one(did2); + this.Invoke(new Action(() => + { + label2.Text = "写入成功"; + })); + + flag_write = 0; + break; + } + } + struct myUnitClass + { + public string DID; //DID + public string name; //名称 + public string threshold; + public bool status; + public Int64 Ivalue; + public bool Bvalue; + public string Svalue; + public byte[] Fvalue; + public string sw; //是pass 还是fail , 用于pass排在上上方 + }; + + myUnitClass[] readConfig = new myUnitClass[31]; + myUnitClass[] writeConfig = new myUnitClass[15]; + myUnitClass[] alm_readConfig = new myUnitClass[23]; + myUnitClass[] alm_writeConfig = new myUnitClass[5]; + + + + private void my_set() + { + //------只读1次----- + readConfig[0].DID = "CF00"; + readConfig[0].name = "串口诊断协议版本号"; + readConfig[0].status = true; + + readConfig[1].DID = "CF01"; + readConfig[1].name = "软件版本号"; + readConfig[1].status = true; + + readConfig[2].DID = "CF02"; + readConfig[2].name = "设备IMEI"; + readConfig[2].status = true; + + readConfig[3].DID = "CF03"; + readConfig[3].name = "设备ICCID"; + readConfig[3].status = true; + + readConfig[4].DID = "CF04"; + readConfig[4].name = "GNSS产品型号"; + readConfig[4].status = true; + + readConfig[5].DID = "CF05"; + readConfig[5].name = "GNSS软件版本号"; + readConfig[5].status = true; + + readConfig[6].DID = "CF06"; + readConfig[6].name = "GNSS硬件版本号"; + readConfig[6].status = true; + + readConfig[7].DID = "CF07"; + readConfig[7].name = "SPI FLASH ID"; + readConfig[7].status = true; + + readConfig[8].DID = "CF08"; + readConfig[8].name = "BOOT底层软件版本"; + readConfig[8].status = true; + + readConfig[9].DID = "CF09"; + readConfig[9].name = "BOOT升级协议版本"; + readConfig[9].status = true; + + readConfig[10].DID = "CF0A"; + readConfig[10].name = "通信协议版本号"; + readConfig[10].status = true; + + readConfig[11].DID = "CF0B"; + readConfig[11].name = "备份区软件版本号"; + readConfig[11].status = true; + + readConfig[12].DID = "CF0C"; + readConfig[12].name = "OTA零部件编码"; + readConfig[12].status = true; + //------只读N次----- + readConfig[13].DID = "CF80"; + readConfig[13].name = "OTA域名"; + readConfig[13].status = true; + + readConfig[14].DID = "CF81"; + readConfig[14].name = "拨号状态"; + readConfig[14].status = true; + + readConfig[15].DID = "CF82"; + readConfig[15].name = "驻网状态"; + readConfig[15].status = true; + + readConfig[16].DID = "CF83"; + readConfig[16].name = "服务器连接状态"; + readConfig[16].status = true; + + readConfig[17].DID = "CF84"; + readConfig[17].name = "GNSS定位状态"; + readConfig[17].status = true; + + readConfig[18].DID = "CF85"; + readConfig[18].name = "GNSS SNR值"; + readConfig[18].status = true; + + readConfig[19].DID = "CF86"; + readConfig[19].name = "RSSI值"; + readConfig[19].status = true; + + readConfig[20].DID = "CF87"; + readConfig[20].name = "RSRP值"; + readConfig[20].status = true; + + readConfig[21].DID = "CF88"; + readConfig[21].name = "RSRQ值"; + readConfig[21].status = true; + + readConfig[22].DID = "CF89"; + readConfig[22].name = "SINR值"; + readConfig[22].status = true; + + readConfig[23].DID = "CF8A"; + readConfig[23].name = "ACC管脚电平状态"; + readConfig[23].status = true; + + readConfig[24].DID = "CF8B"; + readConfig[24].name = "外电电压值"; + readConfig[24].status = true; + + readConfig[25].DID = "CF8C"; + readConfig[25].name = "K线通讯状态"; + readConfig[25].status = true; + + ////新增YD07K + /// + readConfig[26].DID = "CF0D"; + readConfig[26].name = "GSENSOR地址"; + readConfig[26].status = true; + + readConfig[27].DID = "CF8D"; + readConfig[27].name = "六轴数据校准值"; + readConfig[27].status = true; + + readConfig[28].DID = "CF8E"; + readConfig[28].name = "六轴传感器状态"; + readConfig[28].status = true; + + readConfig[29].DID = "CF8F"; + readConfig[29].name = "音频文件状态"; + readConfig[29].status = true; + + readConfig[30].DID = "CF90"; + readConfig[30].name = "外电电平"; + readConfig[30].status = true; + + //---alm读节点---- + alm_readConfig[0].DID = "CF01"; + alm_readConfig[0].name = "alm软件版本号"; + alm_readConfig[0].status = true; + + + alm_readConfig[1].DID = "CFA0"; + alm_readConfig[1].name = "ACC1输出"; + alm_readConfig[1].status = true; + + + alm_readConfig[2].DID = "CFA1"; + alm_readConfig[2].name = "ACC1预充"; + alm_readConfig[2].status = true; + + + alm_readConfig[3].DID = "CFA2"; + alm_readConfig[3].name = "ACC2输出"; + alm_readConfig[3].status = true; + + alm_readConfig[4].DID = "CFA3"; + alm_readConfig[4].name = "ACC2预充"; + alm_readConfig[4].status = true; + + + alm_readConfig[5].DID = "CFA4"; + alm_readConfig[5].name = "ACC1输入"; + alm_readConfig[5].status = true; + + alm_readConfig[6].DID = "CFA5"; + alm_readConfig[6].name = "机械钥匙"; + alm_readConfig[6].status = true; + + alm_readConfig[7].DID = "CFA6"; + alm_readConfig[7].name = "ACC2输入"; + alm_readConfig[7].status = true; + + alm_readConfig[8].DID = "CFA7"; + alm_readConfig[8].name = "右转向灯输入"; + alm_readConfig[8].status = true; + + alm_readConfig[9].DID = "CFA8"; + alm_readConfig[9].name = "蓝牙指示灯输出"; + alm_readConfig[9].status = true; + + alm_readConfig[10].DID = "CFA9"; + alm_readConfig[10].name = "双闪输出"; + alm_readConfig[10].status = true; + + alm_readConfig[11].DID = "CFAA"; + alm_readConfig[11].name = "轮动输入"; + alm_readConfig[11].status = true; + + alm_readConfig[12].DID = "CFAB"; + alm_readConfig[12].name = "左转向灯输入"; + alm_readConfig[12].status = true; + + alm_readConfig[13].DID = "CFAC"; + alm_readConfig[13].name = "MOTO_A输出"; + alm_readConfig[13].status = true; + + alm_readConfig[14].DID = "CFAD"; + alm_readConfig[14].name = "MOTO_B输出"; + alm_readConfig[14].status = true; + + alm_readConfig[15].DID = "CFAE"; + alm_readConfig[15].name = "锁电机输出"; + alm_readConfig[15].status = true; + + alm_readConfig[16].DID = "CFAF"; + alm_readConfig[16].name = "电磁阀输出"; + alm_readConfig[16].status = true; + + alm_readConfig[17].DID = "CFB0"; + alm_readConfig[17].name = "一键启动输入"; + alm_readConfig[17].status = true; + + alm_readConfig[18].DID = "CFB1"; + alm_readConfig[18].name = "坐垫感应输入"; + alm_readConfig[18].status = true; + + alm_readConfig[19].DID = "CFB2"; + alm_readConfig[19].name = "alm_外电电压值"; + alm_readConfig[19].status = true; + + alm_readConfig[20].DID = "CFB3"; + alm_readConfig[20].name = "alm_K线通讯"; + alm_readConfig[20].status = true; + + alm_readConfig[21].DID = "CFB4"; + alm_readConfig[21].name = "蓝牙连接"; + alm_readConfig[21].status = true; + + alm_readConfig[22].DID = "CFB5"; + alm_readConfig[22].name = "弹簧振子"; + alm_readConfig[22].status = true; + + //---alm写节点---- + + alm_writeConfig[0].DID = "CF4D"; + alm_writeConfig[0].name = "alm_外电电压AD比例值"; + alm_writeConfig[0].status = true; + + alm_writeConfig[1].DID = "CF61"; + alm_writeConfig[1].name = "alm_音量等级"; + alm_writeConfig[1].status = true; + + alm_writeConfig[2].DID = "CF62"; + alm_writeConfig[2].name = "alm_声音主题"; + alm_writeConfig[2].status = true; + + alm_writeConfig[3].DID = "CF63"; + alm_writeConfig[3].name = "alm_ACC电压AD分压比例值"; + alm_writeConfig[3].status = true; + + alm_writeConfig[4].DID = "CF64"; + alm_writeConfig[4].name = "alm_蓝牙MCA地址"; + alm_writeConfig[4].status = true; + + //-----读写---- + writeConfig[0].DID = "CF40"; + writeConfig[0].name = "硬件版本号"; + writeConfig[0].status = true; + + writeConfig[1].DID = "CF41"; + writeConfig[1].name = "产品型号"; + writeConfig[1].status = true; + + writeConfig[2].DID = "CF42"; + writeConfig[2].name = "产品识别码"; + writeConfig[2].status = true; + + writeConfig[3].DID = "CF43"; + writeConfig[3].name = "产商识别码"; + writeConfig[3].status = true; + + writeConfig[4].DID = "CF44"; + writeConfig[4].name = "客户识别码"; + writeConfig[4].status = true; + + // writeConfig[6].DID = "CF45"; + // writeConfig[6].name = "生产日十位"; + + writeConfig[5].DID = "CF46"; + writeConfig[5].name = "生产日"; + writeConfig[5].status = true; + + writeConfig[6].DID = "CF47"; + writeConfig[6].name = "生产月份"; + writeConfig[6].status = true; + + // writeConfig[7].DID = "CF48"; + //writeConfig[7].name = "生产年份十位"; + + writeConfig[7].DID = "CF49"; + writeConfig[7].name = "生产年份"; + writeConfig[7].status = true; + + writeConfig[8].DID = "CF4A"; + writeConfig[8].name = "流水号"; + writeConfig[8].status = true; + + writeConfig[9].DID = "CF4B"; + writeConfig[9].name = "服务器域名"; + writeConfig[9].status = true; + + writeConfig[10].DID = "CF4C"; + writeConfig[10].name = "服务器端口号"; + writeConfig[10].status = true; + + writeConfig[11].DID = "CF4D"; + writeConfig[11].name = "外电电压AD比列值"; + writeConfig[11].status = true; + + writeConfig[12].DID = "CF4E"; + writeConfig[12].name = "物料编码"; + writeConfig[12].status = true; + + writeConfig[13].DID = "CF4F"; + writeConfig[13].name = "供应商编码"; + writeConfig[13].status = true; + + writeConfig[14].DID = "CF50"; + writeConfig[14].name = "批次号"; + writeConfig[14].status = true; + + + } + + int index = 0, index3=0; + int index2 = 0, flag_dy = 0; + string flag_pass = "FAIL"; + private void timer1_Tick(object sender, EventArgs e) + { + + if (serialPort.IsOpen && flag_heart == 0) //串口打开且无心跳 进入连接流程 + { + out_time = 0; + flag_connet = 1; + + } + + + if (!checkBox3.Checked) + { + //this.dataGridView1.Rows.Clear(); + ///---------初始化------------ + if (index < 1) + { + for (int i = 0; i < readConfig.Length; i++) + { + if (readConfig[i].status) + { + index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[index].Cells[0].Value = readConfig[i].name; + dataGridView1.Rows[index].Cells[1].Value = readConfig[i].threshold; + } + } + } + + if (index3 < 1) + { + for (int i = 0; i < alm_readConfig.Length; i++) + { + if (alm_readConfig[i].status) + { + index3 = this.dataGridView3.Rows.Add(); + dataGridView3.Rows[index3].Cells[0].Value = alm_readConfig[i].name; + dataGridView3.Rows[index3].Cells[1].Value = alm_readConfig[i].threshold; + } + } + } + + if (index2 < 1) + { + + + for (int i = 0; i < writeConfig.Length; i++) + { + if (writeConfig[i].status) + { + index2 = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index2].Cells[0].Value = writeConfig[i].name; + dataGridView2.Rows[index2].Cells[1].Value = writeConfig[i].threshold; + } + } + + for (int i = 0; i < alm_writeConfig.Length; i++) + { + if (alm_writeConfig[i].status) + { + index2 = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index2].Cells[0].Value = alm_writeConfig[i].name; + dataGridView2.Rows[index2].Cells[1].Value = alm_writeConfig[i].threshold; + } + } + + } + + ///---------测试中------------ + int smt_result = 1; + if (index <= 0 || index2 <= 0 || index3 <= 0) + { + return; + } + + for (int i = 0; i <= index; i++) + { + string name = (string)dataGridView1.Rows[i].Cells[0].Value; + // 查找特定 value 对应的 name + int readindex = Array.FindIndex(readConfig, myUnitClass => myUnitClass.name == name.ToString()); + dataGridView1.Rows[i].Cells[1].Value = readConfig[readindex].threshold; + if (readConfig[readindex].name == "拨号状态" || readConfig[readindex].name == "驻网状态" || + readConfig[readindex].name == "服务器连接状态" || readConfig[readindex].name == "GNSS定位状态" || + readConfig[readindex].name == "K线通讯状态") + { + if (readConfig[readindex].threshold == "1") + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "GNSS SNR值") + { + int snr_cnt = 0; + if (flag_gnss == 1) + { + for (int a = 0; a < 4; a++) + + { + if (Convert.ToInt64(numbers[a]) >= gnss) + { + snr_cnt++; + } + } + } + if (snr_cnt == 4) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "RSSI值") + { + if (readConfig[readindex].Ivalue >= -80 && readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "SINR值") + { + if (readConfig[readindex].Ivalue >= 0 && readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "RSRP值") + { + if (readConfig[readindex].Ivalue <= Convert.ToInt32(rsrp_ck[0]) && readConfig[readindex].Ivalue >= Convert.ToInt32(rsrp_ck[1]) && + readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "RSRQ值") + { + if (readConfig[readindex].Ivalue <= Convert.ToInt32(rsrq_ck[0]) && readConfig[readindex].Ivalue >= Convert.ToInt32(rsrq_ck[1]) && + readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "ACC管脚电平状态") + { + if (readConfig[readindex].Ivalue == Convert.ToInt32(readConfig[readindex].Svalue) && readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else if (readConfig[readindex].name == "外电电压值") + { + if (readConfig[readindex].Ivalue <= wd2 && readConfig[readindex].Ivalue >= wd1 && readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else + { + if (readConfig[readindex].Svalue != null) + { + if (readConfig[readindex].threshold == readConfig[readindex].Svalue) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + else + { + if (readConfig[readindex].threshold != "" && readConfig[readindex].threshold != null) + { + dataGridView1.Rows[i].Cells[2].Value = "pass"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView1.Rows[i].Cells[2].Value = "fail"; + dataGridView1.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + } + } + + } + + //alm只读节点 + for (int i = 0; i <= index3; i++) + { + string name = (string)dataGridView3.Rows[i].Cells[0].Value; + // 查找特定 value 对应的 name + int readindex = Array.FindIndex(alm_readConfig, myUnitClass => myUnitClass.name == name.ToString()); + + if (alm_readConfig[readindex].threshold == "1") + { + dataGridView3.Rows[i].Cells[2].Value = "pass"; + dataGridView3.Rows[i].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView3.Rows[i].Cells[2].Value = "fail"; + dataGridView3.Rows[i].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + } + + + int rowIndex = -1; + if (dataGridView2.IsCurrentCellInEditMode) + { + DataGridViewCell currentCell = dataGridView2.CurrentCell; + rowIndex = currentCell.RowIndex; // 当前单元格的行索引 + // 获取编辑控件 + } + + int write_result = 1;//写成功 + int writeindex = -1; + + + for (int i = 0; i <= index2; i++) + { + string name2 = (string)dataGridView2.Rows[i].Cells[0].Value; + // 查找特定 value 对应的 name + if (i <= 14) + { + writeindex = Array.FindIndex(writeConfig, myUnitClass => myUnitClass.name == name2.ToString()); + } + else + { + writeindex = Array.FindIndex(alm_writeConfig, myUnitClass => myUnitClass.name == name2.ToString()); + } + + if (i != rowIndex) + { + if (i <= 14) + { + dataGridView2.Rows[i].Cells[1].Value = writeConfig[writeindex].threshold; + } + else + { + dataGridView2.Rows[i].Cells[1].Value = alm_writeConfig[writeindex].threshold; + } + } + + if (writeConfig[writeindex].name == "物料编码") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_wl) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + + yd_did_write_one(0xcf4e, bd_wl); + + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "供应商编码") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_cs) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + + yd_did_write_one(0xcf4f, bd_cs); + + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "生产日") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_day) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf45, bd_day); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "生产月份") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_month) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf47, bd_month); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + + } + else if (writeConfig[writeindex].name == "生产年份") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_year) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf48, bd_year); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "流水号") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_ls) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf4a, bd_ls); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else if (writeConfig[writeindex].name == "批次号") + { + if (flag_sn == 1) + { + if (writeConfig[writeindex].threshold == bd_ls) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + yd_did_write_one(0xcf50, bd_ls); + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != null && writeConfig[writeindex].threshold != "") + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + } + else + { + + if (writeConfig[writeindex].Svalue != null) + { + if (writeConfig[writeindex].threshold == writeConfig[writeindex].Svalue) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + else + { + if (writeConfig[writeindex].threshold != "" && writeConfig[writeindex].threshold != null) + { + dataGridView2.Rows[i].Cells[2].Value = "pass"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Green; + writeConfig[writeindex].Bvalue = true; + smt_result *= 1; + write_result *= 1; + } + else + { + dataGridView2.Rows[i].Cells[2].Value = "fail"; + dataGridView2.Rows[i].Cells[2].Style.BackColor = Color.Red; + writeConfig[writeindex].Bvalue = false; + smt_result *= 0; + write_result *= 0; + } + } + + } + } + + if (flag_heart == 0) + { + return; + } + if (write_result == 0 && flag_sn == 1) + { + for (int i = 0; i < writeConfig.Length; i++) + { + if (writeConfig[i].Svalue != null && writeConfig[i].Svalue != "(不填)") + { + string hexString = writeConfig[i].DID; + ushort did = ushort.Parse(hexString, System.Globalization.NumberStyles.HexNumber); + yd_did_write_one(did, writeConfig[i].Svalue); + } + + } + } + + if (smt_result == 0 && flag_sn == 1) + { + label2.BackColor = Color.DarkGray; + flag_result = 0; + } + + if (smt_result == 0) + { + label2.BackColor = Color.DarkGray; + flag_result = 0; + } + + if (smt_result == 1) + { + + label2.Text = "测试通过" + out_time; + label2.BackColor = Color.Green; + flag_result = 1; + flag_pass = "PASS"; + //-----结束测试----- + //flag_heart = 0; + //out_time = -1; + //_yd_disconnet(); + //flag_connet = 0; + //button1.Text = "开始测试"; + + if (checkBox2.Checked == true && comboBox1.Text != "" && flag_dy == 0 && flag_sn == 1) + { + save_zb(); + PaperSize paperSize = new PaperSize("Custom", 260, 75); // 宽度500, 高度700 + // paperSize.RawKind = (int)PaperKind.Custom; + printDocument1.DefaultPageSettings.PaperSize = paperSize; + printDocument1.DefaultPageSettings.Landscape = false; + + printDocument1.DefaultPageSettings.Margins.Top = 0; + printDocument1.DefaultPageSettings.Margins.Left = 0; + pagesToPrint = Convert.ToInt32(comboBox2.Text); + + //PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog(); + //printPreviewDialog.Document = printDocument1; + + //try + //{ + // printPreviewDialog.ShowDialog(); + //} + //catch (Exception ex) + //{ + // MessageBox.Show(ex.Message); + //} + + printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //"导出为WPS PDF"; // + printDocument1.Print(); + + flag_dy = 1; + } + } + } + + if (checkBox3.Checked) + { + int smt_result = 1; + dataGridView2.Rows[0].Cells[1].Value = readConfig[2].threshold; + dataGridView2.Rows[1].Cells[1].Value = readConfig[3].threshold; + dataGridView2.Rows[2].Cells[1].Value = writeConfig[5].threshold; + dataGridView2.Rows[3].Cells[1].Value = writeConfig[6].threshold; + dataGridView2.Rows[4].Cells[1].Value = writeConfig[7].threshold; + dataGridView2.Rows[5].Cells[1].Value = writeConfig[8].threshold; + dataGridView2.Rows[6].Cells[1].Value = writeConfig[14].threshold; + dataGridView2.Rows[7].Cells[1].Value = writeConfig[13].threshold; + dataGridView2.Rows[8].Cells[1].Value = writeConfig[12].threshold; + + if (jy_imei == readConfig[2].threshold && readConfig[2].threshold != "") + { + dataGridView2.Rows[0].Cells[2].Value = "pass"; + dataGridView2.Rows[0].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[0].Cells[2].Value = "fail"; + dataGridView2.Rows[0].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_iccid == readConfig[3].threshold && readConfig[3].threshold != "") + { + dataGridView2.Rows[1].Cells[2].Value = "pass"; + dataGridView2.Rows[1].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[1].Cells[2].Value = "fail"; + dataGridView2.Rows[1].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_year == writeConfig[7].threshold && jy_year == bd_year && bd_year == writeConfig[7].threshold && writeConfig[7].threshold != "") + { + dataGridView2.Rows[2].Cells[2].Value = "pass"; + dataGridView2.Rows[2].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[2].Cells[2].Value = "fail"; + dataGridView2.Rows[2].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_month == writeConfig[6].threshold && jy_month == bd_month && bd_month == writeConfig[6].threshold && writeConfig[6].threshold != "") + { + dataGridView2.Rows[3].Cells[2].Value = "pass"; + dataGridView2.Rows[3].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[3].Cells[2].Value = "fail"; + dataGridView2.Rows[3].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + + if (jy_day == writeConfig[5].threshold && jy_day == bd_day && bd_day == writeConfig[5].threshold && writeConfig[5].threshold != "") + { + dataGridView2.Rows[4].Cells[2].Value = "pass"; + dataGridView2.Rows[4].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[4].Cells[2].Value = "fail"; + dataGridView2.Rows[4].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + + if (jy_ls == writeConfig[8].threshold && jy_ls == bd_ls && bd_ls == writeConfig[8].threshold && writeConfig[8].threshold != "") + { + dataGridView2.Rows[5].Cells[2].Value = "pass"; + dataGridView2.Rows[5].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[5].Cells[2].Value = "fail"; + dataGridView2.Rows[5].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + + if (jy_ls == writeConfig[14].threshold && jy_ls == bd_ls && bd_ls == writeConfig[14].threshold && writeConfig[14].threshold != "") + { + dataGridView2.Rows[6].Cells[2].Value = "pass"; + dataGridView2.Rows[6].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[6].Cells[2].Value = "fail"; + dataGridView2.Rows[6].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_cs == writeConfig[13].threshold && jy_cs == bd_cs && bd_cs == writeConfig[13].threshold && writeConfig[13].threshold != "") + { + dataGridView2.Rows[7].Cells[2].Value = "pass"; + dataGridView2.Rows[7].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[7].Cells[2].Value = "fail"; + dataGridView2.Rows[7].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (jy_wl == writeConfig[12].threshold && jy_wl == bd_wl && bd_wl == writeConfig[12].threshold && writeConfig[12].threshold != "") + { + dataGridView2.Rows[8].Cells[2].Value = "pass"; + dataGridView2.Rows[8].Cells[2].Style.BackColor = Color.Green; + smt_result *= 1; + } + else + { + dataGridView2.Rows[8].Cells[2].Value = "fail"; + dataGridView2.Rows[8].Cells[2].Style.BackColor = Color.Red; + smt_result *= 0; + } + + if (smt_result == 1) + { + string str_get_sn = "YD" + writeConfig[7].threshold.Substring(1, 1) + writeConfig[6].threshold.Substring(1, 1) + writeConfig[5].threshold + writeConfig[8].threshold.Substring(2, 4); + if (str_get_sn == textBox3.Text) + { + smt_result *= 1; + label10.Text = " "; + } + else + { + smt_result *= 0; + label10.Text = "SN号有误"; + label10.ForeColor = Color.Red; + } + } + else + { + return; + } + + if (smt_result == 1) + { + label2.Text = "测试通过"; + label2.BackColor = Color.Green; + flag_pass = "PASS"; + flag_result = 1; + //button1.Text = "开始测试"; + } + } + + } + + private void DataGridView2_CellClick(object sender, DataGridViewCellEventArgs e) + { + // 检查是否点击了按钮列 + if (e.ColumnIndex == dataGridView2.Columns["ButtonColumn"].Index && e.RowIndex >= 0) + { + // 获取点击的行索引 + //flag_write = 1; + int rowIndex = e.RowIndex; + object name = dataGridView2.Rows[rowIndex].Cells[0].Value; + // 查找特定 value 对应的 name + int index = Array.FindIndex(writeConfig, myUnitClass => myUnitClass.name == name.ToString()); + if (index!=0) { + UInt16 did = Convert.ToUInt16(writeConfig[index].DID, 16); + // object cellValue = dataGridView2.Rows[rowIndex].Cells[1].Value; + string data = writeConfig[e.RowIndex].threshold; + yd_did_write_one(did, data); + writeConfig[rowIndex].threshold = ""; + } + int index2 = Array.FindIndex(alm_writeConfig, myUnitClass => myUnitClass.name == name.ToString()); + if (index2 != 0) + { + UInt16 did = Convert.ToUInt16(alm_writeConfig[index].DID, 16); + // object cellValue = dataGridView2.Rows[rowIndex].Cells[1].Value; + string data = alm_writeConfig[e.RowIndex].threshold; + yd_almdid_write_one(did, data); + alm_writeConfig[rowIndex].threshold = ""; + } + //MessageBox.Show($"Button clicked in row {rowIndex + 1}"); // 行索引从 0 开始,显示时加 1 + } + } + + private void cmbPort_DropDown(object sender, EventArgs e) + { + cmbBox_Port_Update(); + } + + private string get_date_time() + { + string strdate = string.Empty; + strdate = DateTime.Now.ToString(); + return strdate; + } + string tempData = " "; + private void save_zb() + { + string str_get_sn = "YD" + writeConfig[7].threshold.Substring(1, 1) + writeConfig[6].threshold.Substring(1, 1) + writeConfig[5].threshold + writeConfig[8].threshold.Substring(2, 4); + tempData = tempData + get_date_time() + "," + "E-2" + writeConfig[0].threshold + "," + + readConfig[1].threshold + "," + str_get_sn + "," + readConfig[2].threshold + "," + readConfig[3].threshold + "," + flag_pass; + writeA883SmtLogCSV2(tempData); + tempData = " "; + } + + public static void CreateDirectoryOrFile(string newFileName) + { + + string strdate = string.Empty; + strdate = DateTime.Now.ToString(); + string str = ""; + if (strdate.IndexOf("/") != -1) + { + str = strdate.Replace("/", "_"); + } + + string[] sArray = str.Split(' ');// + + + //string path = Application.StartupPath + @"\configfile\研发\" + sArray[0]; + string path = @"C:\YD10日志\";//+ sArray[0]; + if (!Directory.Exists(path)) + { + Directory.CreateDirectory(path); + + /* + if (!File.Exists(path + "\\")) + { + File.Create(path + "\\" + newFileName).Close(); + } + */ + + } + + } + + + + public void writeA883SmtLogCSV2(string data)//保存路径, 索引设备 + { + CreateDirectoryOrFile("FileName.log"); + + string strdate = string.Empty; + strdate = DateTime.Now.ToString(); + string str = ""; + string str2 = ""; + string testtime = DateTime.Now.ToShortTimeString().ToString(); + + if (strdate.IndexOf("/") != -1) + { + str = strdate.Replace("/", "_"); + } + + if (testtime.IndexOf(":") != -1) + { + str2 = testtime.Replace(":", "点"); + } + // 使用正确的 Split 方法 + string[] sArray = str.Split(' '); // 以空格分隔 + + string smt_log_path2 = @"C:\YD10日志\";//+ sArray[0]; + string str_get_sn = "YD" + writeConfig[7].threshold.Substring(1, 1) + writeConfig[6].threshold.Substring(1, 1) + writeConfig[5].threshold + writeConfig[8].threshold.Substring(2, 4); + //判断是否已经有了这个文件 + + FileStream fs = null; + StreamWriter sw = null; + + try + { + + if (!System.IO.File.Exists($"{smt_log_path2}\\{sArray[0]}.CSV"))//路径 日期 序列号 + { + //没有则创建这个文件 + fs = new FileStream($"{smt_log_path2}\\{sArray[0]}.CSV", FileMode.Create, FileAccess.Write);//创建 + sw = new StreamWriter(fs); + + } + else + { + /* + fs = new FileStream($"{smt_log_path1}\\{My_Log[LogIndex_T].Barcode}_{sArray[0]}.log", FileMode.Open, FileAccess.Write); + sw = new StreamWriter(fs);*/ + sw = File.AppendText($"{smt_log_path2}\\{sArray[0]}.CSV"); + } + + + + sw.WriteLine(data); + + if (sw != null) + { + sw.Close(); + } + if (fs != null) + { + fs.Close(); + } + } + catch (Exception ex) + { + if (sw != null) + { + sw.Close(); + } + if (fs != null) + { + fs.Close(); + } + } + + //My_Log[LogIndex_T].Status = false; + + + } + + + int time = 0, time_over = 0, flag_connet = 0, flag_heart, time2 = 0, flag_print = 0, flag_almheart; + private int pagesToPrint; // 要打印的张数 + private BarCodeClass bcc = new BarCodeClass(); + private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) + { + //if ( flag_print == 0) //保存数据 + //{ + // save_zb(); + + //} + + if (flag_print == 1) + { + string tm2 = "#3-868022069907587 898604F3102340070986&39121-A081-01003560820240724000001"; + bcc.QuickMarkHeight = 100; + bcc.QuickMarkWidth = 100; + Image image2 = bcc.CreateQuickMark(tm2); + e.Graphics.DrawImage(image2, 175, 8, 70, 70); + e.Graphics.DrawString("雅 迪 科 技 集 团 有 限 公 司", new Font(new FontFamily("宋体"), 9, FontStyle.Bold), System.Drawing.Brushes.Black, 28, 0); + e.Graphics.DrawString("名称:IOT (JW) 供应商代码:35608", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 13); + e.Graphics.DrawString("物料编码:39110-0047-0100", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 23); + e.Graphics.DrawString("电压:48-72V", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 130, 23); + e.Graphics.DrawString("HW:E-213", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 33); + e.Graphics.DrawString("类型:一键启动/无电池/无手柄", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 50, 33); + e.Graphics.DrawString("SW:X450805", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 43); + //e.Graphics.DrawString("SN:" + myConfig[6].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 70, 43); + e.Graphics.DrawString("IMEI:868022069907587", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 53); + e.Graphics.DrawString("ICCID:898604F3102340070986" + readConfig[3].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 63); + flag_print = 0; + } + else + { + string tm = "#3-" + readConfig[2].threshold + " " + readConfig[3].threshold + "&" + writeConfig[12].threshold + "3560820" + + writeConfig[7].threshold + writeConfig[6].threshold + writeConfig[5].threshold + writeConfig[8].threshold; + string str_get_sn = "YD" + writeConfig[7].threshold.Substring(1, 1) + writeConfig[6].threshold.Substring(1, 1) + writeConfig[5].threshold + writeConfig[8].threshold.Substring(2, 4); + bcc.QuickMarkHeight = 100; + bcc.QuickMarkWidth = 100; + Image image = bcc.CreateQuickMark(tm); + e.Graphics.DrawImage(image, 175, 8, 70, 70); + e.Graphics.DrawString("雅 迪 科 技 集 团 有 限 公 司", new Font(new FontFamily("宋体"), 9, FontStyle.Bold), System.Drawing.Brushes.Black, 28, 0); + e.Graphics.DrawString("名称:" + product + " 供应商代码:" + writeConfig[13].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 13); + e.Graphics.DrawString("物料编码:" + writeConfig[12].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 23); + //e.Graphics.DrawString("电压:48-72V", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 130, 23); + e.Graphics.DrawString("HW:" + "E-2" + writeConfig[0].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 33); + // e.Graphics.DrawString("类型:一键启动/无电池/无手柄", new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 50, 33); + e.Graphics.DrawString("SW:" + readConfig[1].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 43); + e.Graphics.DrawString("SN:" + str_get_sn, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 70, 43); + e.Graphics.DrawString("IMEI:" + readConfig[2].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 53); + e.Graphics.DrawString("ICCID:" + readConfig[3].threshold, new Font(new FontFamily("宋体"), 6, FontStyle.Bold), System.Drawing.Brushes.Black, 3, 63); + } + + pagesToPrint--; + if (pagesToPrint <= 0) + { + e.HasMorePages = false; + } + else + { + e.HasMorePages = true; + } + } + + private void dataGridView2_CellValueChanged(object sender, DataGridViewCellEventArgs e) + { + if (dataGridView2.IsCurrentCellInEditMode) + { + DataGridViewCell currentCell = dataGridView2.CurrentCell; + int rowIndex = currentCell.RowIndex; // 当前单元格的行索引 + if (e.RowIndex == rowIndex) + { + object newValue = dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; + writeConfig[e.RowIndex].threshold = (string)newValue; + flag_write = 1; + time2 = 20; + } + } + } + + public void GetPrinter() + { + //string strList = ""; + //System.Drawing.Printing.PrinterSettings.StringCollection PrinterList = System.Drawing.Printing.PrinterSettings.InstalledPrinters; + //foreach (var item in PrinterList) + //{ + // strList += item + ","; + // comboBox1.Items.Add(item); + //} + //return strList; + PrintDocument printDoc = new PrintDocument(); + PrinterSettings printerSettings; + + foreach (string printerName in PrinterSettings.InstalledPrinters) + { + printerSettings = new PrinterSettings(); + printerSettings.PrinterName = printerName; + printDoc.PrinterSettings = printerSettings; + comboBox1.Items.Add(printerName); + //Console.WriteLine(printerName); + } + } + + private void button3_Click(object sender, EventArgs e) + { + PaperSize paperSize = new PaperSize("Custom", 260, 75); // 宽度500, 高度700 + // paperSize.RawKind = (int)PaperKind.Custom; + printDocument1.DefaultPageSettings.PaperSize = paperSize; + printDocument1.DefaultPageSettings.Landscape = false; + + printDocument1.DefaultPageSettings.Margins.Top = 0; + printDocument1.DefaultPageSettings.Margins.Left = 0; + pagesToPrint = 1; + + printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //"导出为WPS PDF"; // + printDocument1.Print(); + } + + + string bd_wl = "", bd_cs = "", bd_year = "", bd_year2 = "", bd_month = "", bd_day = "", bd_day1 = "", bd_ls = ""; + + private void Form3_FormClosed(object sender, FormClosedEventArgs e) + { + this.Close(); + // 退出整个应用程序 + Application.Exit(); + } + + private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + + } + + private void yD10ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (serialPort.IsOpen) + { + _yd_disconnet(); + serialPort.Close(); + }//关闭串口 + + this.form1.Show(); + this.Hide(); + + } + + + + private void 参考信息设置ToolStripMenuItem_Click(object sender, EventArgs e) + { + Form4 form4 = new Form4(); + form4.Form4Closed += Form4_Closed; + form4.Show(); + } + + private void 车型设置ToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void yD07KToolStripMenuItem_Click(object sender, EventArgs e) + { + + + + } + + private void 手动打印ToolStripMenuItem_Click(object sender, EventArgs e) + { + save_zb(); + PaperSize paperSize = new PaperSize("Custom", 260, 75); // 宽度500, 高度700 + // paperSize.RawKind = (int)PaperKind.Custom; + printDocument1.DefaultPageSettings.PaperSize = paperSize; + printDocument1.DefaultPageSettings.Landscape = false; + + printDocument1.DefaultPageSettings.Margins.Top = 0; + printDocument1.DefaultPageSettings.Margins.Left = 0; + pagesToPrint = 1;//Convert.ToInt32(comboBox2.Text); + + printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //"导出为WPS PDF"; // + printDocument1.Print(); + } + + string jy_iccid = "", jy_imei = "", jy_wl = "", jy_cs = "", jy_year = "", jy_month = "", jy_day = "", jy_ls = ""; + private void textBox2_TextChanged(object sender, EventArgs e) + { + //#3-868022069907587 898604F3102340070986&39121-A081-01003560820240724000001 + if (textBox2.Text.Length == 74) + { + jy_imei = textBox2.Text.Substring(3, 15); + jy_iccid = textBox2.Text.Substring(19, 20); + jy_wl = textBox2.Text.Substring(40, 15); + jy_cs = textBox2.Text.Substring(55, 5); + jy_year = textBox2.Text.Substring(62, 2); + jy_month = textBox2.Text.Substring(64, 2); + jy_day = textBox2.Text.Substring(66, 2); + jy_ls = textBox2.Text.Substring(68, 6); + label7.Text = ""; + } + else + { + jy_iccid = ""; + jy_imei = ""; + jy_wl = ""; + jy_cs = ""; + jy_year = ""; + jy_month = ""; + jy_day = ""; + jy_ls = ""; + if (textBox2.Text.Length != 0) + { + label7.Text = "长度有误"; + } + else + { + label7.Text = ""; + } + } + } + + private void checkBox3_CheckedChanged(object sender, EventArgs e) + { + if (checkBox3.Checked) + { + textBox2.Enabled = true; + textBox3.Enabled = true; + index = 0; + index2 = 0; + index3 = 0; + this.dataGridView1.Rows.Clear(); + this.dataGridView2.Rows.Clear(); + this.dataGridView3.Rows.Clear(); + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "设备IMEI"; + dataGridView2.Rows[index].Cells[1].Value = readConfig[2].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "设备ICCID"; + dataGridView2.Rows[index].Cells[1].Value = readConfig[3].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产日"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[5].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产月份"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[6].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "生产年份"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[7].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "流水号"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[8].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "批次号"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[14].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "供应商编码"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[13].threshold; + + index = this.dataGridView2.Rows.Add(); + dataGridView2.Rows[index].Cells[0].Value = "物料编码"; + dataGridView2.Rows[index].Cells[1].Value = writeConfig[12].threshold; + + } + else + { + textBox2.Enabled = false; + textBox3.Enabled = false; + index = 0; + index2 = 0; + index3 = 0; + this.dataGridView1.Rows.Clear(); + this.dataGridView2.Rows.Clear(); + this.dataGridView3.Rows.Clear(); + } + } + + private void button2_Click(object sender, EventArgs e) + { + + } + + private void Form3_FormClosing(object sender, FormClosingEventArgs e) + { + JObject setData_jsonObject = new Newtonsoft.Json.Linq.JObject(); + setData_jsonObject.Add("打印机", comboBox1.Text); + setData_jsonObject.Add("张数", comboBox2.Text); + setData_jsonObject.Add("自动打印机", checkBox2.Checked); + setData_jsonObject.Add("自动蓝牙连接", checkBox1.Checked); + setData_jsonObject.Add("号码校验", checkBox3.Checked); + string config_file_str = setData_jsonObject.ToString(); + string savePath = Application.StartupPath + @"\YD07k配置.json"; + System.IO.File.WriteAllText(savePath, config_file_str, Encoding.UTF8); + } + + int flag_sn = 0; + private void textBox1_TextChanged(object sender, EventArgs e) + { + if (textBox1.Text.Length == 34) + { + bd_wl = textBox1.Text.Substring(0, 15); + bd_cs = textBox1.Text.Substring(15, 5); + bd_year = textBox1.Text.Substring(22, 2); + bd_month = textBox1.Text.Substring(24, 2); + bd_day = textBox1.Text.Substring(26, 2); + bd_ls = textBox1.Text.Substring(28, 6); + //bd_sn= textBox1.Text.Substring(23, 1)+ textBox1.Text.Substring(25, 1)+ textBox1.Text.Substring(26, 2)+ textBox1.Text.Substring(31, 3); + label5.Text = ""; + flag_sn = 1; + } + else + { + bd_wl = ""; + bd_cs = ""; + bd_year = ""; + bd_year2 = ""; + bd_month = ""; + bd_day = ""; + bd_day1 = ""; + bd_ls = ""; + //bd_sn = ""; + flag_sn = 0; + if (textBox1.Text.Length != 0) + { + label5.Text = "长度有误"; + } + else + { + label5.Text = ""; + } + } + } + + private void 打印较准页ToolStripMenuItem_Click(object sender, EventArgs e) + { + PaperSize paperSize = new PaperSize("Custom", 260, 75); // 宽度500, 高度700 + // paperSize.RawKind = (int)PaperKind.Custom; + printDocument1.DefaultPageSettings.PaperSize = paperSize; + printDocument1.DefaultPageSettings.Landscape = false; + + printDocument1.DefaultPageSettings.Margins.Top = 0; + printDocument1.DefaultPageSettings.Margins.Left = 0; + pagesToPrint = 1; + flag_print = 1; + + printDocument1.DefaultPageSettings.PrinterSettings.PrinterName = comboBox1.Text; //"导出为WPS PDF"; // + printDocument1.Print(); + } + + + private void Form4_Closed() + { + read(); + index = 0; + index2 = 0; + index3 = 0; + this.dataGridView1.Rows.Clear(); + this.dataGridView2.Rows.Clear(); + this.dataGridView3.Rows.Clear(); + + } + + + int out_time = -1, flag_result = 0; + + + private void clean() + { + for (int i = 0; i < readConfig.Length; i++) + { + readConfig[i].threshold = ""; + } + for (int i = 0; i < writeConfig.Length; i++) + { + writeConfig[i].threshold = ""; + writeConfig[i].Bvalue = false; + } + this.Invoke(new Action(() => + { + label2.Text = "等待测试"; + label2.BackColor = Color.DarkGray; + })); + textBox1.Text = ""; + textBox2.Text = ""; + flag_gnss = 0; + heart_out = 0; + flag_dy = 0; + flag_result = 0; + flag_pass = "FAIL"; + Heart = false; + heart = false; + almHeart = false; + almheart = false; + } + + + int did_i, flag_write, heart_out, time_heart,alm_time, flag_almconnet, almheart_out; + bool heart = false, Heart = false, almheart = false, almHeart = false; + private void timer2_Tick(object sender, EventArgs e) + { + time++; + time2++; + alm_time++; + time_heart++; //15次约为1s + //超时机制 + if (time2 > 15 /*&& out_time<120 */&& out_time >= 0) + { + time2 = 0; + out_time++; + if (flag_result == 0) + { + label2.Text = "测试开始" + out_time; + } + //if (flag_connet == 1 && out_time > 10) + //{ + // label2.Text = "连接超时"; + // label2.BackColor = Color.Red; + // flag_heart = 0; + // flag_connet = 0; + // out_time = -1; + // //button1.Text = "开始测试"; + //} + //else + //{ + // //label2.Text = "连接中..." + Convert.ToString(out_time); + //} + + //if (out_time>=120) + //{ + // label2.Text = "测试超时"; + // label2.BackColor = Color.Red; + // flag_heart = 0; + // flag_connet = 0; + // out_time = -1; + // button1.Text = "开始测试"; + //} + } + + // + + if (flag_connet == 1) + { + _yd_connet(); + } + + if (flag_heart == 1 && flag_almconnet==0) //与IOT建立连接后开始alm建立连接 + { + _yd_alm_connet(); + } + + if (time > 30 && flag_heart == 1) //3s发送一次心跳包(改为2s) + { + time = 0; + yd_heart(); + } + + if (alm_time > 30 && flag_almheart == 1) //3s发送一次心跳包(改为2s) + { + alm_time = 0; + yd_alm_heart(); + } + + if (time_heart >= 8 && flag_heart == 1) //500ms来检测一次保活 + { + time_heart = 0; + if (!Heart && heart)//说明心跳断开一次 + { + heart_out++; + if (heart_out >= 10)//5S不回复说明设备已经离线 + { + //-----结束测试----- + flag_heart = 0; + flag_almheart = 0; + out_time = -1; + _yd_disconnet(); + flag_connet = 0; + flag_almconnet = 0; + //button1.Text = "开始测试"; + label2.Text = "设备已离线"; + + clean(); + } + } + else + { + heart = Heart; + Heart = false; + heart_out = 0; + } + + if (flag_almheart==1) { + if (!almHeart && almheart)//说明心跳断开一次 + { + almheart_out++; + if (almheart_out >= 10)//5S不回复说明设备已经离线 + { + //-----结束测试----- + flag_heart = 0; + flag_almheart = 0; + out_time = -1; + _yd_disconnet(); + flag_connet = 0; + flag_almconnet = 0; + //button1.Text = "开始测试"; + label2.Text = "alm设备已离线"; + + clean(); + } + } + else + { + almheart = almHeart; + almHeart = false; + almheart_out = 0; + } + } + + } + + if (flag_write == 1 && time2 > 0) + { + time2--; + if (time2 == 0) + { + flag_write = 0; + label2.Text = "写入响应超时"; + } + } + if (flag_heart == 1 && flag_write == 0 && flag_almheart==1) + { + zd_test(did_i); + did_i++; + if (did_i > 73) + { + did_i = 0; + } + + } + + } + } + +} + diff --git a/YD10测试机/Form3.resx b/YD10测试机/Form3.resx new file mode 100644 index 0000000..92350c1 --- /dev/null +++ b/YD10测试机/Form3.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + True + + + True + + + True + + + 17, 17 + + + True + + + True + + + True + + + 137, 17 + + + 227, 17 + + + 317, 17 + + + 55 + + \ No newline at end of file diff --git a/YD10测试机/Form4.Designer.cs b/YD10测试机/Form4.Designer.cs new file mode 100644 index 0000000..6b8ca87 --- /dev/null +++ b/YD10测试机/Form4.Designer.cs @@ -0,0 +1,140 @@ + +namespace YD10测试机 +{ + partial class Form4 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + this.label1 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Column3 = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.Location = new System.Drawing.Point(372, 55); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(95, 46); + this.label1.TabIndex = 19; + this.label1.Text = "注意:可写入的值的参考信息值即是一键写入值"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(383, 104); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 18; + this.button1.Text = "保存退出"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // dataGridView1 + // + this.dataGridView1.AllowUserToAddRows = false; + this.dataGridView1.AllowUserToResizeRows = false; + this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.ButtonHighlight; + this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Column1, + this.Column2, + this.Column3}); + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle1.BackColor = System.Drawing.Color.White; + dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle1; + this.dataGridView1.EnableHeadersVisualStyles = false; + this.dataGridView1.Location = new System.Drawing.Point(12, 22); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowHeadersVisible = false; + this.dataGridView1.RowHeadersWidth = 45; + this.dataGridView1.RowTemplate.Height = 19; + this.dataGridView1.Size = new System.Drawing.Size(352, 543); + this.dataGridView1.TabIndex = 17; + this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick); + // + // Column1 + // + this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column1.FillWeight = 30F; + this.Column1.HeaderText = "测试项"; + this.Column1.MinimumWidth = 2; + this.Column1.Name = "Column1"; + this.Column1.Resizable = System.Windows.Forms.DataGridViewTriState.True; + // + // Column2 + // + this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column2.FillWeight = 50F; + this.Column2.HeaderText = "标定信息"; + this.Column2.MinimumWidth = 2; + this.Column2.Name = "Column2"; + // + // Column3 + // + this.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.Column3.FillWeight = 10F; + this.Column3.HeaderText = "选项"; + this.Column3.MinimumWidth = 2; + this.Column3.Name = "Column3"; + // + // Form4 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(471, 586); + this.Controls.Add(this.label1); + this.Controls.Add(this.button1); + this.Controls.Add(this.dataGridView1); + this.Name = "Form4"; + this.Text = "参考信息设置"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form4_FormClosing); + this.Load += new System.EventHandler(this.Form4_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column1; + private System.Windows.Forms.DataGridViewTextBoxColumn Column2; + private System.Windows.Forms.DataGridViewCheckBoxColumn Column3; + } +} \ No newline at end of file diff --git a/YD10测试机/Form4.cs b/YD10测试机/Form4.cs new file mode 100644 index 0000000..22773d2 --- /dev/null +++ b/YD10测试机/Form4.cs @@ -0,0 +1,574 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace YD10测试机 +{ + public partial class Form4 : Form + { + + // 在窗口4中 + public delegate void Form4ClosedHandler(); + public event Form4ClosedHandler Form4Closed; + + public Form4() + { + InitializeComponent(); + } + + + int form2_index = 0; + private void Form4_Load(object sender, EventArgs e) + { + my_set(); + read(); + + form2_index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[form2_index].Cells[0].Value = "打印名称设置"; + dataGridView1.Rows[form2_index].Cells[1].Value = product; + dataGridView1.Rows[form2_index].Cells[2].Value = true; + + for (int i = 0; i < readConfig.Length; i++) + { + form2_index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[form2_index].Cells[0].Value = readConfig[i].name; + dataGridView1.Rows[form2_index].Cells[1].Value = readConfig[i].Svalue; + dataGridView1.Rows[form2_index].Cells[2].Value = readConfig[i].status; + } + for (int i = 0; i < writeConfig.Length; i++) + { + form2_index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[form2_index].Cells[0].Value = writeConfig[i].name; + dataGridView1.Rows[form2_index].Cells[1].Value = writeConfig[i].Svalue; + dataGridView1.Rows[form2_index].Cells[2].Value = writeConfig[i].status; + } + + for (int i = 0; i < alm_readConfig.Length; i++) + { + form2_index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[form2_index].Cells[0].Value = alm_readConfig[i].name; + dataGridView1.Rows[form2_index].Cells[1].Value = alm_readConfig[i].Svalue; + dataGridView1.Rows[form2_index].Cells[2].Value = alm_readConfig[i].status; + } + for (int i = 0; i < alm_writeConfig.Length; i++) + { + form2_index = this.dataGridView1.Rows.Add(); + dataGridView1.Rows[form2_index].Cells[0].Value = alm_writeConfig[i].name; + dataGridView1.Rows[form2_index].Cells[1].Value = alm_writeConfig[i].Svalue; + dataGridView1.Rows[form2_index].Cells[2].Value = alm_writeConfig[i].status; + } + } + private void button1_Click(object sender, EventArgs e) + { + save(); + this.Close(); // 关闭当前窗体 + } + + private void save() + { + JObject setData_jsonObject = new Newtonsoft.Json.Linq.JObject(); + setData_jsonObject.Add("打印名称设置", (string)dataGridView1.Rows[0].Cells[1].Value); + for (int i = 0; i < readConfig.Length; i++) + { + setData_jsonObject.Add(readConfig[i].name, (string)dataGridView1.Rows[i + 1].Cells[1].Value); + } + for (int i = 0; i < writeConfig.Length; i++) + { + setData_jsonObject.Add(writeConfig[i].name, (string)dataGridView1.Rows[i + 32].Cells[1].Value); + } + + for (int i = 0; i < alm_readConfig.Length; i++) + { + setData_jsonObject.Add(alm_readConfig[i].name, (string)dataGridView1.Rows[i + 47].Cells[1].Value); + } + for (int i = 0; i < alm_writeConfig.Length; i++) + { + setData_jsonObject.Add(alm_writeConfig[i].name, (string)dataGridView1.Rows[i + 70].Cells[1].Value); + } + + for (int i = 0; i < readConfig.Length; i++) + { + setData_jsonObject.Add(readConfig[i].name + "status", readConfig[i].status); + } + for (int i = 0; i < writeConfig.Length; i++) + { + ; + setData_jsonObject.Add(writeConfig[i].name + "status", writeConfig[i].status); + } + + for (int i = 0; i + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + \ No newline at end of file diff --git a/YD10测试机/Program.cs b/YD10测试机/Program.cs new file mode 100644 index 0000000..8199603 --- /dev/null +++ b/YD10测试机/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace YD10测试机 +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/YD10测试机/Properties/AssemblyInfo.cs b/YD10测试机/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1ee6f7a --- /dev/null +++ b/YD10测试机/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("YD10测试机")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("YD10测试机")] +[assembly: AssemblyCopyright("Copyright © 2025")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("32f563dd-18ca-4f54-b8e0-6f2b472371d7")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/YD10测试机/Properties/Resources.Designer.cs b/YD10测试机/Properties/Resources.Designer.cs new file mode 100644 index 0000000..e70c3ac --- /dev/null +++ b/YD10测试机/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace YD10测试机.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("YD10测试机.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/YD10测试机/Properties/Resources.resx b/YD10测试机/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/YD10测试机/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/YD10测试机/Properties/Settings.Designer.cs b/YD10测试机/Properties/Settings.Designer.cs new file mode 100644 index 0000000..0f20827 --- /dev/null +++ b/YD10测试机/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace YD10测试机.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/YD10测试机/Properties/Settings.settings b/YD10测试机/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/YD10测试机/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/YD10测试机/Utility.cs b/YD10测试机/Utility.cs new file mode 100644 index 0000000..452840a --- /dev/null +++ b/YD10测试机/Utility.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Bluetoolth +{ + public class Utility + { + + //服务 + public static String UUID_SERVER = "0000ff12-0000-1000-8000-00805f9b34fb"; + + //间隔 + public static String UUID_Interval = "0000ff04-0000-1000-8000-00805f9b34fb"; + + //写 WriteWithoutResponse + public static string UUID_Write = "0000ff01-0000-1000-8000-00805f9b34fb"; + //读 Notify + public static string UUID_Read = "0000ff02-0000-1000-8000-00805f9b34fb"; + + //名字 Read Write + public static String UUID_Name = "0000ff06-0000-1000-8000-00805f9b34fb"; + + public static Guid UUID_CONFIG_DESCRIPTOR = Guid.Parse("00002902-0000-1000-8000-00805f9b34fb"); + public static Guid UUID_HEART_RATE_MEASUREMENT = Guid + .Parse("00002a37-0000-1000-8000-00805f9b34fb"); + + /// + /// CRC校验 + /// + /// + /// + /// + public static ushort CRC(byte[] data, int length) + { + ushort tempCrcResult = 0xffff; + for (int i = 0; i < length; i++) + { + tempCrcResult = (ushort)(tempCrcResult ^ data[i]); + for (int j = 0; j < 8; j++) + { + if ((tempCrcResult & 0x0001) == 1) + tempCrcResult = (ushort)((tempCrcResult >> 1) ^ 0xa001); + else tempCrcResult = (ushort)(tempCrcResult >> 1); + } + } + return (tempCrcResult = (ushort)(((tempCrcResult & 0xff) << 8) | (tempCrcResult >> 8))); + } + } +} diff --git a/YD10测试机/YD10测试机.csproj b/YD10测试机/YD10测试机.csproj new file mode 100644 index 0000000..7bcd553 --- /dev/null +++ b/YD10测试机/YD10测试机.csproj @@ -0,0 +1,146 @@ + + + + + Debug + AnyCPU + {32F563DD-18CA-4F54-B8E0-6F2B472371D7} + WinExe + YD10测试机 + YD10测试机 + v4.5 + 512 + true + + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + true + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + ao05f-g71fo-001.ico + + + + False + bin\Debug\Newtonsoft.Json.dll + + + + + + + + + + + + + False + bin\Debug\ThoughtWorks.QRCode.dll + + + False + bin\Debug\Windows.winmd + + + False + bin\Debug\zxing.dll + + + + + + + Form + + + Form1.cs + + + Form + + + Form2.cs + + + Form + + + Form3.cs + + + Form + + + Form4.cs + + + + + + Form1.cs + + + Form2.cs + + + Form3.cs + + + Form4.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + 10.0.26100.1742 + + + + \ No newline at end of file diff --git a/YD10测试机/ao05f-g71fo-001.ico b/YD10测试机/ao05f-g71fo-001.ico new file mode 100644 index 0000000..0d7f162 Binary files /dev/null and b/YD10测试机/ao05f-g71fo-001.ico differ diff --git a/YD10测试机/app.config b/YD10测试机/app.config new file mode 100644 index 0000000..51278a4 --- /dev/null +++ b/YD10测试机/app.config @@ -0,0 +1,3 @@ + + + diff --git a/YD10测试机/bin/Debug/Newtonsoft.Json.dll b/YD10测试机/bin/Debug/Newtonsoft.Json.dll new file mode 100644 index 0000000..7af125a Binary files /dev/null and b/YD10测试机/bin/Debug/Newtonsoft.Json.dll differ diff --git a/YD10测试机/bin/Debug/ThoughtWorks.QRCode.dll b/YD10测试机/bin/Debug/ThoughtWorks.QRCode.dll new file mode 100644 index 0000000..45b1b52 Binary files /dev/null and b/YD10测试机/bin/Debug/ThoughtWorks.QRCode.dll differ diff --git a/YD10测试机/bin/Debug/Windows.winmd b/YD10测试机/bin/Debug/Windows.winmd new file mode 100644 index 0000000..cb42bab Binary files /dev/null and b/YD10测试机/bin/Debug/Windows.winmd differ diff --git a/YD10测试机/bin/Debug/YD07k参考信息.json b/YD10测试机/bin/Debug/YD07k参考信息.json new file mode 100644 index 0000000..19073ea --- /dev/null +++ b/YD10测试机/bin/Debug/YD07k参考信息.json @@ -0,0 +1,151 @@ +{ + "打印名称设置": "IOT(JW)", + "串口诊断协议版本号": null, + "软件版本号": null, + "设备IMEI": null, + "设备ICCID": null, + "GNSS产品型号": null, + "GNSS软件版本号": null, + "GNSS硬件版本号": null, + "SPI FLASH ID": null, + "BOOT底层软件版本": null, + "BOOT升级协议版本": null, + "通信协议版本号": null, + "备份区软件版本号": null, + "OTA零部件编码": "1044", + "OTA域名": "https://gw.alitest.yadeaiot.com.cn/api/open", + "拨号状态": "1(不可更改)", + "驻网状态": "1(不可更改)", + "服务器连接状态": "1(不可更改)", + "GNSS定位状态": "1(不可更改)", + "GNSS SNR值": "35(默认4个值>=35,可改)", + "RSSI值": ">=-80(不可更改)", + "RSRP值": "-92~-94", + "RSRQ值": "-20~-50", + "SINR值": ">=0(不可更改)", + "ACC管脚电平状态": "1", + "外电电压值": "30(误差1)", + "K线通讯状态": "1(不可更改)", + "GSENSOR地址": null, + "六轴数据校准值": null, + "六轴传感器状态": null, + "音频文件状态": null, + "外电电平": null, + "硬件版本号": "12", + "产品型号": "50", + "产品识别码": "IOT", + "产商识别码": "嘉为", + "客户识别码": null, + "生产日": "(不填)", + "生产月份": "(不填)", + "生产年份": "(不填)", + "流水号": "(不填)", + "服务器域名": "cars.test.yadeaiot.com.cn", + "服务器端口号": "6201", + "外电电压AD比列值": "111294", + "物料编码": "(不填)", + "供应商编码": "(不填)", + "批次号": "(不填)", + "alm软件版本号": null, + "ACC1输出": null, + "ACC1预充": null, + "ACC2输出": null, + "ACC2预充": null, + "ACC1输入": null, + "机械钥匙": null, + "ACC2输入": null, + "右转向灯输入": null, + "蓝牙指示灯输出": null, + "双闪输出": null, + "轮动输入": null, + "左转向灯输入": null, + "MOTO_A输出": null, + "MOTO_B输出": null, + "锁电机输出": null, + "电磁阀输出": null, + "一键启动输入": null, + "坐垫感应输入": null, + "alm_外电电压值": null, + "alm_K线通讯": null, + "蓝牙连接": null, + "弹簧振子": null, + "alm_外电电压AD比例值": null, + "alm_音量等级": null, + "alm_声音主题": null, + "alm_ACC电压AD分压比例值": null, + "alm_蓝牙MCA地址": null, + "串口诊断协议版本号status": true, + "软件版本号status": true, + "设备IMEIstatus": true, + "设备ICCIDstatus": true, + "GNSS产品型号status": true, + "GNSS软件版本号status": true, + "GNSS硬件版本号status": true, + "SPI FLASH IDstatus": true, + "BOOT底层软件版本status": true, + "BOOT升级协议版本status": true, + "通信协议版本号status": true, + "备份区软件版本号status": true, + "OTA零部件编码status": true, + "OTA域名status": true, + "拨号状态status": true, + "驻网状态status": true, + "服务器连接状态status": true, + "GNSS定位状态status": true, + "GNSS SNR值status": true, + "RSSI值status": true, + "RSRP值status": true, + "RSRQ值status": true, + "SINR值status": true, + "ACC管脚电平状态status": true, + "外电电压值status": true, + "K线通讯状态status": true, + "GSENSOR地址status": true, + "六轴数据校准值status": true, + "六轴传感器状态status": true, + "音频文件状态status": true, + "外电电平status": true, + "硬件版本号status": true, + "产品型号status": true, + "产品识别码status": true, + "产商识别码status": true, + "客户识别码status": true, + "生产日status": true, + "生产月份status": true, + "生产年份status": true, + "流水号status": true, + "服务器域名status": true, + "服务器端口号status": true, + "外电电压AD比列值status": true, + "物料编码status": true, + "供应商编码status": true, + "批次号status": true, + "alm软件版本号status": true, + "ACC1输出status": true, + "ACC1预充status": true, + "ACC2输出status": true, + "ACC2预充status": true, + "ACC1输入status": true, + "机械钥匙status": true, + "ACC2输入status": true, + "右转向灯输入status": true, + "蓝牙指示灯输出status": true, + "双闪输出status": true, + "轮动输入status": true, + "左转向灯输入status": true, + "MOTO_A输出status": true, + "MOTO_B输出status": true, + "锁电机输出status": true, + "电磁阀输出status": true, + "一键启动输入status": true, + "坐垫感应输入status": true, + "alm_外电电压值status": true, + "alm_K线通讯status": true, + "蓝牙连接status": true, + "弹簧振子status": true, + "alm_外电电压AD比例值status": true, + "alm_音量等级status": true, + "alm_声音主题status": true, + "alm_ACC电压AD分压比例值status": true, + "alm_蓝牙MCA地址status": true +} \ No newline at end of file diff --git a/YD10测试机/bin/Debug/YD07k配置.json b/YD10测试机/bin/Debug/YD07k配置.json new file mode 100644 index 0000000..8d453d6 --- /dev/null +++ b/YD10测试机/bin/Debug/YD07k配置.json @@ -0,0 +1,7 @@ +{ + "打印机": "", + "张数": "", + "自动打印机": true, + "自动蓝牙连接": true, + "号码校验": false +} \ No newline at end of file diff --git a/YD10测试机/bin/Debug/YD10参考信息.json b/YD10测试机/bin/Debug/YD10参考信息.json new file mode 100644 index 0000000..fe91ac8 --- /dev/null +++ b/YD10测试机/bin/Debug/YD10参考信息.json @@ -0,0 +1,85 @@ +{ + "打印名称设置": "IOT(JW)", + "串口诊断协议版本号": null, + "软件版本号": null, + "设备IMEI": null, + "设备ICCID": null, + "GNSS产品型号": null, + "GNSS软件版本号": null, + "GNSS硬件版本号": null, + "SPI FLASH ID": null, + "BOOT底层软件版本": null, + "BOOT升级协议版本": null, + "通信协议版本号": null, + "备份区软件版本号": null, + "OTA零部件编码": "1044", + "OTA域名": "https://gw.alitest.yadeaiot.com.cn/api/open", + "拨号状态": "1(不可更改)", + "驻网状态": "1(不可更改)", + "服务器连接状态": "1(不可更改)", + "GNSS定位状态": "1(不可更改)", + "GNSS SNR值": "35(默认4个值>=35,可改)", + "RSSI值": "-80(雅迪参考值>=-80)", + "RSRP值": "-92~-94", + "RSRQ值": "-20~-50", + "SINR值": "0(雅迪参考值>=0)", + "ACC管脚电平状态": "1", + "外电电压值": "30(误差1)", + "K线通讯状态": "1(不可更改)", + "硬件版本号": "12", + "产品型号": "50", + "产品识别码": "IOT", + "产商识别码": "嘉为", + "客户识别码": null, + "生产日": "(不填)", + "生产月份": "(不填)", + "生产年份": "(不填)", + "流水号": "(不填)", + "服务器域名": "cars.test.yadeaiot.com.cn", + "服务器端口号": "6201", + "外电电压AD比列值": "111294", + "物料编码": "(不填)", + "供应商编码": "(不填)", + "批次号": "(不填)", + "串口诊断协议版本号status": true, + "软件版本号status": true, + "设备IMEIstatus": true, + "设备ICCIDstatus": true, + "GNSS产品型号status": true, + "GNSS软件版本号status": true, + "GNSS硬件版本号status": true, + "SPI FLASH IDstatus": true, + "BOOT底层软件版本status": true, + "BOOT升级协议版本status": true, + "通信协议版本号status": true, + "备份区软件版本号status": true, + "OTA零部件编码status": true, + "OTA域名status": true, + "拨号状态status": true, + "驻网状态status": true, + "服务器连接状态status": true, + "GNSS定位状态status": true, + "GNSS SNR值status": true, + "RSSI值status": true, + "RSRP值status": true, + "RSRQ值status": true, + "SINR值status": true, + "ACC管脚电平状态status": true, + "外电电压值status": true, + "K线通讯状态status": true, + "硬件版本号status": true, + "产品型号status": true, + "产品识别码status": true, + "产商识别码status": true, + "客户识别码status": true, + "生产日status": true, + "生产月份status": true, + "生产年份status": true, + "流水号status": true, + "服务器域名status": true, + "服务器端口号status": true, + "外电电压AD比列值status": true, + "物料编码status": true, + "供应商编码status": true, + "批次号status": true +} \ No newline at end of file diff --git a/YD10测试机/bin/Debug/YD10测试机.exe b/YD10测试机/bin/Debug/YD10测试机.exe new file mode 100644 index 0000000..1ba8ab8 Binary files /dev/null and b/YD10测试机/bin/Debug/YD10测试机.exe differ diff --git a/YD10测试机/bin/Debug/YD10测试机.exe.config b/YD10测试机/bin/Debug/YD10测试机.exe.config new file mode 100644 index 0000000..51278a4 --- /dev/null +++ b/YD10测试机/bin/Debug/YD10测试机.exe.config @@ -0,0 +1,3 @@ + + + diff --git a/YD10测试机/bin/Debug/YD10测试机.pdb b/YD10测试机/bin/Debug/YD10测试机.pdb new file mode 100644 index 0000000..b4bb53e Binary files /dev/null and b/YD10测试机/bin/Debug/YD10测试机.pdb differ diff --git a/YD10测试机/bin/Debug/YD10配置.json b/YD10测试机/bin/Debug/YD10配置.json new file mode 100644 index 0000000..6bf6ddc --- /dev/null +++ b/YD10测试机/bin/Debug/YD10配置.json @@ -0,0 +1,6 @@ +{ + "打印机": "", + "张数": "", + "自动打印机": true, + "号码校验": false +} \ No newline at end of file diff --git a/YD10测试机/bin/Debug/zxing.dll b/YD10测试机/bin/Debug/zxing.dll new file mode 100644 index 0000000..6331cd2 Binary files /dev/null and b/YD10测试机/bin/Debug/zxing.dll differ diff --git a/YD10测试机/bin/Debug/参考信息.json b/YD10测试机/bin/Debug/参考信息.json new file mode 100644 index 0000000..ebc74cc --- /dev/null +++ b/YD10测试机/bin/Debug/参考信息.json @@ -0,0 +1,85 @@ +{ + "打印名称设置": "IOT(JW)", + "串口诊断协议版本号": null, + "软件版本号": null, + "设备IMEI": null, + "设备ICCID": null, + "GNSS产品型号": null, + "GNSS软件版本号": null, + "GNSS硬件版本号": null, + "SPI FLASH ID": null, + "BOOT底层软件版本": null, + "BOOT升级协议版本": null, + "通信协议版本号": null, + "备份区软件版本号": null, + "OTA零部件编码": "1044", + "OTA域名": "https://gw.alitest.yadeaiot.com.cn/api/open", + "拨号状态": "1(不可更改)", + "驻网状态": "1(不可更改)", + "服务器连接状态": "1(不可更改)", + "GNSS定位状态": "1(不可更改)", + "GNSS SNR值": "35(默认4个值>=35,可改)", + "RSSI值": ">=-80(不可更改)", + "RSRP值": "-92~-94", + "RSRQ值": "-20~-50", + "SINR值": ">=0(不可更改)", + "ACC管脚电平状态": "1", + "外电电压值": "30(误差1)", + "K线通讯状态": "1(不可更改)", + "硬件版本号": "12", + "产品型号": "50", + "产品识别码": "IOT", + "产商识别码": "嘉为", + "客户识别码": null, + "生产日": "(不填)", + "生产月份": "(不填)", + "生产年份": "(不填)", + "流水号": "(不填)", + "服务器域名": "cars.test.yadeaiot.com.cn", + "服务器端口号": "6201", + "外电电压AD比列值": "111294", + "物料编码": "(不填)", + "供应商编码": "(不填)", + "批次号": "(不填)", + "串口诊断协议版本号status": true, + "软件版本号status": true, + "设备IMEIstatus": true, + "设备ICCIDstatus": true, + "GNSS产品型号status": true, + "GNSS软件版本号status": true, + "GNSS硬件版本号status": true, + "SPI FLASH IDstatus": true, + "BOOT底层软件版本status": true, + "BOOT升级协议版本status": true, + "通信协议版本号status": true, + "备份区软件版本号status": true, + "OTA零部件编码status": true, + "OTA域名status": true, + "拨号状态status": true, + "驻网状态status": true, + "服务器连接状态status": true, + "GNSS定位状态status": false, + "GNSS SNR值status": false, + "RSSI值status": true, + "RSRP值status": false, + "RSRQ值status": false, + "SINR值status": true, + "ACC管脚电平状态status": false, + "外电电压值status": false, + "K线通讯状态status": false, + "硬件版本号status": true, + "产品型号status": true, + "产品识别码status": true, + "产商识别码status": true, + "客户识别码status": true, + "生产日status": true, + "生产月份status": true, + "生产年份status": true, + "流水号status": true, + "服务器域名status": true, + "服务器端口号status": true, + "外电电压AD比列值status": true, + "物料编码status": true, + "供应商编码status": true, + "批次号status": true +} \ No newline at end of file diff --git a/YD10测试机/bin/Debug/配置.json b/YD10测试机/bin/Debug/配置.json new file mode 100644 index 0000000..ed763a2 --- /dev/null +++ b/YD10测试机/bin/Debug/配置.json @@ -0,0 +1,6 @@ +{ + "打印机": "导出为WPS PDF", + "张数": "1", + "自动打印机": true, + "号码校验": false +} \ No newline at end of file diff --git a/YD10测试机/bin/YD10上位机V0.1.zip b/YD10测试机/bin/YD10上位机V0.1.zip new file mode 100644 index 0000000..327de9b Binary files /dev/null and b/YD10测试机/bin/YD10上位机V0.1.zip differ diff --git a/YD10测试机/bin/YD10上位机V0.2.zip b/YD10测试机/bin/YD10上位机V0.2.zip new file mode 100644 index 0000000..4ee06f6 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V0.2.zip differ diff --git a/YD10测试机/bin/YD10上位机V0.3-25.3.17.zip b/YD10测试机/bin/YD10上位机V0.3-25.3.17.zip new file mode 100644 index 0000000..d39701e Binary files /dev/null and b/YD10测试机/bin/YD10上位机V0.3-25.3.17.zip differ diff --git a/YD10测试机/bin/YD10上位机V0.4-25.3.17.zip b/YD10测试机/bin/YD10上位机V0.4-25.3.17.zip new file mode 100644 index 0000000..d6f1e61 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V0.4-25.3.17.zip differ diff --git a/YD10测试机/bin/YD10上位机V0.5-25.3.18.zip b/YD10测试机/bin/YD10上位机V0.5-25.3.18.zip new file mode 100644 index 0000000..d020970 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V0.5-25.3.18.zip differ diff --git a/YD10测试机/bin/YD10上位机V0.7-25.3.18.zip b/YD10测试机/bin/YD10上位机V0.7-25.3.18.zip new file mode 100644 index 0000000..b1add19 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V0.7-25.3.18.zip differ diff --git a/YD10测试机/bin/YD10上位机V0.8-25.3.18.zip b/YD10测试机/bin/YD10上位机V0.8-25.3.18.zip new file mode 100644 index 0000000..386ab98 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V0.8-25.3.18.zip differ diff --git a/YD10测试机/bin/YD10上位机V0.9-25.3.19.zip b/YD10测试机/bin/YD10上位机V0.9-25.3.19.zip new file mode 100644 index 0000000..dc180be Binary files /dev/null and b/YD10测试机/bin/YD10上位机V0.9-25.3.19.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.0-25.3.19.zip b/YD10测试机/bin/YD10上位机V1.0-25.3.19.zip new file mode 100644 index 0000000..eada34a Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.0-25.3.19.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.1-25.3.19.zip b/YD10测试机/bin/YD10上位机V1.1-25.3.19.zip new file mode 100644 index 0000000..2bc987d Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.1-25.3.19.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.2-25.3.19.zip b/YD10测试机/bin/YD10上位机V1.2-25.3.19.zip new file mode 100644 index 0000000..0217974 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.2-25.3.19.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19.zip b/YD10测试机/bin/YD10上位机V1.3-25.3.19.zip new file mode 100644 index 0000000..2b552c8 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.3-25.3.19.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/Newtonsoft.Json.dll b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/Newtonsoft.Json.dll new file mode 100644 index 0000000..7af125a Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/Newtonsoft.Json.dll differ diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/ThoughtWorks.QRCode.dll b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/ThoughtWorks.QRCode.dll new file mode 100644 index 0000000..45b1b52 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/ThoughtWorks.QRCode.dll differ diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/Windows.winmd b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/Windows.winmd new file mode 100644 index 0000000..cb42bab Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/Windows.winmd differ diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.exe b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.exe new file mode 100644 index 0000000..9828ac1 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.exe differ diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.exe.config b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.exe.config new file mode 100644 index 0000000..3e0e37c --- /dev/null +++ b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.exe.config @@ -0,0 +1,3 @@ + + + diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.pdb b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.pdb new file mode 100644 index 0000000..9418e98 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/YD10测试机.pdb differ diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/zxing.dll b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/zxing.dll new file mode 100644 index 0000000..6331cd2 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/zxing.dll differ diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/参考信息.json b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/参考信息.json new file mode 100644 index 0000000..ef60db3 --- /dev/null +++ b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/参考信息.json @@ -0,0 +1,84 @@ +{ + "串口诊断协议版本号": null, + "软件版本号": null, + "设备IMEI": null, + "设备ICCID": null, + "GNSS产品型号": null, + "GNSS软件版本号": null, + "GNSS硬件版本号": null, + "SPI FLASH ID": null, + "BOOT底层软件版本": null, + "BOOT升级协议版本": null, + "通信协议版本号": null, + "备份区软件版本号": null, + "OTA零部件编码": "1044", + "OTA域名": "https://gw.alitest.yadeaiot.com.cn/api/open", + "拨号状态": "1(不可更改)", + "驻网状态": "1(不可更改)", + "服务器连接状态": "1(不可更改)", + "GNSS定位状态": "1(不可更改)", + "GNSS SNR值": "35(默认4个值>=35,可改)", + "RSSI值": ">=-80(不可更改)", + "RSRP值": "-92~-94", + "RSRQ值": "-20~-50", + "SINR值": ">=0(不可更改)", + "ACC管脚电平状态": "1", + "外电电压值": "30(误差1)", + "K线通讯状态": "1(不可更改)", + "硬件版本号": "12", + "产品型号": "50", + "产品识别码": "IOT", + "产商识别码": "嘉为", + "客户识别码": null, + "生产日": "(不填)", + "生产月份": "(不填)", + "生产年份": "(不填)", + "流水号": "(不填)", + "服务器域名": "cars.test.yadeaiot.com.cn", + "服务器端口号": "6201", + "外电电压AD比列值": "111294", + "物料编码": "(不填)", + "供应商编码": "(不填)", + "批次号": "(不填)", + "串口诊断协议版本号status": true, + "软件版本号status": true, + "设备IMEIstatus": true, + "设备ICCIDstatus": true, + "GNSS产品型号status": true, + "GNSS软件版本号status": true, + "GNSS硬件版本号status": true, + "SPI FLASH IDstatus": true, + "BOOT底层软件版本status": true, + "BOOT升级协议版本status": true, + "通信协议版本号status": true, + "备份区软件版本号status": true, + "OTA零部件编码status": true, + "OTA域名status": true, + "拨号状态status": true, + "驻网状态status": true, + "服务器连接状态status": true, + "GNSS定位状态status": true, + "GNSS SNR值status": true, + "RSSI值status": true, + "RSRP值status": true, + "RSRQ值status": true, + "SINR值status": true, + "ACC管脚电平状态status": true, + "外电电压值status": true, + "K线通讯状态status": true, + "硬件版本号status": true, + "产品型号status": true, + "产品识别码status": true, + "产商识别码status": true, + "客户识别码status": true, + "生产日status": true, + "生产月份status": true, + "生产年份status": true, + "流水号status": true, + "服务器域名status": true, + "服务器端口号status": true, + "外电电压AD比列值status": true, + "物料编码status": true, + "供应商编码status": true, + "批次号status": true +} \ No newline at end of file diff --git a/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/配置.json b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/配置.json new file mode 100644 index 0000000..ed763a2 --- /dev/null +++ b/YD10测试机/bin/YD10上位机V1.3-25.3.19/Debug/配置.json @@ -0,0 +1,6 @@ +{ + "打印机": "导出为WPS PDF", + "张数": "1", + "自动打印机": true, + "号码校验": false +} \ No newline at end of file diff --git a/YD10测试机/bin/YD10上位机V1.4-25.3.19.zip b/YD10测试机/bin/YD10上位机V1.4-25.3.19.zip new file mode 100644 index 0000000..d4069dd Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.4-25.3.19.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.5-25.3.19.zip b/YD10测试机/bin/YD10上位机V1.5-25.3.19.zip new file mode 100644 index 0000000..0a8fa26 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.5-25.3.19.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.6-25.3.19.zip b/YD10测试机/bin/YD10上位机V1.6-25.3.19.zip new file mode 100644 index 0000000..b7dca49 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.6-25.3.19.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.7-25.3.20.zip b/YD10测试机/bin/YD10上位机V1.7-25.3.20.zip new file mode 100644 index 0000000..8e4f843 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.7-25.3.20.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.8-25.3.21.zip b/YD10测试机/bin/YD10上位机V1.8-25.3.21.zip new file mode 100644 index 0000000..258d0c5 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.8-25.3.21.zip differ diff --git a/YD10测试机/bin/YD10上位机V1.9-25.3.21.zip b/YD10测试机/bin/YD10上位机V1.9-25.3.21.zip new file mode 100644 index 0000000..08bc9b8 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V1.9-25.3.21.zip differ diff --git a/YD10测试机/bin/YD10上位机V2.0-25.3.27.zip b/YD10测试机/bin/YD10上位机V2.0-25.3.27.zip new file mode 100644 index 0000000..4b05f41 Binary files /dev/null and b/YD10测试机/bin/YD10上位机V2.0-25.3.27.zip differ diff --git a/YD10测试机/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs b/YD10测试机/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs new file mode 100644 index 0000000..5d01041 --- /dev/null +++ b/YD10测试机/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.0", FrameworkDisplayName = ".NET Framework 4")] diff --git a/YD10测试机/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs b/YD10测试机/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs new file mode 100644 index 0000000..e5dc9b8 --- /dev/null +++ b/YD10测试机/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] diff --git a/YD10测试机/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/YD10测试机/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs new file mode 100644 index 0000000..15efebf --- /dev/null +++ b/YD10测试机/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] diff --git a/YD10测试机/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/YD10测试机/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..1078187 Binary files /dev/null and b/YD10测试机/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/YD10测试机/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/YD10测试机/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..c3ca601 Binary files /dev/null and b/YD10测试机/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/YD10测试机/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/YD10测试机/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..de97831 Binary files /dev/null and b/YD10测试机/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/YD10测试机/obj/Debug/YD10测试机.Form1.resources b/YD10测试机/obj/Debug/YD10测试机.Form1.resources new file mode 100644 index 0000000..c795599 Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.Form1.resources differ diff --git a/YD10测试机/obj/Debug/YD10测试机.Form2.resources b/YD10测试机/obj/Debug/YD10测试机.Form2.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.Form2.resources differ diff --git a/YD10测试机/obj/Debug/YD10测试机.Form3.resources b/YD10测试机/obj/Debug/YD10测试机.Form3.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.Form3.resources differ diff --git a/YD10测试机/obj/Debug/YD10测试机.Form4.resources b/YD10测试机/obj/Debug/YD10测试机.Form4.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.Form4.resources differ diff --git a/YD10测试机/obj/Debug/YD10测试机.Properties.Resources.resources b/YD10测试机/obj/Debug/YD10测试机.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.Properties.Resources.resources differ diff --git a/YD10测试机/obj/Debug/YD10测试机.csproj.AssemblyReference.cache b/YD10测试机/obj/Debug/YD10测试机.csproj.AssemblyReference.cache new file mode 100644 index 0000000..f5e894a Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.csproj.AssemblyReference.cache differ diff --git a/YD10测试机/obj/Debug/YD10测试机.csproj.CoreCompileInputs.cache b/YD10测试机/obj/Debug/YD10测试机.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..54443b7 --- /dev/null +++ b/YD10测试机/obj/Debug/YD10测试机.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +80cfbf33494ef7ebc9674e6fc57c5dc51e43a69d diff --git a/YD10测试机/obj/Debug/YD10测试机.csproj.FileListAbsolute.txt b/YD10测试机/obj/Debug/YD10测试机.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..a22902f --- /dev/null +++ b/YD10测试机/obj/Debug/YD10测试机.csproj.FileListAbsolute.txt @@ -0,0 +1,14 @@ +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.csproj.AssemblyReference.cache +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.Form1.resources +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.Properties.Resources.resources +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.csproj.GenerateResource.cache +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.csproj.CoreCompileInputs.cache +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\bin\Debug\YD10测试机.exe +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\bin\Debug\YD10测试机.pdb +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.exe +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.pdb +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.Form2.resources +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\bin\Debug\YD10测试机.exe.config +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.csproj.CopyComplete +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.Form3.resources +C:\Users\Administrator\Documents\YD10测试机\YD10测试机\obj\Debug\YD10测试机.Form4.resources diff --git a/YD10测试机/obj/Debug/YD10测试机.csproj.GenerateResource.cache b/YD10测试机/obj/Debug/YD10测试机.csproj.GenerateResource.cache new file mode 100644 index 0000000..d0df441 Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.csproj.GenerateResource.cache differ diff --git a/YD10测试机/obj/Debug/YD10测试机.exe b/YD10测试机/obj/Debug/YD10测试机.exe new file mode 100644 index 0000000..1ba8ab8 Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.exe differ diff --git a/YD10测试机/obj/Debug/YD10测试机.pdb b/YD10测试机/obj/Debug/YD10测试机.pdb new file mode 100644 index 0000000..b4bb53e Binary files /dev/null and b/YD10测试机/obj/Debug/YD10测试机.pdb differ diff --git a/YD10测试机/obj/Release/.NETFramework,Version=v4.5.AssemblyAttributes.cs b/YD10测试机/obj/Release/.NETFramework,Version=v4.5.AssemblyAttributes.cs new file mode 100644 index 0000000..e5dc9b8 --- /dev/null +++ b/YD10测试机/obj/Release/.NETFramework,Version=v4.5.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] diff --git a/YD10测试机/obj/Release/YD10测试机.csproj.AssemblyReference.cache b/YD10测试机/obj/Release/YD10测试机.csproj.AssemblyReference.cache new file mode 100644 index 0000000..0d53399 Binary files /dev/null and b/YD10测试机/obj/Release/YD10测试机.csproj.AssemblyReference.cache differ diff --git a/YD10测试机/obj/YD10测试机.csproj.nuget.dgspec.json b/YD10测试机/obj/YD10测试机.csproj.nuget.dgspec.json new file mode 100644 index 0000000..57b3239 --- /dev/null +++ b/YD10测试机/obj/YD10测试机.csproj.nuget.dgspec.json @@ -0,0 +1,57 @@ +{ + "format": 1, + "restore": { + "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\YD10测试机.csproj": {} + }, + "projects": { + "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\YD10测试机.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\YD10测试机.csproj", + "projectName": "YD10测试机", + "projectPath": "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\YD10测试机.csproj", + "packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\", + "outputPath": "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\obj\\", + "projectStyle": "PackageReference", + "skipContentFileWrite": true, + "configFilePaths": [ + "C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net45" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net45": { + "projectReferences": {} + } + } + }, + "frameworks": { + "net45": { + "dependencies": { + "Microsoft.Windows.SDK.Contracts": { + "target": "Package", + "version": "[10.0.26100.1742, )" + } + } + } + }, + "runtimes": { + "win": { + "#import": [] + }, + "win-x64": { + "#import": [] + }, + "win-x86": { + "#import": [] + } + } + } + } +} \ No newline at end of file diff --git a/YD10测试机/obj/YD10测试机.csproj.nuget.g.props b/YD10测试机/obj/YD10测试机.csproj.nuget.g.props new file mode 100644 index 0000000..945414c --- /dev/null +++ b/YD10测试机/obj/YD10测试机.csproj.nuget.g.props @@ -0,0 +1,21 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Administrator\.nuget\packages\ + PackageReference + 5.11.6 + + + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + + + \ No newline at end of file diff --git a/YD10测试机/obj/YD10测试机.csproj.nuget.g.targets b/YD10测试机/obj/YD10测试机.csproj.nuget.g.targets new file mode 100644 index 0000000..9bbfe6d --- /dev/null +++ b/YD10测试机/obj/YD10测试机.csproj.nuget.g.targets @@ -0,0 +1,11 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + + + + + \ No newline at end of file diff --git a/YD10测试机/obj/project.assets.json b/YD10测试机/obj/project.assets.json new file mode 100644 index 0000000..a001771 --- /dev/null +++ b/YD10测试机/obj/project.assets.json @@ -0,0 +1,659 @@ +{ + "version": 3, + "targets": { + ".NETFramework,Version=v4.5": { + "Microsoft.Windows.SDK.Contracts/10.0.26100.1742": { + "type": "package", + "dependencies": { + "System.Runtime.InteropServices.WindowsRuntime": "4.3.0", + "System.Runtime.WindowsRuntime": "4.6.0", + "System.Runtime.WindowsRuntime.UI.Xaml": "4.6.0" + }, + "build": { + "build/Microsoft.Windows.SDK.Contracts.props": {}, + "build/Microsoft.Windows.SDK.Contracts.targets": {} + } + }, + "System.Runtime.InteropServices.WindowsRuntime/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime.WindowsRuntime/4.6.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + }, + "build": { + "buildTransitive/net45/System.Runtime.WindowsRuntime.targets": {} + } + }, + "System.Runtime.WindowsRuntime.UI.Xaml/4.6.0": { + "type": "package", + "dependencies": { + "System.Runtime.WindowsRuntime": "4.6.0" + }, + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + }, + "build": { + "build/net45/System.Runtime.WindowsRuntime.UI.Xaml.targets": {} + } + } + }, + ".NETFramework,Version=v4.5/win": { + "Microsoft.Windows.SDK.Contracts/10.0.26100.1742": { + "type": "package", + "dependencies": { + "System.Runtime.InteropServices.WindowsRuntime": "4.3.0", + "System.Runtime.WindowsRuntime": "4.6.0", + "System.Runtime.WindowsRuntime.UI.Xaml": "4.6.0" + }, + "build": { + "build/Microsoft.Windows.SDK.Contracts.props": {}, + "build/Microsoft.Windows.SDK.Contracts.targets": {} + } + }, + "System.Runtime.InteropServices.WindowsRuntime/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime.WindowsRuntime/4.6.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + }, + "build": { + "buildTransitive/net45/System.Runtime.WindowsRuntime.targets": {} + } + }, + "System.Runtime.WindowsRuntime.UI.Xaml/4.6.0": { + "type": "package", + "dependencies": { + "System.Runtime.WindowsRuntime": "4.6.0" + }, + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + }, + "build": { + "build/net45/System.Runtime.WindowsRuntime.UI.Xaml.targets": {} + } + } + }, + ".NETFramework,Version=v4.5/win-x64": { + "Microsoft.Windows.SDK.Contracts/10.0.26100.1742": { + "type": "package", + "dependencies": { + "System.Runtime.InteropServices.WindowsRuntime": "4.3.0", + "System.Runtime.WindowsRuntime": "4.6.0", + "System.Runtime.WindowsRuntime.UI.Xaml": "4.6.0" + }, + "build": { + "build/Microsoft.Windows.SDK.Contracts.props": {}, + "build/Microsoft.Windows.SDK.Contracts.targets": {} + } + }, + "System.Runtime.InteropServices.WindowsRuntime/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime.WindowsRuntime/4.6.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + }, + "build": { + "buildTransitive/net45/System.Runtime.WindowsRuntime.targets": {} + } + }, + "System.Runtime.WindowsRuntime.UI.Xaml/4.6.0": { + "type": "package", + "dependencies": { + "System.Runtime.WindowsRuntime": "4.6.0" + }, + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + }, + "build": { + "build/net45/System.Runtime.WindowsRuntime.UI.Xaml.targets": {} + } + } + }, + ".NETFramework,Version=v4.5/win-x86": { + "Microsoft.Windows.SDK.Contracts/10.0.26100.1742": { + "type": "package", + "dependencies": { + "System.Runtime.InteropServices.WindowsRuntime": "4.3.0", + "System.Runtime.WindowsRuntime": "4.6.0", + "System.Runtime.WindowsRuntime.UI.Xaml": "4.6.0" + }, + "build": { + "build/Microsoft.Windows.SDK.Contracts.props": {}, + "build/Microsoft.Windows.SDK.Contracts.targets": {} + } + }, + "System.Runtime.InteropServices.WindowsRuntime/4.3.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + } + }, + "System.Runtime.WindowsRuntime/4.6.0": { + "type": "package", + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + }, + "build": { + "buildTransitive/net45/System.Runtime.WindowsRuntime.targets": {} + } + }, + "System.Runtime.WindowsRuntime.UI.Xaml/4.6.0": { + "type": "package", + "dependencies": { + "System.Runtime.WindowsRuntime": "4.6.0" + }, + "compile": { + "ref/net45/_._": {} + }, + "runtime": { + "lib/net45/_._": {} + }, + "build": { + "build/net45/System.Runtime.WindowsRuntime.UI.Xaml.targets": {} + } + } + } + }, + "libraries": { + "Microsoft.Windows.SDK.Contracts/10.0.26100.1742": { + "sha512": "i7FoN7nBn805fgMhkQlSMUNvJVgUXMquDco3ItGc/h3jil9lOPdtoFSpx/NDNdlkNbBh1LW1shbAAeUpEnYZNw==", + "type": "package", + "path": "microsoft.windows.sdk.contracts/10.0.26100.1742", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Microsoft.Windows.SDK.Contracts.props", + "build/Microsoft.Windows.SDK.Contracts.targets", + "c/Catalogs/cat353be8f91891a6a5761b9ac157fa2ff1.cat", + "c/Catalogs/cat4ec14c5368b7642563c070cd168960a8.cat", + "c/Catalogs/cate59830bab4961666e8d8c2af1e5fa771.cat", + "c/Catalogs/catf105a73f98cfc88c7b64d8f7b39a474c.cat", + "microsoft.windows.sdk.contracts.10.0.26100.1742.nupkg.sha512", + "microsoft.windows.sdk.contracts.nuspec", + "ref/netstandard2.0/Windows.AI.MachineLearning.MachineLearningContract.winmd", + "ref/netstandard2.0/Windows.AI.MachineLearning.Preview.MachineLearningPreviewContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Activation.ActivatedEventsContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Activation.ActivationCameraSettingsContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Activation.ContactActivatedEventsContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Calls.Background.CallsBackgroundContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Calls.CallsPhoneContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Calls.CallsVoipContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Calls.LockScreenCallContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.FullTrustAppContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Preview.Notes.PreviewNotesContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Resources.Management.ResourceIndexerContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Search.Core.SearchCoreContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Search.SearchContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.SocialInfo.SocialInfoContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.StartupTaskContract.winmd", + "ref/netstandard2.0/Windows.ApplicationModel.Wallet.WalletContract.winmd", + "ref/netstandard2.0/Windows.Devices.Custom.CustomDeviceContract.winmd", + "ref/netstandard2.0/Windows.Devices.DevicesLowLevelContract.winmd", + "ref/netstandard2.0/Windows.Devices.Portable.PortableDeviceContract.winmd", + "ref/netstandard2.0/Windows.Devices.Power.PowerGridApiContract.winmd", + "ref/netstandard2.0/Windows.Devices.Printers.Extensions.ExtensionsContract.winmd", + "ref/netstandard2.0/Windows.Devices.Printers.PrintersContract.winmd", + "ref/netstandard2.0/Windows.Devices.Scanners.ScannerDeviceContract.winmd", + "ref/netstandard2.0/Windows.Devices.SmartCards.SmartCardBackgroundTriggerContract.winmd", + "ref/netstandard2.0/Windows.Devices.SmartCards.SmartCardEmulatorContract.winmd", + "ref/netstandard2.0/Windows.Devices.Sms.LegacySmsApiContract.winmd", + "ref/netstandard2.0/Windows.Embedded.DeviceLockdown.DeviceLockdownContract.winmd", + "ref/netstandard2.0/Windows.Foundation.FoundationContract.winmd", + "ref/netstandard2.0/Windows.Foundation.UniversalApiContract.winmd", + "ref/netstandard2.0/Windows.Gaming.Input.GamingInputPreviewContract.winmd", + "ref/netstandard2.0/Windows.Gaming.Preview.GamesEnumerationContract.winmd", + "ref/netstandard2.0/Windows.Gaming.UI.GameChatOverlayContract.winmd", + "ref/netstandard2.0/Windows.Gaming.UI.GamingUIProviderContract.winmd", + "ref/netstandard2.0/Windows.Gaming.XboxLive.StorageApiContract.winmd", + "ref/netstandard2.0/Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract.winmd", + "ref/netstandard2.0/Windows.Graphics.Printing3D.Printing3DContract.winmd", + "ref/netstandard2.0/Windows.Management.Deployment.Preview.DeploymentPreviewContract.winmd", + "ref/netstandard2.0/Windows.Management.Deployment.SharedPackageContainerContract.winmd", + "ref/netstandard2.0/Windows.Management.Update.WindowsUpdateContract.winmd", + "ref/netstandard2.0/Windows.Management.Workplace.WorkplaceSettingsContract.winmd", + "ref/netstandard2.0/Windows.Media.AppBroadcasting.AppBroadcastingContract.winmd", + "ref/netstandard2.0/Windows.Media.AppRecording.AppRecordingContract.winmd", + "ref/netstandard2.0/Windows.Media.Capture.AppBroadcastContract.winmd", + "ref/netstandard2.0/Windows.Media.Capture.AppCaptureContract.winmd", + "ref/netstandard2.0/Windows.Media.Capture.AppCaptureMetadataContract.winmd", + "ref/netstandard2.0/Windows.Media.Capture.CameraCaptureUIContract.winmd", + "ref/netstandard2.0/Windows.Media.Capture.GameBarContract.winmd", + "ref/netstandard2.0/Windows.Media.Devices.CallControlContract.winmd", + "ref/netstandard2.0/Windows.Media.MediaControlContract.winmd", + "ref/netstandard2.0/Windows.Media.Playlists.PlaylistsContract.winmd", + "ref/netstandard2.0/Windows.Media.Protection.ProtectionRenewalContract.winmd", + "ref/netstandard2.0/Windows.Networking.Connectivity.WwanContract.winmd", + "ref/netstandard2.0/Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract.winmd", + "ref/netstandard2.0/Windows.Networking.NetworkOperators.NetworkOperatorsFdnContract.WinMD", + "ref/netstandard2.0/Windows.Networking.Sockets.ControlChannelTriggerContract.winmd", + "ref/netstandard2.0/Windows.Networking.XboxLive.XboxLiveSecureSocketsContract.winmd", + "ref/netstandard2.0/Windows.Perception.Automation.Core.PerceptionAutomationCoreContract.winmd", + "ref/netstandard2.0/Windows.Phone.PhoneContract.winmd", + "ref/netstandard2.0/Windows.Phone.StartScreen.DualSimTileContract.WinMD", + "ref/netstandard2.0/Windows.Security.EnterpriseData.EnterpriseDataContract.winmd", + "ref/netstandard2.0/Windows.Security.ExchangeActiveSyncProvisioning.EasContract.winmd", + "ref/netstandard2.0/Windows.Security.Isolation.Isolatedwindowsenvironmentcontract.winmd", + "ref/netstandard2.0/Windows.Services.Maps.GuidanceContract.winmd", + "ref/netstandard2.0/Windows.Services.Maps.LocalSearchContract.winmd", + "ref/netstandard2.0/Windows.Services.Store.StoreContract.winmd", + "ref/netstandard2.0/Windows.Services.TargetedContent.TargetedContentContract.winmd", + "ref/netstandard2.0/Windows.Storage.Provider.CloudFilesContract.winmd", + "ref/netstandard2.0/Windows.System.Profile.ProfileHardwareTokenContract.winmd", + "ref/netstandard2.0/Windows.System.Profile.ProfileRetailInfoContract.winmd", + "ref/netstandard2.0/Windows.System.Profile.ProfileSharedModeContract.winmd", + "ref/netstandard2.0/Windows.System.Profile.SystemManufacturers.SystemManufacturersContract.winmd", + "ref/netstandard2.0/Windows.System.SystemManagementContract.winmd", + "ref/netstandard2.0/Windows.System.UserProfile.UserProfileContract.winmd", + "ref/netstandard2.0/Windows.System.UserProfile.UserProfileLockScreenContract.winmd", + "ref/netstandard2.0/Windows.UI.ApplicationSettings.ApplicationsSettingsContract.winmd", + "ref/netstandard2.0/Windows.UI.Core.AnimationMetrics.AnimationMetricsContract.winmd", + "ref/netstandard2.0/Windows.UI.Core.CoreWindowDialogsContract.winmd", + "ref/netstandard2.0/Windows.UI.Shell.SecurityAppManagerContract.winmd", + "ref/netstandard2.0/Windows.UI.Shell.WindowTabManagerContract.winmd", + "ref/netstandard2.0/Windows.UI.UIAutomation.UIAutomationContract.winmd", + "ref/netstandard2.0/Windows.UI.ViewManagement.ViewManagementViewScalingContract.winmd", + "ref/netstandard2.0/Windows.UI.WebUI.Core.WebUICommandBarContract.winmd", + "ref/netstandard2.0/Windows.UI.Xaml.Core.Direct.XamlDirectContract.winmd", + "ref/netstandard2.0/Windows.UI.Xaml.Hosting.HostingContract.winmd", + "ref/netstandard2.0/Windows.Web.Http.Diagnostics.HttpDiagnosticsContract.winmd", + "ref/netstandard2.0/Windows.WinMD", + "ref/netstandard2.0/en/Windows.AI.MachineLearning.MachineLearningContract.xml", + "ref/netstandard2.0/en/Windows.AI.MachineLearning.Preview.MachineLearningPreviewContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Activation.ActivatedEventsContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Activation.ActivationCameraSettingsContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Activation.ContactActivatedEventsContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Activation.WebUISearchActivatedEventsContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Background.BackgroundAlarmApplicationContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Calls.Background.CallsBackgroundContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Calls.CallsPhoneContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Calls.CallsVoipContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Calls.LockScreenCallContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.FullTrustAppContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Preview.InkWorkspace.PreviewInkWorkspaceContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Preview.Notes.PreviewNotesContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Resources.Management.ResourceIndexerContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Search.Core.SearchCoreContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Search.SearchContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.SocialInfo.SocialInfoContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.StartupTaskContract.xml", + "ref/netstandard2.0/en/Windows.ApplicationModel.Wallet.WalletContract.xml", + "ref/netstandard2.0/en/Windows.Devices.Custom.CustomDeviceContract.xml", + "ref/netstandard2.0/en/Windows.Devices.DevicesLowLevelContract.xml", + "ref/netstandard2.0/en/Windows.Devices.Portable.PortableDeviceContract.xml", + "ref/netstandard2.0/en/Windows.Devices.Printers.Extensions.ExtensionsContract.xml", + "ref/netstandard2.0/en/Windows.Devices.Printers.PrintersContract.xml", + "ref/netstandard2.0/en/Windows.Devices.Scanners.ScannerDeviceContract.xml", + "ref/netstandard2.0/en/Windows.Devices.SmartCards.SmartCardBackgroundTriggerContract.xml", + "ref/netstandard2.0/en/Windows.Devices.SmartCards.SmartCardEmulatorContract.xml", + "ref/netstandard2.0/en/Windows.Devices.Sms.LegacySmsApiContract.xml", + "ref/netstandard2.0/en/Windows.Foundation.FoundationContract.xml", + "ref/netstandard2.0/en/Windows.Foundation.UniversalApiContract.xml", + "ref/netstandard2.0/en/Windows.Gaming.Input.GamingInputPreviewContract.xml", + "ref/netstandard2.0/en/Windows.Gaming.Preview.GamesEnumerationContract.xml", + "ref/netstandard2.0/en/Windows.Gaming.UI.GameChatOverlayContract.xml", + "ref/netstandard2.0/en/Windows.Gaming.UI.GamingUIProviderContract.xml", + "ref/netstandard2.0/en/Windows.Gaming.XboxLive.StorageApiContract.xml", + "ref/netstandard2.0/en/Windows.Globalization.GlobalizationJapanesePhoneticAnalyzerContract.xml", + "ref/netstandard2.0/en/Windows.Graphics.Printing3D.Printing3DContract.xml", + "ref/netstandard2.0/en/Windows.Management.Deployment.Preview.DeploymentPreviewContract.xml", + "ref/netstandard2.0/en/Windows.Management.Workplace.WorkplaceSettingsContract.xml", + "ref/netstandard2.0/en/Windows.Media.AppBroadcasting.AppBroadcastingContract.xml", + "ref/netstandard2.0/en/Windows.Media.AppRecording.AppRecordingContract.xml", + "ref/netstandard2.0/en/Windows.Media.Capture.AppBroadcastContract.xml", + "ref/netstandard2.0/en/Windows.Media.Capture.AppCaptureContract.xml", + "ref/netstandard2.0/en/Windows.Media.Capture.AppCaptureMetadataContract.xml", + "ref/netstandard2.0/en/Windows.Media.Capture.CameraCaptureUIContract.xml", + "ref/netstandard2.0/en/Windows.Media.Capture.GameBarContract.xml", + "ref/netstandard2.0/en/Windows.Media.Devices.CallControlContract.xml", + "ref/netstandard2.0/en/Windows.Media.MediaControlContract.xml", + "ref/netstandard2.0/en/Windows.Media.Playlists.PlaylistsContract.xml", + "ref/netstandard2.0/en/Windows.Media.Protection.ProtectionRenewalContract.xml", + "ref/netstandard2.0/en/Windows.Networking.Connectivity.WwanContract.xml", + "ref/netstandard2.0/en/Windows.Networking.NetworkOperators.LegacyNetworkOperatorsContract.xml", + "ref/netstandard2.0/en/Windows.Networking.NetworkOperators.NetworkOperatorsFdnContract.xml", + "ref/netstandard2.0/en/Windows.Networking.Sockets.ControlChannelTriggerContract.xml", + "ref/netstandard2.0/en/Windows.Networking.XboxLive.XboxLiveSecureSocketsContract.xml", + "ref/netstandard2.0/en/Windows.Perception.Automation.Core.PerceptionAutomationCoreContract.xml", + "ref/netstandard2.0/en/Windows.Phone.PhoneContract.xml", + "ref/netstandard2.0/en/Windows.Phone.StartScreen.DualSimTileContract.xml", + "ref/netstandard2.0/en/Windows.Security.EnterpriseData.EnterpriseDataContract.xml", + "ref/netstandard2.0/en/Windows.Security.ExchangeActiveSyncProvisioning.EasContract.xml", + "ref/netstandard2.0/en/Windows.Security.Isolation.IsolatedWindowsEnvironmentContract.xml", + "ref/netstandard2.0/en/Windows.Services.Maps.GuidanceContract.xml", + "ref/netstandard2.0/en/Windows.Services.Maps.LocalSearchContract.xml", + "ref/netstandard2.0/en/Windows.Services.Store.StoreContract.xml", + "ref/netstandard2.0/en/Windows.Services.TargetedContent.TargetedContentContract.xml", + "ref/netstandard2.0/en/Windows.Storage.Provider.CloudFilesContract.xml", + "ref/netstandard2.0/en/Windows.System.Profile.ProfileHardwareTokenContract.xml", + "ref/netstandard2.0/en/Windows.System.Profile.ProfileRetailInfoContract.xml", + "ref/netstandard2.0/en/Windows.System.Profile.ProfileSharedModeContract.xml", + "ref/netstandard2.0/en/Windows.System.Profile.SystemManufacturers.SystemManufacturersContract.xml", + "ref/netstandard2.0/en/Windows.System.SystemManagementContract.xml", + "ref/netstandard2.0/en/Windows.System.UserProfile.UserProfileContract.xml", + "ref/netstandard2.0/en/Windows.System.UserProfile.UserProfileLockScreenContract.xml", + "ref/netstandard2.0/en/Windows.UI.ApplicationSettings.ApplicationsSettingsContract.xml", + "ref/netstandard2.0/en/Windows.UI.Core.AnimationMetrics.AnimationMetricsContract.xml", + "ref/netstandard2.0/en/Windows.UI.Core.CoreWindowDialogsContract.xml", + "ref/netstandard2.0/en/Windows.UI.Shell.SecurityAppManagerContract.xml", + "ref/netstandard2.0/en/Windows.UI.UIAutomation.UIAutomationContract.xml", + "ref/netstandard2.0/en/Windows.UI.ViewManagement.ViewManagementViewScalingContract.xml", + "ref/netstandard2.0/en/Windows.UI.WebUI.Core.WebUICommandBarContract.xml", + "ref/netstandard2.0/en/Windows.UI.Xaml.Core.Direct.XamlDirectContract.xml", + "ref/netstandard2.0/en/Windows.UI.Xaml.Hosting.HostingContract.xml", + "ref/netstandard2.0/en/Windows.Web.Http.Diagnostics.HttpDiagnosticsContract.xml", + "ref/netstandard2.0/windows.system.profile.platformautomaticappsignincontract.winmd" + ] + }, + "System.Runtime.InteropServices.WindowsRuntime/4.3.0": { + "sha512": "J4GUi3xZQLUBasNwZnjrffN8i5wpHrBtZoLG+OhRyGo/+YunMRWWtwoMDlUAIdmX0uRfpHIBDSV6zyr3yf00TA==", + "type": "package", + "path": "system.runtime.interopservices.windowsruntime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll", + "lib/netstandard1.3/System.Runtime.InteropServices.WindowsRuntime.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios1/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll", + "ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/de/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/es/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/fr/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/it/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/ja/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/ko/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/ru/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netcore50/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.dll", + "ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/de/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/es/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/fr/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/it/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/ja/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/ko/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/ru/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll", + "system.runtime.interopservices.windowsruntime.4.3.0.nupkg.sha512", + "system.runtime.interopservices.windowsruntime.nuspec" + ] + }, + "System.Runtime.WindowsRuntime/4.6.0": { + "sha512": "IWrs1TmbxP65ZZjIglNyvDkFNoV5q2Pofg5WO7I8RKQOpLdFprQSh3xesOoClBqR4JHr4nEB1Xk1MqLPW1jPuQ==", + "type": "package", + "path": "system.runtime.windowsruntime/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "build/net45/System.Runtime.WindowsRuntime.targets", + "build/net451/System.Runtime.WindowsRuntime.targets", + "build/net461/System.Runtime.WindowsRuntime.targets", + "buildTransitive/net45/System.Runtime.WindowsRuntime.targets", + "buildTransitive/net451/System.Runtime.WindowsRuntime.targets", + "buildTransitive/net461/System.Runtime.WindowsRuntime.targets", + "lib/net45/_._", + "lib/netstandard1.0/System.Runtime.WindowsRuntime.dll", + "lib/netstandard1.0/System.Runtime.WindowsRuntime.xml", + "lib/netstandard1.2/System.Runtime.WindowsRuntime.dll", + "lib/netstandard1.2/System.Runtime.WindowsRuntime.xml", + "lib/netstandard2.0/System.Runtime.WindowsRuntime.dll", + "lib/netstandard2.0/System.Runtime.WindowsRuntime.xml", + "lib/portable-win8+wp8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.WindowsRuntime.dll", + "ref/netcore50/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/de/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/es/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/fr/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/it/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/ja/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/ko/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/ru/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/zh-hans/System.Runtime.WindowsRuntime.xml", + "ref/netcore50/zh-hant/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/System.Runtime.WindowsRuntime.dll", + "ref/netstandard1.0/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/de/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/es/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/fr/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/it/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/ja/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/ko/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/ru/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/System.Runtime.WindowsRuntime.dll", + "ref/netstandard1.2/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/de/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/es/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/fr/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/it/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/ja/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/ko/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/ru/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.WindowsRuntime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.WindowsRuntime.xml", + "ref/netstandard2.0/System.Runtime.WindowsRuntime.dll", + "ref/netstandard2.0/System.Runtime.WindowsRuntime.xml", + "ref/portable-win8+wp8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "runtimes/win-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll", + "runtimes/win-aot/lib/uap10.0.16299/_._", + "runtimes/win/lib/netcore50/System.Runtime.WindowsRuntime.dll", + "runtimes/win/lib/netcoreapp3.0/System.Runtime.WindowsRuntime.dll", + "runtimes/win/lib/netcoreapp3.0/System.Runtime.WindowsRuntime.xml", + "runtimes/win/lib/uap10.0.16299/_._", + "system.runtime.windowsruntime.4.6.0.nupkg.sha512", + "system.runtime.windowsruntime.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Runtime.WindowsRuntime.UI.Xaml/4.6.0": { + "sha512": "r4tNw5v5kqRJ9HikWpcyNf3suGw7DjX93svj9iBjtdeLqL8jt9Z+7f+s4wrKZJr84u8IMsrIjt8K6jYvkRqMSg==", + "type": "package", + "path": "system.runtime.windowsruntime.ui.xaml/4.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "build/net45/System.Runtime.WindowsRuntime.UI.Xaml.targets", + "build/net461/System.Runtime.WindowsRuntime.UI.Xaml.targets", + "lib/net45/_._", + "lib/netstandard1.1/System.Runtime.WindowsRuntime.UI.Xaml.dll", + "lib/netstandard1.1/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "lib/netstandard2.0/System.Runtime.WindowsRuntime.UI.Xaml.dll", + "lib/netstandard2.0/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "lib/portable-win8+wpa81/_._", + "lib/uap10.0.16299/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "ref/net45/_._", + "ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll", + "ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/de/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/es/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/fr/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/it/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/ja/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/ko/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/ru/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/zh-hans/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netcore50/zh-hant/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/System.Runtime.WindowsRuntime.UI.Xaml.dll", + "ref/netstandard1.1/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/de/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/es/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/fr/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/it/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/ja/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/ko/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/ru/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/zh-hans/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard1.1/zh-hant/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/netstandard2.0/System.Runtime.WindowsRuntime.UI.Xaml.dll", + "ref/netstandard2.0/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "ref/portable-win8+wpa81/_._", + "ref/uap10.0.16299/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "runtimes/win-aot/lib/uap10.0.16299/_._", + "runtimes/win/lib/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll", + "runtimes/win/lib/netcoreapp3.0/System.Runtime.WindowsRuntime.UI.Xaml.dll", + "runtimes/win/lib/netcoreapp3.0/System.Runtime.WindowsRuntime.UI.Xaml.xml", + "runtimes/win/lib/uap10.0.16299/_._", + "system.runtime.windowsruntime.ui.xaml.4.6.0.nupkg.sha512", + "system.runtime.windowsruntime.ui.xaml.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + } + }, + "projectFileDependencyGroups": { + ".NETFramework,Version=v4.5": [ + "Microsoft.Windows.SDK.Contracts >= 10.0.26100.1742" + ] + }, + "packageFolders": { + "C:\\Users\\Administrator\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\YD10测试机.csproj", + "projectName": "YD10测试机", + "projectPath": "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\YD10测试机.csproj", + "packagesPath": "C:\\Users\\Administrator\\.nuget\\packages\\", + "outputPath": "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\obj\\", + "projectStyle": "PackageReference", + "skipContentFileWrite": true, + "configFilePaths": [ + "C:\\Users\\Administrator\\AppData\\Roaming\\NuGet\\NuGet.Config", + "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + ], + "originalTargetFrameworks": [ + "net45" + ], + "sources": { + "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net45": { + "projectReferences": {} + } + } + }, + "frameworks": { + "net45": { + "dependencies": { + "Microsoft.Windows.SDK.Contracts": { + "target": "Package", + "version": "[10.0.26100.1742, )" + } + } + } + }, + "runtimes": { + "win": { + "#import": [] + }, + "win-x64": { + "#import": [] + }, + "win-x86": { + "#import": [] + } + } + } +} \ No newline at end of file diff --git a/YD10测试机/obj/project.nuget.cache b/YD10测试机/obj/project.nuget.cache new file mode 100644 index 0000000..8796f69 --- /dev/null +++ b/YD10测试机/obj/project.nuget.cache @@ -0,0 +1,13 @@ +{ + "version": 2, + "dgSpecHash": "/hxHqHvKBHnTl2nY1vWC4fuQQf174zQl3otU2850yc80/h+OrdqXX0C/e/FuA7cLxwkrBT9ct9texSHNfNfHoA==", + "success": true, + "projectFilePath": "C:\\Users\\Administrator\\Documents\\YD10测试机\\YD10测试机\\YD10测试机.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Administrator\\.nuget\\packages\\microsoft.windows.sdk.contracts\\10.0.26100.1742\\microsoft.windows.sdk.contracts.10.0.26100.1742.nupkg.sha512", + "C:\\Users\\Administrator\\.nuget\\packages\\system.runtime.interopservices.windowsruntime\\4.3.0\\system.runtime.interopservices.windowsruntime.4.3.0.nupkg.sha512", + "C:\\Users\\Administrator\\.nuget\\packages\\system.runtime.windowsruntime\\4.6.0\\system.runtime.windowsruntime.4.6.0.nupkg.sha512", + "C:\\Users\\Administrator\\.nuget\\packages\\system.runtime.windowsruntime.ui.xaml\\4.6.0\\system.runtime.windowsruntime.ui.xaml.4.6.0.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file