| DevApp/Gs.DevApp/App.config | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/Gs.DevApp.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/Program.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/XtraForm2.Designer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/XtraForm2.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/packages.config | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/test/LoggerHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/test/MainForm.Designer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/test/MainForm.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| DevApp/Gs.DevApp/test/SQLHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
DevApp/Gs.DevApp/App.config
@@ -34,10 +34,16 @@ </dependentAssembly> </assemblyBinding> </runtime> <connectionStrings> <!--æ°ç»V2æ°æ®åº--> <add name="conn" connectionString="RGF0YSBTb3VyY2U9MTkyLjE2OC4xLjQ7SW5pdGlhbCBDYXRhbG9nPVNOTUVTO1VzZXIgSWQ9c2M7UGFzc3dvcmQ9bWVzQDEyMztQb29saW5nPUZhbHNlO1Bvb2xpbmc9dHJ1ZTtNaW4gUG9vbCBTaXplPTEwO01heCBQb29sIFNpemU9NTA7Q29ubmVjdCBUaW1lb3V0PTUwMA==" /> <!--<add name="conn" connectionString="RGF0YSBTb3VyY2U9MTkyLjE2OC4xLjI7SW5pdGlhbCBDYXRhbG9nPVFYX1NOTUVTO1VzZXIgSWQ9c2M7UGFzc3dvcmQ9bWVzQDEyMztQb29saW5nPUZhbHNlO1Bvb2xpbmc9dHJ1ZTtNaW4gUG9vbCBTaXplPTEwO01heCBQb29sIFNpemU9NTA7Q29ubmVjdCBUaW1lb3V0PTUwMA=="/>--> </connectionStrings> <appSettings> <!--<add key="WebApiUrl" value="http://localhost:5263/" />--> <add key="WebApiUrl" value="http://localhost:5263/" /> <!--<add key="WebApiUrl" value="http://192.168.1.145:8081/" />--> <add key="WebApiUrl" value="http://192.168.1.145:81/" /> <!--<add key="WebApiUrl" value="http://192.168.1.145:81/" />--> <add key="LogPath" value="logs" /> <add key="ProductName" value="G-MES V2.0" /> <add key="PageSize" value="50" /> @@ -47,6 +53,13 @@ <add key="ToastSeconds" value="5" /><!--æç¤ºæ¡æ¶é´--> <add key="AsyncSeconds" value="2" /><!--æ°´æ£è¶ æ¶æ¶é´--> <add key="IsWater" value="0" /><!--æ¯å¦è¦æ°´æ£åå·¥ä½ç --> <!--<add key="ExecutionTime" value="5" />--> <add key="TimingMailInterval" value="10000" /> <add key="thisText" value="[æ°ç»ç§°éæå¡]" /> <!--<add key="notifyText" value="5" />--> <add key="ClientSettingsProvider.ServiceUri" value="" /> </appSettings> <userSettings> <Gs.DevApp.Properties.Settings> DevApp/Gs.DevApp/DevFrm/Work/Frm_Work01.cs
@@ -347,7 +347,8 @@ string _msg = _rtn.rtnMsg; if (!string.IsNullOrEmpty(_msg)) { Toast vm = new Toast((goodTag == "â" ? 1 : -1), _msg); // Toast vm = new Toast((goodTag == "â" ? 1 : -1), _msg); 2025-08-20 ä¿®æ¹æç¤ºå¤è§ Toast vm = new Toast(1, _rtn.rtnMsg); vm.Show(); } } DevApp/Gs.DevApp/Gs.DevApp.csproj
@@ -127,6 +127,9 @@ <Reference Include="NModbus, Version=3.0.81.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\NModbus.3.0.81\lib\net46\NModbus.dll</HintPath> </Reference> <Reference Include="NModbus.Serial, Version=3.0.81.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\NModbus.Serial.3.0.81\lib\net46\NModbus.Serial.dll</HintPath> </Reference> <Reference Include="PresentationCore" /> <Reference Include="PresentationFramework" /> <Reference Include="System" /> @@ -1116,11 +1119,19 @@ <Compile Include="DevFrm\WW\showWwZhongTai.Designer.cs"> <DependentUpon>showWwZhongTai.cs</DependentUpon> </Compile> <Compile Include="test\LoggerHelper.cs" /> <Compile Include="Properties\Resources.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> <DependentUpon>Resources.resx</DependentUpon> </Compile> <Compile Include="test\SQLHelper.cs" /> <Compile Include="test\MainForm.cs"> <SubType>Form</SubType> </Compile> <Compile Include="test\MainForm.Designer.cs"> <DependentUpon>MainForm.cs</DependentUpon> </Compile> <Compile Include="UserControl\SelectCk.cs"> <SubType>Form</SubType> </Compile> DevApp/Gs.DevApp/Program.cs
@@ -41,7 +41,7 @@ /// </summary> private static void _startLogin() { //Application.Run(new XtraForm1()); //Application.Run(new Gs.DevApp.test.MainForm()); //return; CefSettings settings = new CefSettings(); settings.Locale = "zh-CN"; DevApp/Gs.DevApp/XtraForm2.Designer.cs
@@ -28,34 +28,84 @@ /// </summary> private void InitializeComponent() { this.labelControl1 = new DevExpress.XtraEditors.LabelControl(); this.cmbSerialPortNum = new DevExpress.XtraEditors.ImageComboBoxEdit(); this.simpleButton1 = new DevExpress.XtraEditors.SimpleButton(); this.cmbBaudRate = new DevExpress.XtraEditors.ImageComboBoxEdit(); this.simpleButton2 = new DevExpress.XtraEditors.SimpleButton(); this.simpleButton3 = new DevExpress.XtraEditors.SimpleButton(); ((System.ComponentModel.ISupportInitialize)(this.cmbSerialPortNum.Properties)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.cmbBaudRate.Properties)).BeginInit(); this.SuspendLayout(); // // labelControl1 // cmbSerialPortNum // this.labelControl1.Appearance.Font = new System.Drawing.Font("Tahoma", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.labelControl1.Appearance.Options.UseFont = true; this.labelControl1.Location = new System.Drawing.Point(144, 46); this.labelControl1.Name = "labelControl1"; this.labelControl1.Size = new System.Drawing.Size(102, 18); this.labelControl1.TabIndex = 0; this.labelControl1.Text = "labelControl1"; this.cmbSerialPortNum.Location = new System.Drawing.Point(32, 24); this.cmbSerialPortNum.Name = "cmbSerialPortNum"; this.cmbSerialPortNum.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}); this.cmbSerialPortNum.Size = new System.Drawing.Size(125, 24); this.cmbSerialPortNum.TabIndex = 0; // // simpleButton1 // this.simpleButton1.Location = new System.Drawing.Point(399, 13); this.simpleButton1.Name = "simpleButton1"; this.simpleButton1.Size = new System.Drawing.Size(94, 29); this.simpleButton1.TabIndex = 1; this.simpleButton1.Text = "å æå¼"; this.simpleButton1.Click += new System.EventHandler(this.simpleButton1_Click); // // cmbBaudRate // this.cmbBaudRate.Location = new System.Drawing.Point(32, 83); this.cmbBaudRate.Name = "cmbBaudRate"; this.cmbBaudRate.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] { new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)}); this.cmbBaudRate.Size = new System.Drawing.Size(125, 24); this.cmbBaudRate.TabIndex = 2; // // simpleButton2 // this.simpleButton2.Location = new System.Drawing.Point(399, 78); this.simpleButton2.Name = "simpleButton2"; this.simpleButton2.Size = new System.Drawing.Size(94, 29); this.simpleButton2.TabIndex = 3; this.simpleButton2.Text = "getWeight"; this.simpleButton2.Click += new System.EventHandler(this.simpleButton2_Click); // // simpleButton3 // this.simpleButton3.Location = new System.Drawing.Point(399, 153); this.simpleButton3.Name = "simpleButton3"; this.simpleButton3.Size = new System.Drawing.Size(94, 29); this.simpleButton3.TabIndex = 4; this.simpleButton3.Text = "simpleButton3"; this.simpleButton3.Click += new System.EventHandler(this.simpleButton3_Click); // // XtraForm2 // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(613, 369); this.Controls.Add(this.labelControl1); this.Controls.Add(this.simpleButton3); this.Controls.Add(this.simpleButton2); this.Controls.Add(this.cmbBaudRate); this.Controls.Add(this.simpleButton1); this.Controls.Add(this.cmbSerialPortNum); this.Name = "XtraForm2"; this.Text = "XtraForm2"; this.Text = "æµè¯ç§°é"; ((System.ComponentModel.ISupportInitialize)(this.cmbSerialPortNum.Properties)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.cmbBaudRate.Properties)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion private DevExpress.XtraEditors.LabelControl labelControl1; private DevExpress.XtraEditors.ImageComboBoxEdit cmbSerialPortNum; private DevExpress.XtraEditors.SimpleButton simpleButton1; private DevExpress.XtraEditors.ImageComboBoxEdit cmbBaudRate; private DevExpress.XtraEditors.SimpleButton simpleButton2; private DevExpress.XtraEditors.SimpleButton simpleButton3; } } DevApp/Gs.DevApp/XtraForm2.cs
@@ -1,21 +1,291 @@ using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Base; using DevExpress.XtraGrid.Views.Grid; using DevExpress.XtraWaitForm; using Gs.DevApp.ToolBox; using Microsoft.Win32; using NModbus; using NModbus.Device; using NModbus.Serial; using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Drawing; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static DevExpress.Data.Filtering.Helpers.SubExprHelper.ThreadHoppingFiltering; using DateTime = System.DateTime; namespace Gs.DevApp { public partial class XtraForm2 : DevExpress.XtraEditors.XtraForm { public delegate void HandleInterfaceUpdataDelegate(string text); public SerialPort Sp = new SerialPort(); private XtraForm2.HandleInterfaceUpdataDelegate interfaceUpdataHandle; public XtraForm2() { InitializeComponent(); this.cmbBaudRate.EditValue = (object)"9600"; this.GetComList(); } private void GetComList() { this.cmbSerialPortNum.Properties.Items.Clear(); this.cmbBaudRate.Properties.Items.AddRange(new ImageComboBoxItem[5] { new ImageComboBoxItem("14400", (object) "14400", -1), new ImageComboBoxItem("9600", (object) "9600", -1), new ImageComboBoxItem("4800", (object) "4800", -1), new ImageComboBoxItem("2400", (object) "2400", -1), new ImageComboBoxItem("1200", (object) "1200", -1) }); RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm"); if (registryKey == null) return; foreach (string valueName in registryKey.GetValueNames()) { string description = (string)registryKey.GetValue(valueName); this.cmbSerialPortNum.Properties.Items.Add(new ImageComboBoxItem(description, (object)description)); } if (this.cmbSerialPortNum.Properties.Items.Count > 0) this.cmbSerialPortNum.SelectedIndex = 0; } public void GetWeight() { ModbusFactory factory = new ModbusFactory(); LogHelper.Debug(this.ToString(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":å建modbus对象..."); IModbusMaster rtuMaster = (IModbusMaster)factory.CreateRtuMaster(this.Sp); bool flag = true; while (true) { try { if (!this.Sp.IsOpen) { LogHelper.Debug(this.ToString(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":éæ°æå¼ä¸²å£è¿æ¥..."); this.Sp.Open(); rtuMaster = (IModbusMaster)factory.CreateRtuMaster(this.Sp); } if (rtuMaster == null) { LogHelper.Debug(this.ToString(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":éæ°å建modbus对象..."); rtuMaster = (IModbusMaster)factory.CreateRtuMaster(this.Sp); } // DataTable dataTable = this._sqlHelper.ExecuteDataTable("\r\nselect top 1 * from WOMZLA(nolock) \r\nwhere ZLA004=convert(varchar(10),getdate(),120) and ZLA003='IQC' and ZLA008='N'\r\norder by ZLA005"); //if (dataTable != null && dataTable.Rows.Count > 0) //{ // // LoggerHelper.WriteInfoLog($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:åéä¸ä¸éæ°æ®ï¼{dataTable.Rows[0]["ZLA006"]}|{dataTable.Rows[0]["ZLA007"]}"); // byte slaveAddress1 = byte.Parse("1"); // ushort startAddress1 = ushort.Parse("0104"); // ushort[] ushort2_1 = this.stringToUshort2(dataTable.Rows[0]["ZLA006"].ToString()); // rtuMaster.WriteMultipleRegisters(slaveAddress1, startAddress1, ushort2_1); // byte slaveAddress2 = byte.Parse("1"); // ushort startAddress2 = ushort.Parse("0102"); // ushort[] ushort2_2 = this.stringToUshort2(dataTable.Rows[0]["ZLA007"].ToString()); // rtuMaster.WriteMultipleRegisters(slaveAddress2, startAddress2, ushort2_2); // this._sqlHelper.ExecuteNonQuery($"update WOMZLA set ZLA008='Y',ZLA009=convert(varchar(20),getdate(),120) where ZLA001='{dataTable.Rows[0]["ZLA001"]}'"); //} //else { byte slaveAddress3 = byte.Parse("1"); ushort startAddress3 = ushort.Parse("0002"); ushort numberOfPoints1 = ushort.Parse("2"); ushort[] numArray = rtuMaster.ReadHoldingRegisters(slaveAddress3, startAddress3, numberOfPoints1); float single = BitConverter.ToSingle(this.CombomBinaryArray(BitConverter.GetBytes(numArray[1]), BitConverter.GetBytes(numArray[0])), 0); this.Invoke((Delegate)this.interfaceUpdataHandle, (object)single.ToString()); byte slaveAddress4 = byte.Parse("1"); ushort startAddress4 = ushort.Parse("0001"); ushort numberOfPoints2 = ushort.Parse("1"); int int32 = Convert.ToInt32(rtuMaster.ReadHoldingRegisters(slaveAddress4, startAddress4, numberOfPoints2)[0].ToString()); string str = Convert.ToString(int32, 2).PadLeft(16 /*0x10*/, '0'); char ch1 = str[1]; char ch2 = str[6]; if (ch1 == '0' && ch2 == '0') { // this._sqlHelper.ExecuteNonQuery($"\r\nif not exists(select 1 from WOMZLB(nolock) where ZLB001='IQC' and ZLB002='{single.ToString()}' and ZLB003='{int32.ToString()}')\r\nbegin\r\n if exists(select 1 from WOMZLB(nolock) where ZLB001='IQC')\r\n begin\r\n\t update WOMZLB set ZLB002='{single.ToString()}',ZLB003='{int32.ToString()}' where ZLB001='IQC'\r\n end\r\n else\r\n begin\r\n\t insert into WOMZLB(ZLB001,ZLB002,ZLB003)\r\n\t select 'IQC','{single.ToString()}','{int32.ToString()}'\r\n end\r\nend\r\n"); flag = true; } else if (flag) { // this._sqlHelper.ExecuteNonQuery($"\r\nif not exists(select 1 from WOMZLB(nolock) where ZLB001='IQC' and ZLB002='{single.ToString()}' and ZLB003='{int32.ToString()}')\r\nbegin\r\n if exists(select 1 from WOMZLB(nolock) where ZLB001='IQC')\r\n begin\r\n\t update WOMZLB set ZLB002='0',ZLB003='{int32.ToString()}' where ZLB001='IQC'\r\n end\r\n else\r\n begin\r\n\t insert into WOMZLB(ZLB001,ZLB002,ZLB003)\r\n\t select 'IQC','0','{int32.ToString()}'\r\n end\r\nend\r\n"); flag = false; } MessageBox.Show(single.ToString() + ":" + int32.ToString()); LogHelper.Debug(this.ToString(), "single:" + single.ToString()); LogHelper.Debug(this.ToString(), "int32:" + int32.ToString()); } // Thread.Sleep(2000); } catch (Exception ex) { // Thread.Sleep(2000); MessageBox.Show(ex.Message); LogHelper.Debug(this.ToString(), "single:" + ex.Message); } } } private byte[] CombomBinaryArray(byte[] srcArray1, byte[] srcArray2) { byte[] destinationArray = new byte[srcArray1.Length + srcArray2.Length]; Array.Copy((Array)srcArray1, 0, (Array)destinationArray, 0, srcArray1.Length); Array.Copy((Array)srcArray2, 0, (Array)destinationArray, srcArray1.Length, srcArray2.Length); return destinationArray; } private void simpleButton1_Click(object sender, EventArgs e) { try { DateTime now = DateTime.Now; // LoggerHelper.WriteInfoLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":å¼å§éé"); if (this.cmbBaudRate.Text.Trim() != "" && this.cmbSerialPortNum.Text != "") { now = DateTime.Now; // LoggerHelper.WriteInfoLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":é 置串å£éä¿¡"); // this.interfaceUpdataHandle = new MainForm.HandleInterfaceUpdataDelegate(this.UpdateTextBox); this.Sp.PortName = this.cmbSerialPortNum.Text.Trim(); this.Sp.BaudRate = Convert.ToInt32(this.cmbBaudRate.Text.Trim()); this.Sp.Parity = Parity.None; this.Sp.StopBits = StopBits.One; now = DateTime.Now; // LoggerHelper.WriteInfoLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":æå¼ä¸²å£åéä¿¡"); this.Sp.Open(); MessageBox.Show("æå¼æåSp:" + Sp.IsOpen.ToString()); //this.button1.Enabled = false; //this.button2.Enabled = true; //this.timer1.Enabled = false; //now = DateTime.Now; //LoggerHelper.WriteInfoLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":å¯å¨å·æ°æ°æ®å®æ¶å¨"); //this.timer1.Start(); } else { now = DateTime.Now; // LoggerHelper.WriteErrorLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":请è¾å ¥æ£ç¡®ç端å£å·åæ³¢ç¹ç"); int num = (int)MessageBox.Show("请è¾å ¥æ£ç¡®ç端å£å·åæ³¢ç¹çï¼"); this.cmbSerialPortNum.Focus(); } } catch (Exception ex) { // LoggerHelper.WriteErrorLog($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:{ex.Message}"); int num = (int)MessageBox.Show($"端å£{this.cmbSerialPortNum.Text.Trim()}æå¼å¤±è´¥ï¼{ex.Message}"); } } private void simpleButton2_Click(object sender, EventArgs e) { GetWeight(); } public void ReadWeight222() { ModbusFactory factory = new ModbusFactory(); try { // 1. é 置串å£åæ°ï¼éä¸çµå秤ä¸è´ï¼ string portName = "COM1"; // 串å£å· int baudRate = 9600; // æ³¢ç¹ç Parity parity = Parity.None; // æ ¡éªä½ int dataBits = 8; // æ°æ®ä½ StopBits stopBits = StopBits.One; // åæ¢ä½ // 2. å建串å£è¿æ¥ SerialPort serialPort = new SerialPort(portName, baudRate, parity, dataBits, stopBits); serialPort.Open(); // 3. å建Modbus RTUä¸»ç« IModbusMaster master = (IModbusMaster)factory.CreateRtuMaster(serialPort); // 4. é 置读ååæ° //byte slaveId = 1; // ä»ç«å°åï¼çµå秤çModbuså°åï¼ //ushort startAddress = 0; // å¯åå¨èµ·å§å°åï¼40001对åºå°å0ï¼ //ushort numRegisters = 2; // 读å2个å¯åå¨ï¼32使°æ®ï¼ byte slaveAddress3 = byte.Parse("1"); ushort startAddress3 = ushort.Parse("0"); ushort numberOfPoints1 = ushort.Parse("2"); // 5. 读åä¿æå¯åå¨ ushort[] registers = master.ReadHoldingRegisters(slaveAddress3, startAddress3, numberOfPoints1); // 6. å¤çè¿åæ°æ®ï¼åè®¾æ°æ®ä¸º32使µ®ç¹æ°ï¼å¤§ç«¯æ ¼å¼ï¼ byte[] bytes = new byte[4]; Buffer.BlockCopy(registers, 0, bytes, 0, 4); // å¤çåèåºï¼æ ¹æ®è®¾å¤è¦æ±å¯è½éè¦è°æ´ï¼ if (BitConverter.IsLittleEndian) { Array.Reverse(bytes); // å¦æè®¾å¤æ¯å¤§ç«¯æ¨¡å¼ï¼éè¦å转åè } // 转æ¢ä¸ºæµ®ç¹æ° float weight = BitConverter.ToSingle(bytes, 0); MessageBox.Show(weight.ToString()); } catch (Exception ex) { Console.WriteLine($"读å失败: {ex.Message}"); MessageBox.Show("err:" + ex.Message.ToString()); } } private void simpleButton3_Click(object sender, EventArgs e) { ModbusFactory factory = new ModbusFactory(); // 1. é 置串å£åæ° SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); serialPort.Open(); // æé èªå®ä¹åè½ç 请æ±å¸§ï¼ç¤ºä¾ï¼åè½ç 0x31ï¼ byte[] request = new byte[] { 0x01, 0x31, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00 }; serialPort.Write(request, 0, request.Length); // 读åååº byte[] buffer = new byte[256]; int bytesRead = serialPort.Read(buffer, 0, buffer.Length); MessageBox.Show($"ååºæ°æ®: {BitConverter.ToString(buffer, 0, bytesRead)}"); //serialPort.Close(); // 2. å建Modbus RTUä¸»ç« IModbusMaster modbusMaster = (IModbusMaster)factory.CreateRtuMaster(serialPort); try { while (true) { // 3. 读åä¿æå¯åå¨ï¼ä»ç«å°å1ï¼èµ·å§å°å0x0001ï¼è¯»å2个å¯åå¨ï¼ ushort[] registers = modbusMaster.ReadHoldingRegisters(1, 0x0001, 2); MessageBox.Show("d"); // 4. è§£ææ°æ®ï¼å设å¯åå¨åå¨çæ¯ééå¼ï¼åä½ä¸ºå ï¼ int weight = (registers[0] << 16) + registers[1]; Console.WriteLine($"ééå¼: {weight} g"); MessageBox.Show($"ééå¼: {weight} g"); System.Threading.Thread.Sleep(1000); // æ¯ç§è¯»å䏿¬¡ } } catch (Exception ex) { MessageBox.Show(ex.Message); Console.WriteLine($"é误: {ex.Message}"); } finally { serialPort.Close(); } } } } DevApp/Gs.DevApp/packages.config
@@ -9,6 +9,7 @@ <package id="Microsoft.Web.WebView2" version="1.0.2592.51" targetFramework="net48" /> <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" /> <package id="NModbus" version="3.0.81" targetFramework="net48" /> <package id="NModbus.Serial" version="3.0.81" targetFramework="net48" /> <package id="System.Buffers" version="4.5.1" targetFramework="net48" /> <package id="System.Configuration.ConfigurationManager" version="8.0.0" targetFramework="net48" /> <package id="System.Diagnostics.DiagnosticSource" version="6.0.1" targetFramework="net48" /> DevApp/Gs.DevApp/test/LoggerHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,52 @@ // Decompiled with JetBrains decompiler // Type: ChengZhongModbus.LoggerHelper // Assembly: ChengZhongModbusIQC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: 335383E6-9854-4BCE-8CD7-BF94F8E1A377 // Assembly location: C:\Users\Administrator\Desktop\ChengZhongModbusIQC\ChengZhongModbusIQC.exe using DevExpress.Xpo.Logger; using System; using System.Configuration; using System.IO; public class LoggerHelper { //å建æ¥å¿ç®å½ private static readonly string path = AppContext.BaseDirectory + ConfigurationManager.AppSettings[ "LogPath"]; /** * å®é çåæ¥å¿æä½ * @param type æ¥å¿è®°å½ç±»å * @param className ç±»å * @param content åå ¥å 容 */ protected static void WriteLog(string type, string className, string content) { if (!Directory.Exists(path)) //妿æ¥å¿ç®å½ä¸åå¨å°±å建 Directory.CreateDirectory(path); var time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); //è·åå½åç³»ç»æ¶é´ var filename = path + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".log"; //ç¨æ¥æå¯¹æ¥å¿æä»¶å½å //å建ææå¼æ¥å¿æä»¶ï¼åæ¥å¿æä»¶æ«å°¾è¿½å è®°å½ var mySw = File.AppendText(filename); //åæ¥å¿æä»¶åå ¥å 容 var write_content = time + " " + type + " " + className + ": " + content; mySw.WriteLine(write_content); //å ³éæ¥å¿æä»¶ mySw.Close(); } public static void WriteInfoLog(string info) { WriteLog("DEBUG", "", info); } public static void WriteErrorLog(string info) { WriteLog("DEBUG", "", info); } } DevApp/Gs.DevApp/test/MainForm.Designer.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ namespace Gs.DevApp.test { partial class MainForm { ///// <summary> ///// Required designer variable. ///// </summary> //private System.ComponentModel.IContainer components = null; ///// <summary> ///// Clean up any resources being used. ///// </summary> ///// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> //protected override void Dispose(bool disposing) //{ // if (disposing && (components != null)) // { // components.Dispose(); // } // base.Dispose(disposing); //} //#region Windows Form Designer generated code ///// <summary> ///// Required method for Designer support - do not modify ///// the contents of this method with the code editor. ///// </summary> //private void InitializeComponent() //{ // this.components = new System.ComponentModel.Container(); // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; // this.Text = "MainForm"; //} // #endregion } } DevApp/Gs.DevApp/test/MainForm.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,709 @@ using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Base; using DevExpress.XtraGrid.Views.Grid; using Microsoft.Win32; using NModbus; using NModbus.Serial; using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using System.Drawing; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace Gs.DevApp.test { public partial class MainForm : DevExpress.XtraEditors.XtraForm { private SQLHelper _sqlHelper; public SerialPort Sp = new SerialPort(); private MainForm.HandleInterfaceUpdataDelegate interfaceUpdataHandle; private string strLine = ""; private string sqlWOMQAB = ""; private Dictionary<string, Thread> dicThread = new Dictionary<string, Thread>(); private StringBuilder sb = new StringBuilder(); private IContainer components = (IContainer)null; private SplitContainerControl splitContainerControl1; private ImageComboBoxEdit cmbBaudRate; private LabelControl labelControl1; private TextEdit txtNum; private LabelControl labelControl3; private SimpleButton button2; private SimpleButton button1; private SimpleButton btnRefashC; private ImageComboBoxEdit cmbSerialPortNum; private LabelControl labelControl2; private GridControl gridWOMQAB; private GridView viewWOMQAB; private GridColumn colQAB001; private GridColumn colQAB002; private GridColumn colQAB003; private GridColumn colQAB005; private GridColumn colQAB006; private GridColumn colQAB007; private GridColumn colQAB009; private GridColumn colQAB010; private GridColumn colMIH004; private GridColumn colPAA002; private GridColumn colQAB015; private GridColumn colQAB025; private GridColumn colMCA022; private GridColumn colZT; private GridColumn colMCA023; private NotifyIcon notifyIcon1; private ContextMenuStrip contextMenuStrip1; private System.Windows.Forms.Timer timer1; private ToolStripMenuItem showInTaskbar; private ToolStripMenuItem exitWindow; public MainForm() { this.InitializeComponent(); this.timer1.Tick += new EventHandler(this.timer1_Tick); this.notifyIcon1.DoubleClick += new EventHandler(this.notifyIcon1_DoubleClick); this.SizeChanged += new EventHandler(this.frmMain_SizeChanged); this.contextMenuStrip1.ItemClicked += new ToolStripItemClickedEventHandler(this.contextMenuStrip1_ItemClicked); this.Initialize(); } private void Initialize() { try { this._sqlHelper = new SQLHelper(Encoding.Default.GetString(Convert.FromBase64String(ConfigurationManager.ConnectionStrings["conn"].ConnectionString))); int int32 = Convert.ToInt32(ConfigurationManager.AppSettings["TimingMailInterval"]); string appSetting = ConfigurationManager.AppSettings["thisText"]; this.Text = appSetting; this.notifyIcon1.Text = appSetting; this.timer1.Interval = int32; this.button1.Enabled = true; this.button2.Enabled = false; } catch (Exception ex) { int num = (int)MessageBox.Show(ex.Message); Application.Exit(); } } private void GetComList() { this.cmbSerialPortNum.Properties.Items.Clear(); RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm"); if (registryKey == null) return; foreach (string valueName in registryKey.GetValueNames()) { string description = (string)registryKey.GetValue(valueName); this.cmbSerialPortNum.Properties.Items.Add(new ImageComboBoxItem(description, (object)description)); } if (this.cmbSerialPortNum.Properties.Items.Count > 0) this.cmbSerialPortNum.SelectedIndex = 0; } public void RefreshData() { while (true) { try { Thread.Sleep(10000); } catch (Exception ex) { Thread.Sleep(10000); } } } public void GetWeight() { ModbusFactory factory = new ModbusFactory(); LoggerHelper.WriteInfoLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":å建modbus对象..."); IModbusMaster rtuMaster = (IModbusMaster)factory.CreateRtuMaster(this.Sp); bool flag = true; while (true) { LoggerHelper.WriteInfoLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":while..."); try { if (!this.Sp.IsOpen) { LoggerHelper.WriteInfoLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":éæ°æå¼ä¸²å£è¿æ¥..."); this.Sp.Open(); rtuMaster = (IModbusMaster)factory.CreateRtuMaster(this.Sp); } if (rtuMaster == null) { LoggerHelper.WriteInfoLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":éæ°å建modbus对象..."); rtuMaster = (IModbusMaster)factory.CreateRtuMaster(this.Sp); } DataTable dataTable = this._sqlHelper.ExecuteDataTable("\r\nselect top 1 * from WOMZLA(nolock) \r\nwhere ZLA004=convert(varchar(10),getdate(),120) and ZLA003='IQC' and ZLA008='N'\r\norder by ZLA005"); if (dataTable != null && dataTable.Rows.Count > 0) { LoggerHelper.WriteInfoLog($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:åéä¸ä¸éæ°æ®ï¼{dataTable.Rows[0]["ZLA006"]}|{dataTable.Rows[0]["ZLA007"]}"); byte slaveAddress1 = byte.Parse("1"); ushort startAddress1 = ushort.Parse("0104"); ushort[] ushort2_1 = this.stringToUshort2(dataTable.Rows[0]["ZLA006"].ToString()); rtuMaster.WriteMultipleRegisters(slaveAddress1, startAddress1, ushort2_1); byte slaveAddress2 = byte.Parse("1"); ushort startAddress2 = ushort.Parse("0102"); ushort[] ushort2_2 = this.stringToUshort2(dataTable.Rows[0]["ZLA007"].ToString()); rtuMaster.WriteMultipleRegisters(slaveAddress2, startAddress2, ushort2_2); this._sqlHelper.ExecuteNonQuery($"update WOMZLA set ZLA008='Y',ZLA009=convert(varchar(20),getdate(),120) where ZLA001='{dataTable.Rows[0]["ZLA001"]}'"); } else { LoggerHelper.WriteInfoLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":else..."); byte slaveAddress3 = byte.Parse("1"); ushort startAddress3 = ushort.Parse("0002"); ushort numberOfPoints1 = ushort.Parse("2"); ushort[] numArray = rtuMaster.ReadHoldingRegisters(slaveAddress3, startAddress3, numberOfPoints1); float single = BitConverter.ToSingle(this.CombomBinaryArray(BitConverter.GetBytes(numArray[1]), BitConverter.GetBytes(numArray[0])), 0); this.Invoke((Delegate)this.interfaceUpdataHandle, (object)single.ToString()); byte slaveAddress4 = byte.Parse("1"); ushort startAddress4 = ushort.Parse("0001"); ushort numberOfPoints2 = ushort.Parse("1"); int int32 = Convert.ToInt32(rtuMaster.ReadHoldingRegisters(slaveAddress4, startAddress4, numberOfPoints2)[0].ToString()); string str = Convert.ToString(int32, 2).PadLeft(16 /*0x10*/, '0'); char ch1 = str[1]; char ch2 = str[6]; if (ch1 == '0' && ch2 == '0') { this._sqlHelper.ExecuteNonQuery($"\r\nif not exists(select 1 from WOMZLB(nolock) where ZLB001='IQC' and ZLB002='{single.ToString()}' and ZLB003='{int32.ToString()}')\r\nbegin\r\n if exists(select 1 from WOMZLB(nolock) where ZLB001='IQC')\r\n begin\r\n\t update WOMZLB set ZLB002='{single.ToString()}',ZLB003='{int32.ToString()}' where ZLB001='IQC'\r\n end\r\n else\r\n begin\r\n\t insert into WOMZLB(ZLB001,ZLB002,ZLB003)\r\n\t select 'IQC','{single.ToString()}','{int32.ToString()}'\r\n end\r\nend\r\n"); flag = true; } else if (flag) { this._sqlHelper.ExecuteNonQuery($"\r\nif not exists(select 1 from WOMZLB(nolock) where ZLB001='IQC' and ZLB002='{single.ToString()}' and ZLB003='{int32.ToString()}')\r\nbegin\r\n if exists(select 1 from WOMZLB(nolock) where ZLB001='IQC')\r\n begin\r\n\t update WOMZLB set ZLB002='0',ZLB003='{int32.ToString()}' where ZLB001='IQC'\r\n end\r\n else\r\n begin\r\n\t insert into WOMZLB(ZLB001,ZLB002,ZLB003)\r\n\t select 'IQC','0','{int32.ToString()}'\r\n end\r\nend\r\n"); flag = false; } LoggerHelper.WriteInfoLog(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":lse:"+ single.ToString()); } Thread.Sleep(2000); } catch (Exception ex) { Thread.Sleep(2000); } } } private void UpdateTextBox(string text) { try { if (this.txtNum.Text == text) return; this.txtNum.Text = text; } catch (Exception ex) { LoggerHelper.WriteErrorLog($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:{ex.Message}"); int num = (int)MessageBox.Show(ex.Message); } } public ushort[] stringToUshort2(string inString) { byte[] bytes = BitConverter.GetBytes(float.Parse(inString)); ushort uint16 = BitConverter.ToUInt16(bytes, 0); return new ushort[2] { BitConverter.ToUInt16(bytes, 2), uint16 }; } private byte[] CombomBinaryArray(byte[] srcArray1, byte[] srcArray2) { byte[] destinationArray = new byte[srcArray1.Length + srcArray2.Length]; Array.Copy((Array)srcArray1, 0, (Array)destinationArray, 0, srcArray1.Length); Array.Copy((Array)srcArray2, 0, (Array)destinationArray, srcArray1.Length, srcArray2.Length); return destinationArray; } private void button1_Click(object sender, EventArgs e) { try { DateTime now = DateTime.Now; LoggerHelper.WriteInfoLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":å¼å§éé"); if (this.cmbBaudRate.Text.Trim() != "" && this.cmbSerialPortNum.Text != "") { now = DateTime.Now; LoggerHelper.WriteInfoLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":é 置串å£éä¿¡"); this.interfaceUpdataHandle = new MainForm.HandleInterfaceUpdataDelegate(this.UpdateTextBox); this.Sp.PortName = this.cmbSerialPortNum.Text.Trim(); this.Sp.BaudRate = Convert.ToInt32(this.cmbBaudRate.Text.Trim()); this.Sp.Parity = Parity.None; this.Sp.StopBits = StopBits.One; now = DateTime.Now; LoggerHelper.WriteInfoLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":æå¼ä¸²å£åéä¿¡"); this.Sp.Open(); this.button1.Enabled = false; this.button2.Enabled = true; this.timer1.Enabled = false; now = DateTime.Now; LoggerHelper.WriteInfoLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":å¯å¨å·æ°æ°æ®å®æ¶å¨"); this.timer1.Start(); } else { now = DateTime.Now; LoggerHelper.WriteErrorLog(now.ToString("yyyy-MM-dd HH:mm:ss") + ":请è¾å ¥æ£ç¡®ç端å£å·åæ³¢ç¹ç"); int num = (int)MessageBox.Show("请è¾å ¥æ£ç¡®ç端å£å·åæ³¢ç¹çï¼"); this.cmbSerialPortNum.Focus(); } } catch (Exception ex) { LoggerHelper.WriteErrorLog($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}:{ex.Message}"); int num = (int)MessageBox.Show($"端å£{this.cmbSerialPortNum.Text.Trim()}æå¼å¤±è´¥ï¼{ex.Message}"); } } private void button2_Click(object sender, EventArgs e) { try { if (this.dicThread.Keys.Contains<string>("RefreshData")) { Thread thread = this.dicThread["RefreshData"]; if (thread.IsAlive) thread.Abort(); this.dicThread.Remove("RefreshData"); } if (this.dicThread.Keys.Contains<string>("GetWeight")) { Thread thread = this.dicThread["GetWeight"]; if (thread.IsAlive) thread.Abort(); this.dicThread.Remove("GetWeight"); } this.button1.Enabled = true; this.button2.Enabled = false; this.timer1.Stop(); this.Sp.Close(); } catch (Exception ex) { int num = (int)MessageBox.Show(ex.Message); Application.Exit(); } } private void timer1_Tick(object sender, EventArgs e) { if (!this.dicThread.Keys.Contains<string>("RefreshData")) { Thread thread = new Thread(new ThreadStart(this.RefreshData)); thread.Start(); this.dicThread.Add("RefreshData", thread); } if (this.dicThread.Keys.Contains<string>("GetWeight")) return; Thread thread1 = new Thread(new ThreadStart(this.GetWeight)); thread1.Start(); this.dicThread.Add("GetWeight", thread1); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { try { if (this.dicThread.Keys.Contains<string>("RefreshData")) { Thread thread = this.dicThread["RefreshData"]; if (thread.IsAlive) thread.Abort(); this.dicThread.Remove("RefreshData"); } if (this.dicThread.Keys.Contains<string>("GetWeight")) { Thread thread = this.dicThread["GetWeight"]; if (thread.IsAlive) thread.Abort(); this.dicThread.Remove("GetWeight"); } this.timer1.Stop(); this.Sp.Close(); } catch (Exception ex) { int num = (int)MessageBox.Show(ex.Message); Application.Exit(); } } private void Form1_Load(object sender, EventArgs e) => this.GetComList(); private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem == this.showInTaskbar) { if (this.WindowState != FormWindowState.Minimized) return; this.WindowState = FormWindowState.Normal; this.Activate(); this.ShowInTaskbar = true; this.notifyIcon1.Visible = false; } else { if (e.ClickedItem != this.exitWindow) return; this.button2_Click((object)null, (EventArgs)null); Environment.Exit(0); } } private void frmMain_SizeChanged(object sender, EventArgs e) { if (this.WindowState != FormWindowState.Minimized) return; this.ShowInTaskbar = false; this.notifyIcon1.Visible = true; } private void notifyIcon1_DoubleClick(object sender, EventArgs e) { if (this.WindowState != FormWindowState.Minimized) return; this.WindowState = FormWindowState.Normal; this.Activate(); this.ShowInTaskbar = true; this.notifyIcon1.Visible = false; } protected override void Dispose(bool disposing) { if (disposing && this.components != null) this.components.Dispose(); base.Dispose(disposing); } private void InitializeComponent() { this.components = (IContainer)new System.ComponentModel.Container(); GridFormatRule gridFormatRule1 = new GridFormatRule(); FormatConditionRuleExpression conditionRuleExpression1 = new FormatConditionRuleExpression(); GridFormatRule gridFormatRule2 = new GridFormatRule(); FormatConditionRuleExpression conditionRuleExpression2 = new FormatConditionRuleExpression(); ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(MainForm)); this.colZT = new GridColumn(); this.splitContainerControl1 = new SplitContainerControl(); this.txtNum = new TextEdit(); this.labelControl3 = new LabelControl(); this.button2 = new SimpleButton(); this.button1 = new SimpleButton(); this.btnRefashC = new SimpleButton(); this.cmbSerialPortNum = new ImageComboBoxEdit(); this.labelControl2 = new LabelControl(); this.cmbBaudRate = new ImageComboBoxEdit(); this.labelControl1 = new LabelControl(); this.gridWOMQAB = new GridControl(); this.viewWOMQAB = new GridView(); this.colQAB001 = new GridColumn(); this.colQAB002 = new GridColumn(); this.colQAB003 = new GridColumn(); this.colQAB005 = new GridColumn(); this.colQAB006 = new GridColumn(); this.colQAB007 = new GridColumn(); this.colQAB009 = new GridColumn(); this.colQAB010 = new GridColumn(); this.colMIH004 = new GridColumn(); this.colPAA002 = new GridColumn(); this.colQAB015 = new GridColumn(); this.colQAB025 = new GridColumn(); this.colMCA022 = new GridColumn(); this.colMCA023 = new GridColumn(); this.notifyIcon1 = new NotifyIcon(this.components); this.contextMenuStrip1 = new ContextMenuStrip(this.components); this.showInTaskbar = new ToolStripMenuItem(); this.exitWindow = new ToolStripMenuItem(); this.timer1 = new System.Windows.Forms.Timer(this.components); this.splitContainerControl1.BeginInit(); this.splitContainerControl1.SuspendLayout(); this.txtNum.Properties.BeginInit(); this.cmbSerialPortNum.Properties.BeginInit(); this.cmbBaudRate.Properties.BeginInit(); this.gridWOMQAB.BeginInit(); this.viewWOMQAB.BeginInit(); this.contextMenuStrip1.SuspendLayout(); this.SuspendLayout(); this.colZT.Caption = "ç¶æ"; this.colZT.FieldName = "ZT"; this.colZT.Name = "colZT"; this.splitContainerControl1.Dock = DockStyle.Fill; this.splitContainerControl1.Horizontal = false; this.splitContainerControl1.Location = new Point(0, 0); this.splitContainerControl1.Margin = new Padding(4, 4, 4, 4); this.splitContainerControl1.Name = "splitContainerControl1"; this.splitContainerControl1.Panel1.Controls.Add((Control)this.txtNum); this.splitContainerControl1.Panel1.Controls.Add((Control)this.labelControl3); this.splitContainerControl1.Panel1.Controls.Add((Control)this.button2); this.splitContainerControl1.Panel1.Controls.Add((Control)this.button1); this.splitContainerControl1.Panel1.Controls.Add((Control)this.btnRefashC); this.splitContainerControl1.Panel1.Controls.Add((Control)this.cmbSerialPortNum); this.splitContainerControl1.Panel1.Controls.Add((Control)this.labelControl2); this.splitContainerControl1.Panel1.Controls.Add((Control)this.cmbBaudRate); this.splitContainerControl1.Panel1.Controls.Add((Control)this.labelControl1); this.splitContainerControl1.Panel1.Text = "Panel1"; this.splitContainerControl1.Panel2.Controls.Add((Control)this.gridWOMQAB); this.splitContainerControl1.Panel2.Text = "Panel2"; this.splitContainerControl1.Size = new Size(859, 391); this.splitContainerControl1.SplitterPosition = 139; this.splitContainerControl1.TabIndex = 0; this.splitContainerControl1.Text = "splitContainerControl1"; this.txtNum.Location = new Point(588, 19); this.txtNum.Margin = new Padding(4, 4, 4, 4); this.txtNum.Name = "txtNum"; this.txtNum.Properties.Appearance.Font = new Font("Tahoma", 24f, FontStyle.Regular, GraphicsUnit.Point, (byte)0); this.txtNum.Properties.Appearance.Options.UseFont = true; this.txtNum.Size = new Size(187, 54); this.txtNum.TabIndex = 8; this.labelControl3.Appearance.Font = new Font("Tahoma", 24f, FontStyle.Regular, GraphicsUnit.Point, (byte)0); this.labelControl3.Appearance.Options.UseFont = true; this.labelControl3.Location = new Point(468, 28); this.labelControl3.Margin = new Padding(4, 4, 4, 4); this.labelControl3.Name = "labelControl3"; this.labelControl3.Size = new Size(120, 48 /*0x30*/); this.labelControl3.TabIndex = 7; this.labelControl3.Text = "ééï¼"; this.button2.Location = new Point(315, 48 /*0x30*/); this.button2.Margin = new Padding(4, 4, 4, 4); this.button2.Name = "button2"; this.button2.Size = new Size(100, 29); this.button2.TabIndex = 6; this.button2.Text = "忢"; this.button2.Click += new EventHandler(this.button2_Click); this.button1.Location = new Point(315, 8); this.button1.Margin = new Padding(4, 4, 4, 4); this.button1.Name = "button1"; this.button1.Size = new Size(100, 29); this.button1.TabIndex = 5; this.button1.Text = "ç¡®å®"; this.button1.Click += new EventHandler(this.button1_Click); this.btnRefashC.Location = new Point(213, 48 /*0x30*/); this.btnRefashC.Margin = new Padding(4, 4, 4, 4); this.btnRefashC.Name = "btnRefashC"; this.btnRefashC.Size = new Size(33, 29); this.btnRefashC.TabIndex = 4; this.btnRefashC.Text = "R"; this.cmbSerialPortNum.Location = new Point(72, 49); this.cmbSerialPortNum.Margin = new Padding(4, 4, 4, 4); this.cmbSerialPortNum.Name = "cmbSerialPortNum"; this.cmbSerialPortNum.Properties.Buttons.AddRange(new EditorButton[1] { new EditorButton(ButtonPredefines.Combo) }); this.cmbSerialPortNum.Size = new Size(133, 24); this.cmbSerialPortNum.TabIndex = 3; this.labelControl2.Location = new Point(16 /*0x10*/, 52); this.labelControl2.Margin = new Padding(4, 4, 4, 4); this.labelControl2.Name = "labelControl2"; this.labelControl2.Size = new Size(45, 18); this.labelControl2.TabIndex = 2; this.labelControl2.Text = "串å£å·"; this.cmbBaudRate.EditValue = (object)"9600"; this.cmbBaudRate.Location = new Point(72, 11); this.cmbBaudRate.Margin = new Padding(4, 4, 4, 4); this.cmbBaudRate.Name = "cmbBaudRate"; this.cmbBaudRate.Properties.Buttons.AddRange(new EditorButton[1] { new EditorButton(ButtonPredefines.Combo) }); this.cmbBaudRate.Properties.Items.AddRange(new ImageComboBoxItem[5] { new ImageComboBoxItem("14400", (object) "14400", -1), new ImageComboBoxItem("9600", (object) "9600", -1), new ImageComboBoxItem("4800", (object) "4800", -1), new ImageComboBoxItem("2400", (object) "2400", -1), new ImageComboBoxItem("1200", (object) "1200", -1) }); this.cmbBaudRate.Size = new Size(175, 24); this.cmbBaudRate.TabIndex = 1; this.labelControl1.Location = new Point(16 /*0x10*/, 15); this.labelControl1.Margin = new Padding(4, 4, 4, 4); this.labelControl1.Name = "labelControl1"; this.labelControl1.Size = new Size(45, 18); this.labelControl1.TabIndex = 0; this.labelControl1.Text = "æ³¢ç¹ç"; this.gridWOMQAB.Dock = DockStyle.Fill; this.gridWOMQAB.EmbeddedNavigator.Margin = new Padding(4, 4, 4, 4); this.gridWOMQAB.Location = new Point(0, 0); this.gridWOMQAB.MainView = (BaseView)this.viewWOMQAB; this.gridWOMQAB.Margin = new Padding(4, 4, 4, 4); this.gridWOMQAB.Name = "gridWOMQAB"; this.gridWOMQAB.Size = new Size(859, 246); this.gridWOMQAB.TabIndex = 1; this.gridWOMQAB.ViewCollection.AddRange(new BaseView[1] { (BaseView) this.viewWOMQAB }); this.viewWOMQAB.Columns.AddRange(new GridColumn[15] { this.colQAB001, this.colQAB002, this.colQAB003, this.colQAB005, this.colQAB006, this.colQAB007, this.colQAB009, this.colQAB010, this.colMIH004, this.colPAA002, this.colQAB015, this.colQAB025, this.colMCA022, this.colZT, this.colMCA023 }); gridFormatRule1.ApplyToRow = true; gridFormatRule1.Column = this.colZT; gridFormatRule1.Name = "ZTRule1"; conditionRuleExpression1.Appearance.BackColor = System.Drawing.Color.Red; conditionRuleExpression1.Appearance.Options.UseBackColor = true; conditionRuleExpression1.Expression = "ZT='N'"; gridFormatRule1.Rule = (FormatConditionRuleBase)conditionRuleExpression1; gridFormatRule2.ApplyToRow = true; gridFormatRule2.Column = this.colZT; gridFormatRule2.Name = "ZTRule2"; conditionRuleExpression2.Appearance.BackColor = System.Drawing.Color.FromArgb(128 /*0x80*/, (int)byte.MaxValue, 128 /*0x80*/); conditionRuleExpression2.Appearance.Options.UseBackColor = true; conditionRuleExpression2.Expression = "ZT='Y'"; gridFormatRule2.Rule = (FormatConditionRuleBase)conditionRuleExpression2; this.viewWOMQAB.FormatRules.Add(gridFormatRule1); this.viewWOMQAB.FormatRules.Add(gridFormatRule2); this.viewWOMQAB.GridControl = this.gridWOMQAB; this.viewWOMQAB.Name = "viewWOMQAB"; this.viewWOMQAB.OptionsView.ColumnAutoWidth = false; this.viewWOMQAB.OptionsView.ShowGroupPanel = false; this.colQAB001.Caption = "ID"; this.colQAB001.FieldName = "QAB001"; this.colQAB001.Name = "colQAB001"; this.colQAB002.Caption = "æ¡ç "; this.colQAB002.FieldName = "QAB002"; this.colQAB002.MinWidth = 150; this.colQAB002.Name = "colQAB002"; this.colQAB002.Visible = true; this.colQAB002.VisibleIndex = 0; this.colQAB002.Width = 150; this.colQAB003.Caption = "å·¥å"; this.colQAB003.FieldName = "QAB003"; this.colQAB003.MinWidth = 100; this.colQAB003.Name = "colQAB003"; this.colQAB003.Visible = true; this.colQAB003.VisibleIndex = 1; this.colQAB003.Width = 100; this.colQAB005.Caption = "ç©æç¼ç "; this.colQAB005.FieldName = "QAB005"; this.colQAB005.MinWidth = 100; this.colQAB005.Name = "colQAB005"; this.colQAB005.Visible = true; this.colQAB005.VisibleIndex = 2; this.colQAB005.Width = 100; this.colQAB006.Caption = "ç©æåç§°"; this.colQAB006.FieldName = "QAB006"; this.colQAB006.Name = "colQAB006"; this.colQAB006.Visible = true; this.colQAB006.VisibleIndex = 3; this.colQAB007.Caption = "ç©æè§æ ¼"; this.colQAB007.FieldName = "QAB007"; this.colQAB007.MinWidth = 200; this.colQAB007.Name = "colQAB007"; this.colQAB007.Visible = true; this.colQAB007.VisibleIndex = 4; this.colQAB007.Width = 200; this.colQAB009.Caption = "å·¥åºç¼å·"; this.colQAB009.FieldName = "QAB009"; this.colQAB009.Name = "colQAB009"; this.colQAB009.Visible = true; this.colQAB009.VisibleIndex = 5; this.colQAB010.Caption = "å·¥åºåç§°"; this.colQAB010.FieldName = "QAB010"; this.colQAB010.Name = "colQAB010"; this.colQAB010.Visible = true; this.colQAB010.VisibleIndex = 6; this.colMIH004.Caption = "线å«"; this.colMIH004.FieldName = "MIH004"; this.colMIH004.Name = "colMIH004"; this.colMIH004.Visible = true; this.colMIH004.VisibleIndex = 7; this.colPAA002.Caption = "ä½ä¸äººå"; this.colPAA002.FieldName = "PAA002"; this.colPAA002.Name = "colPAA002"; this.colPAA002.Visible = true; this.colPAA002.VisibleIndex = 8; this.colQAB015.Caption = "ä½ä¸æ¶é´"; this.colQAB015.FieldName = "QAB015"; this.colQAB015.MinWidth = 150; this.colQAB015.Name = "colQAB015"; this.colQAB015.Visible = true; this.colQAB015.VisibleIndex = 9; this.colQAB015.Width = 150; this.colQAB025.Caption = "å®é éé"; this.colQAB025.FieldName = "QAB025"; this.colQAB025.Name = "colQAB025"; this.colQAB025.Visible = true; this.colQAB025.VisibleIndex = 10; this.colMCA022.Caption = "ééä¸é"; this.colMCA022.FieldName = "MCA022"; this.colMCA022.Name = "colMCA022"; this.colMCA022.Visible = true; this.colMCA022.VisibleIndex = 11; this.colMCA023.Caption = "ééä¸é"; this.colMCA023.FieldName = "MCA023"; this.colMCA023.Name = "colMCA023"; this.colMCA023.Visible = true; this.colMCA023.VisibleIndex = 12; this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1; // this.notifyIcon1.Icon = (Icon)componentResourceManager.GetObject("notifyIcon1.Icon"); this.notifyIcon1.Text = "æç æ°é³æ°æçµåæéå ¬å¸"; this.notifyIcon1.Visible = true; this.contextMenuStrip1.ImageScalingSize = new Size(20, 20); this.contextMenuStrip1.Items.AddRange(new ToolStripItem[2] { (ToolStripItem) this.showInTaskbar, (ToolStripItem) this.exitWindow }); this.contextMenuStrip1.Name = "contextMenuStrip1"; this.contextMenuStrip1.Size = new Size(109, 52); this.showInTaskbar.Name = "showInTaskbar"; this.showInTaskbar.Size = new Size(108, 24); this.showInTaskbar.Text = "æ¾ç¤º"; this.exitWindow.Name = "exitWindow"; this.exitWindow.Size = new Size(108, 24); this.exitWindow.Text = "éåº"; this.timer1.Interval = 10000; this.AutoScaleDimensions = new SizeF(8f, 15f); this.AutoScaleMode = AutoScaleMode.Font; this.ClientSize = new Size(859, 391); this.Controls.Add((Control)this.splitContainerControl1); this.Margin = new Padding(4, 4, 4, 4); this.Name = nameof(MainForm); this.Text = "ç§°éåæ°"; this.FormClosing += new FormClosingEventHandler(this.Form1_FormClosing); this.Load += new EventHandler(this.Form1_Load); this.splitContainerControl1.EndInit(); this.splitContainerControl1.ResumeLayout(false); this.txtNum.Properties.EndInit(); this.cmbSerialPortNum.Properties.EndInit(); this.cmbBaudRate.Properties.EndInit(); this.gridWOMQAB.EndInit(); this.viewWOMQAB.EndInit(); this.contextMenuStrip1.ResumeLayout(false); this.ResumeLayout(false); } public delegate void HandleInterfaceUpdataDelegate(string text); } } DevApp/Gs.DevApp/test/SQLHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,429 @@ // Decompiled with JetBrains decompiler // Type: ChengZhongModbus.SQLHelper // Assembly: ChengZhongModbusIQC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null // MVID: 335383E6-9854-4BCE-8CD7-BF94F8E1A377 // Assembly location: C:\Users\Administrator\Desktop\ChengZhongModbusIQC\ChengZhongModbusIQC.exe using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.Sql; using System.Data.SqlClient; public class SQLHelper : ICloneable, IDisposable { private SqlConnection _connection4Tran; private readonly string _connectionString; private SqlTransaction _transaction; private readonly Queue<SQLHelper.SqlTask> _transactionTaskList; public SQLHelper(string connectionString) { this._transactionTaskList = new Queue<SQLHelper.SqlTask>(); this._connectionString = connectionString; } public SQLHelper(string server, string userID, string password, string database) { this._transactionTaskList = new Queue<SQLHelper.SqlTask>(); if (database == string.Empty) this._connectionString = $"Data Source={server};User ID={userID};Password={password}"; else this._connectionString = $"Data Source={server};User ID={userID};Password={password};Initial Catalog={database}"; } public void BeginTransaction(IsolationLevel isolationLevel) { this._connection4Tran = this._transaction == null && this._connection4Tran == null ? new SqlConnection(this._connectionString) : throw new Exception("è¦å¼å§ä¸ä¸ªæ°çäºå¡ï¼è¯·å 宿å½åäºå¡!"); this._connection4Tran.Open(); this._transaction = this._connection4Tran.BeginTransaction(isolationLevel); this._transactionTaskList.Clear(); } public void CancelTransaction() { if (this._transaction != null) this._transaction.Dispose(); if (this._connection4Tran != null) this._connection4Tran.Close(); if (this._connection4Tran != null) this._connection4Tran.Dispose(); this._transaction = (SqlTransaction)null; this._connection4Tran = (SqlConnection)null; } public object Clone() => (object)new SQLHelper(this._connectionString); public void CommitTransaction() { try { if (this._transactionTaskList.Count > 0) { foreach (SQLHelper.SqlTask transactionTask in this._transactionTaskList) { using (SqlCommand sqlCommand = new SqlCommand(transactionTask.Text, this._connection4Tran)) { sqlCommand.CommandType = transactionTask.CommandType; if (transactionTask.Parameters != null) { foreach (SqlParameter parameter in transactionTask.Parameters) sqlCommand.Parameters.Add(parameter); } sqlCommand.Transaction = this._transaction; sqlCommand.ExecuteNonQuery(); } } } this._transaction.Commit(); } catch (Exception ex) { this._transaction.Rollback(); } finally { if (this._transaction != null) this._transaction.Dispose(); if (this._connection4Tran != null) this._connection4Tran.Close(); if (this._connection4Tran != null) this._connection4Tran.Dispose(); this._transaction = (SqlTransaction)null; this._connection4Tran = (SqlConnection)null; } } public DataSet ExecuteDataSet(string sql) { return this.ExecuteDataSet(sql, CommandType.Text, (SqlParameter[])null); } public DataSet ExecuteDataSet(string sql, CommandType commandType) { return this.ExecuteDataSet(sql, commandType, (SqlParameter[])null); } public DataSet ExecuteDataSet(string sql, CommandType commandType, SqlParameter[] parameters) { DataSet dataSet = new DataSet(Guid.NewGuid().ToString()); using (SqlConnection connection = new SqlConnection(this._connectionString)) { using (SqlCommand selectCommand = new SqlCommand(sql, connection)) { selectCommand.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) selectCommand.Parameters.Add(parameter); } new SqlDataAdapter(selectCommand).Fill(dataSet); } } return dataSet; } public DataTable ExecuteDataTable(string sql) { return this.ExecuteDataTable(sql, CommandType.Text, (SqlParameter[])null); } public DataTable ExecuteDataTable(string sql, CommandType commandType) { return this.ExecuteDataTable(sql, commandType, (SqlParameter[])null); } public DataTable ExecuteDataTable(string sql, CommandType commandType, SqlParameter[] parameters) { DataTable dataTable = new DataTable(Guid.NewGuid().ToString()); using (SqlConnection connection = new SqlConnection(this._connectionString)) { using (SqlCommand selectCommand = new SqlCommand(sql, connection)) { selectCommand.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) selectCommand.Parameters.Add(parameter); } new SqlDataAdapter(selectCommand).Fill(dataTable); } } return dataTable; } public int ExecuteNonQuery(string sql) { return this.ExecuteNonQuery(sql, CommandType.Text, (SqlParameter[])null); } public int ExecuteNonQuery(string sql, CommandType commandType) { return this.ExecuteNonQuery(sql, commandType, (SqlParameter[])null); } public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters) { return this.ExecuteNonQuery(sql, commandType, parameters, false); } public int ExecuteNonQuery( string sql, CommandType commandType, SqlParameter[] parameters, bool joinTransaction) { if (joinTransaction) { if (this._transaction == null || this._connection4Tran == null) throw new Exception("äºå¡æªåå§åï¼"); this._transactionTaskList.Enqueue(new SQLHelper.SqlTask(sql, commandType, parameters)); } int num; using (SqlConnection connection = new SqlConnection(this._connectionString)) { SqlCommand sqlCommand; using (sqlCommand = new SqlCommand(sql, connection)) { sqlCommand.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) sqlCommand.Parameters.Add(parameter); } connection.Open(); num = sqlCommand.ExecuteNonQuery(); } } return num; } public SqlDataReader ExecuteReader(string sql) { return this.ExecuteReader(sql, CommandType.Text, (SqlParameter[])null); } public SqlDataReader ExecuteReader(string sql, CommandType commandType) { return this.ExecuteReader(sql, commandType, (SqlParameter[])null); } public SqlDataReader ExecuteReader( string sql, CommandType commandType, SqlParameter[] parameters) { SqlConnection connection = new SqlConnection(this._connectionString); SqlCommand sqlCommand1 = new SqlCommand(sql, connection); sqlCommand1.CommandType = commandType; SqlCommand sqlCommand2 = sqlCommand1; if (parameters != null) { foreach (SqlParameter parameter in parameters) sqlCommand2.Parameters.Add(parameter); } connection.Open(); return sqlCommand2.ExecuteReader(CommandBehavior.CloseConnection); } public object ExecuteScalar(string sql) { return this.ExecuteScalar(sql, CommandType.Text, (SqlParameter[])null); } public object ExecuteScalar(string sql, CommandType commandType) { return this.ExecuteScalar(sql, commandType, (SqlParameter[])null); } public object ExecuteScalar(string sql, CommandType commandType, SqlParameter[] parameters) { object obj; using (SqlConnection connection = new SqlConnection(this._connectionString)) { using (SqlCommand sqlCommand = new SqlCommand(sql, connection)) { sqlCommand.CommandType = commandType; if (parameters != null) { foreach (SqlParameter parameter in parameters) sqlCommand.Parameters.Add(parameter); } connection.Open(); obj = sqlCommand.ExecuteScalar(); } } return obj; } public DataTable GetDatabases() { using (SqlConnection sqlConnection = new SqlConnection(this._connectionString)) { sqlConnection.Open(); return sqlConnection.GetSchema("Databases"); } } public static ArrayList GetServerList() { ArrayList serverList = new ArrayList(); foreach (DataRow row in (InternalDataCollectionBase)SqlDataSourceEnumerator.Instance.GetDataSources().Rows) serverList.Add((object)row[0].ToString()); return serverList; } public DataTable GetTables() { using (SqlConnection sqlConnection = new SqlConnection(this._connectionString)) { sqlConnection.Open(); return sqlConnection.GetSchema("Tables"); } } public bool SaveDataToDB(DataSet dataSet) { try { using (SqlConnection connection = new SqlConnection(this._connectionString)) { foreach (DataTable table in (InternalDataCollectionBase)dataSet.Tables) { using (SqlCommand selectCommand = new SqlCommand($"SELECT * FROM {table.TableName} WHERE 1<1", connection)) { SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(adapter); adapter.UpdateBatchSize = 100; if (table.GetChanges() != null) adapter.Update(table.GetChanges()); } } } } catch (Exception ex) { return false; } return true; } public bool SaveDataToDB(DataTable dataTable) { try { using (SqlConnection connection = new SqlConnection(this._connectionString)) { using (SqlCommand selectCommand = new SqlCommand("select top 0 * from " + dataTable.TableName, connection)) { SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(adapter); adapter.UpdateBatchSize = 100; if (dataTable.GetChanges() != null) adapter.Update(dataTable); } } } catch (Exception ex) { return false; } return true; } public bool SaveDataToDB(DataSet oldDataSet, DataSet newDataSet) { oldDataSet.Merge(newDataSet, false); using (SqlConnection connection = new SqlConnection(this._connectionString)) { connection.Open(); SqlTransaction transaction = connection.BeginTransaction(); try { foreach (DataTable table in (InternalDataCollectionBase)oldDataSet.Tables) { using (SqlCommand selectCommand = new SqlCommand($"SELECT * FROM {table.TableName} WHERE 1<1", connection, transaction)) { SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(adapter); adapter.UpdateBatchSize = 500; adapter.Update(table); } } transaction.Commit(); return true; } catch (Exception ex) { transaction.Rollback(); throw; } finally { transaction?.Dispose(); } } } public bool SaveDataToDB(DataTable oldDataTable, DataTable newDataTable) { oldDataTable.Merge(newDataTable, false); bool db; using (SqlConnection connection = new SqlConnection(this._connectionString)) { using (SqlCommand selectCommand = new SqlCommand($"SELECT * FROM {oldDataTable.TableName} WHERE 1<1", connection)) { SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(adapter); adapter.UpdateBatchSize = 100; adapter.Update(oldDataTable); db = true; } } return db; } public bool TestConnection() { bool flag; try { using (SqlConnection sqlConnection = new SqlConnection(this._connectionString)) { sqlConnection.Open(); sqlConnection.Close(); flag = true; } } catch (Exception ex) { flag = false; } return flag; } public void Dispose() { this._connection4Tran = (SqlConnection)null; this._transaction = (SqlTransaction)null; } private class SqlTask { public string Text { get; private set; } public CommandType CommandType { get; private set; } public SqlParameter[] Parameters { get; private set; } public SqlTask(string text, CommandType commandType, SqlParameter[] paras) { this.Text = text; this.CommandType = commandType; this.Parameters = paras; } } }