| | |
| | | using Newtonsoft.Json.Linq; |
| | | using DevExpress.XtraEditors; |
| | | using Newtonsoft.Json.Linq; |
| | | using NModbus; |
| | | using System; |
| | | using System.Data; |
| | | using System.Data.SqlClient; |
| | | using System.Data.SqlTypes; |
| | | using System.IO; |
| | | using System.Net.Sockets; |
| | | using System.Text; |
| | | using System.Windows.Forms; |
| | | |
| | | namespace Gs.DevApp |
| | | { |
| | | public partial class XtraForm1 : DevExpress.XtraEditors.XtraForm |
| | | { |
| | | string hostname = "192.168.60.51"; |
| | | private string strCsl1 = ""; |
| | | private string strSw1 = ""; |
| | | private string SJJG = ""; |
| | | private string GWZT = ""; |
| | | private string SJJGZ = ""; |
| | | public XtraForm1() |
| | | { |
| | | InitializeComponent(); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 是否第一次投入,0为第一次投入,1为维修过来要报废的2为已经报废过了的,3返工过来重投的4清尾工单的报废 |
| | | /// </summary> |
| | | private string flagFirst = "0"; //是否第一次投入 |
| | | |
| | | |
| | | private void simpleButton1_Click_1(object sender, EventArgs e) |
| | | { |
| | | AddDianJian(); |
| | | } |
| | | |
| | | //添加电检数据 |
| | | private string AddDianJian() |
| | | { |
| | | string TM = ""; |
| | | string JD = ""; |
| | | string JY = ""; |
| | | string JN = ""; |
| | | string XL = ""; |
| | | string GV = ""; |
| | | string JDV = ""; |
| | | string JYV = ""; |
| | | string JNV = ""; |
| | | string XLV = ""; |
| | | string GVV = ""; |
| | | //if (imaQAB009.EditValue.ToString() != VSLoginInfo.SystemParam["DianJianNo"].ToString()) |
| | | //{ |
| | | // return ""; |
| | | //} |
| | | //string sql = string.Format(@" select MIG006 from BASMIG(nolock) where MIG001='DianJianQuShu' and MIG003='{0}' and MIG005='Y'", txtDAA042.EditValue.ToString()); |
| | | //DataTable dt = manager.GetDataTable(sql, "tmpBASMIG"); |
| | | //if (dt == null || dt.Rows.Count <= 0) |
| | | //{ |
| | | // return ""; |
| | | //} |
| | | try |
| | | { |
| | | //FileStream fs = new FileStream(dt.Rows[0][0].ToString(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite); |
| | | //int fsLen = (int)fs.Length; |
| | | //byte[] heByte = new byte[fsLen]; |
| | | //fs.Read(heByte, 0, heByte.Length); |
| | | //string myStr = System.Text.Encoding.Default.GetString(heByte); |
| | | //fs.Close(); |
| | | string strPath = @"D:\uploadData.txt"; |
| | | string myStr = File.ReadAllText(strPath, Encoding.Default); |
| | | if (myStr == "") |
| | | { |
| | | return "NULL"; |
| | | } |
| | | File.WriteAllText(strPath, ""); |
| | | JArray dsTemp = JArray.Parse(myStr); |
| | | |
| | | foreach (var ss in dsTemp) //查找某个字段与值 |
| | | { |
| | | TM = (((JObject)ss)["TiaoMa"] == null) ? "" : ((JObject)ss)["TiaoMa"].ToString(); |
| | | JD = (((JObject)ss)["JieDi"] == null) ? "" : ((JObject)ss)["JieDi"]["state"].ToString(); |
| | | JY = (((JObject)ss)["JueYuan"] == null) ? "" : ((JObject)ss)["JueYuan"]["state"].ToString(); |
| | | JN = (((JObject)ss)["JiaoNai"] == null) ? "" : ((JObject)ss)["JiaoNai"]["state"].ToString(); |
| | | XL = (((JObject)ss)["XieLou"] == null) ? "" : ((JObject)ss)["XieLou"]["state"].ToString(); |
| | | GV = (((JObject)ss)["GongLv"] == null) ? "" : ((JObject)ss)["GongLv"]["state"].ToString(); |
| | | JDV = (((JObject)ss)["JieDi"] == null) ? "" : ((JObject)ss)["JieDi"]["value"].ToString().Replace(" ", ", "); |
| | | JYV = (((JObject)ss)["JueYuan"] == null) ? "" : ((JObject)ss)["JueYuan"]["value"].ToString().Replace(" ", ", "); |
| | | JNV = (((JObject)ss)["JiaoNai"] == null) ? "" : ((JObject)ss)["JiaoNai"]["value"].ToString().Replace(" ", ", "); |
| | | XLV = (((JObject)ss)["XieLou"] == null) ? "" : ((JObject)ss)["XieLou"]["value"].ToString().Replace(" ", ", "); |
| | | GVV = (((JObject)ss)["GongLv"] == null) ? "" : ((JObject)ss)["GongLv"]["value"].ToString().Replace(" ", ", "); |
| | | Gs.DevApp.ToolBox.LogHelper.Debug("TM", TM); |
| | | Gs.DevApp.ToolBox.LogHelper.Debug("JD", JD); |
| | | Gs.DevApp.ToolBox.LogHelper.Debug("JY", JY); |
| | | Gs.DevApp.ToolBox.LogHelper.Debug("XL", XL); |
| | | Gs.DevApp.ToolBox.LogHelper.Debug("XLV", XLV); |
| | | Gs.DevApp.ToolBox.LogHelper.Debug("GVV", GVV); |
| | | } |
| | | return "已采集"; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return "文件打开失败," + e.Message; |
| | | } |
| | | } |
| | | |
| | | private void simpleButton2_Click(object sender, EventArgs e) |
| | |
| | | try//水检取数,后面补充 |
| | | { |
| | | System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); |
| | | string hostname = "192.168.60.51"; |
| | | System.Text.StringBuilder sbFj = new System.Text.StringBuilder(); |
| | | string hx = "\r\n"; |
| | | |
| | | ModbusFactory modbusFactory = new ModbusFactory(); |
| | | IModbusMaster master = modbusFactory.CreateMaster(new TcpClient(hostname, 502)); |
| | | master.Transport.ReadTimeout = 10000; |
| | | master.Transport.Retries = 10000; |
| | | DataTable dt = new DataTable(); |
| | | |
| | | //参数(分别为从站地址,起始地址,长度) |
| | | byte slaveAddress = byte.Parse(1.ToString()); |
| | | ushort numberOfPoints = ushort.Parse("1"); |
| | | byte slaveAddress = byte.Parse(txt_slaveAddress.SelectedText.Trim()); |
| | | ushort numberOfPoints = ushort.Parse(txtGs.Text.Trim()); |
| | | |
| | | // 设置读取的起始地址和数量 |
| | | //ushort startAddress = 300; |
| | | //ushort numberOfPoints = 20; // 读取300-320共计21个寄存器的值 |
| | | |
| | | float fsw = 0; |
| | | DataTable dt1 = new DataTable(); |
| | | /* |
| | | slaveAddress: 从站设备的 Modbus 地址(通常为 1~247) |
| | | 起始寄存器地址 |
| | | numberOfPoints要读取的寄存器数量(连续读取) |
| | | 返回类型为 ushort[] 数组,slaveAddress 从机地址,也就是plc的设备id,startAddress 读取起始地址,numberOfPoints 这个是重点,这个参数决定每次读取的点号数量。写1的话表示每次读取一个点号。 |
| | | */ |
| | | //模式1出水量 |
| | | ushort[] csl1 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(32.ToString()), numberOfPoints); |
| | | strCsl1 = csl1[0].ToString(); |
| | | |
| | | sbFj.Append("模式1出水量:" + gets(csl1) + "-->" + strCsl1 + hx); |
| | | //模式1水温 |
| | | ushort[] sw1 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(31.ToString()), numberOfPoints); |
| | | strSw1 = (float.Parse(sw1[0].ToString()) / 10).ToString(); |
| | | |
| | | sbFj.Append("模式1水温:" + gets(sw1) + "-->" + strSw1 + hx); |
| | | //模式2出水量 |
| | | ushort[] csl2 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(34.ToString()), numberOfPoints); |
| | | strCsl2 = csl2[0].ToString(); |
| | | |
| | | sbFj.Append("模式2出水量:" + gets(csl2) + "-->" + strCsl2 + hx); |
| | | //模式2水温 |
| | | ushort[] sw2 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(33.ToString()), numberOfPoints); |
| | | strSw2 = (float.Parse(sw2[0].ToString()) / 10).ToString(); |
| | | |
| | | sbFj.Append("模式2水温:" + gets(sw2) + "-->" + strSw2 + hx); |
| | | //模式3出水量 |
| | | ushort[] csl3 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(36.ToString()), numberOfPoints); |
| | | strCsl3 = csl3[0].ToString(); |
| | | |
| | | sbFj.Append("模式2水温:" + gets(csl3) + "-->" + strCsl3 + hx); |
| | | //模式3水温 |
| | | ushort[] sw3 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(35.ToString()), numberOfPoints); |
| | | strSw3 = (float.Parse(sw3[0].ToString()) / 10).ToString(); |
| | | |
| | | sbFj.Append("模式3水温:" + gets(sw3) + "-->" + strSw3 + hx); |
| | | //模式4出水量 |
| | | ushort[] csl4 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(38.ToString()), numberOfPoints); |
| | | strCsl4 = csl4[0].ToString(); |
| | | |
| | | sbFj.Append("模式4出水量:" + gets(csl4) + "-->" + strCsl4 + hx); |
| | | //模式4水温 |
| | | ushort[] sw4 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(37.ToString()), numberOfPoints); |
| | | strSw4 = (float.Parse(sw4[0].ToString()) / 10).ToString(); |
| | | |
| | | sbFj.Append("模式4水温:" + gets(sw4) + "-->" + strSw4 + hx); |
| | | //模式5出水量 |
| | | ushort[] csl5 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(40.ToString()), numberOfPoints); |
| | | strCsl5 = csl5[0].ToString(); |
| | | |
| | | sbFj.Append("模式5出水量:" + gets(csl5) + "-->" + strCsl5 + hx); |
| | | //模式5水温 |
| | | ushort[] sw5 = master.ReadHoldingRegisters(slaveAddress, ushort.Parse(39.ToString()), numberOfPoints); |
| | | strSw5 = (float.Parse(sw5[0].ToString()) / 10).ToString(); |
| | | |
| | | sbFj.Append("模式5水温:" + gets(sw5) + "-->" + strSw5 + hx); |
| | | //结果 |
| | | bool[] sjjg = master.ReadCoils(slaveAddress, ushort.Parse(77.ToString()), numberOfPoints); |
| | | SJJG = sjjg[0].ToString(); |
| | | sbFj.Append("结果:" + gets(sjjg) + "-->" + SJJG + hx); |
| | | /////////////////// |
| | | /// |
| | | stringBuilder.Append(hx + "解析结果:" + hx); |
| | | stringBuilder.Append(sbFj); |
| | | richTextBox1.Text = stringBuilder.ToString(); |
| | | |
| | | // 3. 读取从站设备的寄存器 |
| | | ushort startAddress = 0; // 寄存器起始地址 |
| | | ushort numRegisters = 100; // 读取 10 个寄存器 |
| | | try |
| | | { |
| | | // 读取保持寄存器(从站地址为 1) |
| | | ushort[] registers = master.ReadHoldingRegisters(1, startAddress, numRegisters); |
| | | // 输出结果 |
| | | Console.WriteLine("读取到的寄存器值:"); |
| | | foreach (var register in registers) |
| | | { |
| | | Console.WriteLine(register); |
| | | stringBuilder.Append(register); |
| | | } |
| | | richTextBox1.Text = stringBuilder.ToString(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine($"读取错误: {ex.Message}"); |
| | | } |
| | | |
| | | // 3. 读取从站设备的寄存器short(无符号短整型)是一种数据类型,用于表示16位无符号整数,其取值范围从0到65,535 |
| | | //ushort startAddress = 0; // 寄存器起始地址 |
| | | //ushort numRegisters = ushort.Parse(txtGs.Text.Trim()); // 读取 10 个寄存器 |
| | | //try |
| | | //{ |
| | | // // 读取保持寄存器(从站地址为 1) |
| | | // // 参数(分别为从站地址,起始地址,长度) |
| | | // ushort[] registers = master.ReadHoldingRegisters(1, startAddress, numRegisters); |
| | | // // 输出结果 |
| | | // Console.WriteLine("读取到的寄存器值:"); |
| | | // stringBuilder.Append("总字节串:"); |
| | | // foreach (var register in registers) |
| | | // { |
| | | // Console.WriteLine(register); |
| | | // stringBuilder.Append(register); |
| | | // } |
| | | // stringBuilder.Append(hx + "解析结果:" + hx); |
| | | // stringBuilder.Append(sbFj); |
| | | // richTextBox1.Text = stringBuilder.ToString(); |
| | | //} |
| | | //catch (Exception ex) |
| | | //{ |
| | | // Console.WriteLine($"读取错误: {ex.Message}"); |
| | | //} |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | //txtGWM.EditValue = ""; |
| | | return; |
| | | } |
| | | |
| | | } |
| | | |
| | | private string gets(ushort[] registers) |
| | | { |
| | | System.Text.StringBuilder stringBuilder = new StringBuilder(); |
| | | foreach (var register in registers) |
| | | { |
| | | Console.WriteLine(register); |
| | | stringBuilder.Append(register); |
| | | } |
| | | return stringBuilder.ToString(); |
| | | } |
| | | |
| | | private string gets(bool[] registers) |
| | | { |
| | | System.Text.StringBuilder stringBuilder = new StringBuilder(); |
| | | foreach (var register in registers) |
| | | { |
| | | Console.WriteLine(register); |
| | | stringBuilder.Append(register); |
| | | } |
| | | return stringBuilder.ToString(); |
| | | } |
| | | |
| | | |
| | | private void simpleButton1_Click(object sender, EventArgs e) |
| | | { |
| | | System.Text.StringBuilder sbSql1 = new StringBuilder(); |
| | | sbSql1.Append($"select MIG004,MIG005 from BASMIG(nolock) where MIG001='ShuiJianZhanWei01' and MIG003='{((BaseEdit)this.txtGWM).EditValue.ToString()}'"); |
| | | DataTable dataTable1 = this.GetDataTable(sbSql1.ToString(), "tmpBASMIG2"); |
| | | if (dataTable1 == null || dataTable1.Rows.Count <= 0) |
| | | { |
| | | MessageBox.Show("该水检站位码不存在,请确认!"); |
| | | ((BaseEdit)this.txtGWM).EditValue = (object)""; |
| | | } |
| | | else |
| | | { |
| | | ModbusFactory modbusFactory = new ModbusFactory(); |
| | | byte num1 = byte.Parse("1"); |
| | | ushort num2 = ushort.Parse("1"); |
| | | System.Text.StringBuilder sbSql2 = new StringBuilder(); |
| | | sbSql2.Append(string.Format($"select case when MIG006='D' then MIG003+{dataTable1.Rows[0][0]} else MIG003+{dataTable1.Rows[0][1]} end MIG003,MIG004 from BASMIG(nolock) where MIG001 = 'ShuiJianAddress01' order by MIG005")); |
| | | DataTable dataTable2 = GetDataTable(sbSql2.ToString(), "tmpBASMIG3"); |
| | | if (dataTable2 == null || dataTable2.Rows.Count <= 0) |
| | | { |
| | | MessageBox.Show("水检地址不存在,请确认!"); |
| | | ((BaseEdit)this.txtGWM).EditValue = (object)""; |
| | | } |
| | | else |
| | | { |
| | | try |
| | | { |
| | | IModbusMaster master = modbusFactory.CreateMaster(new TcpClient(this.hostname, 502)); |
| | | master.Transport.ReadTimeout = 10000; |
| | | master.Transport.Retries = 10000; |
| | | this.strCsl1 = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[0]["MIG003"].ToString()), num2)[0].ToString(); |
| | | this.strSw1 = (float.Parse(master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[1]["MIG003"].ToString()), num2)[0].ToString()) / 10f).ToString(); |
| | | ushort[] numArray = master.ReadHoldingRegisters(num1, ushort.Parse(dataTable2.Rows[2]["MIG003"].ToString()), num2); |
| | | this.SJJGZ = ""; |
| | | this.SJJGZ = numArray[0].ToString(); |
| | | this.SJJG = numArray[0].ToString(); |
| | | this.SJJG = this.SJJG == "1" ? "OK" : (this.SJJG == "2" ? "NG" : this.SJJG); |
| | | this.GWZT = master.ReadCoils(num1, ushort.Parse(dataTable2.Rows[3]["MIG003"].ToString()), num2)[0].ToString(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show(ex.Message); |
| | | ((BaseEdit)this.txtGWM).EditValue = (object)""; |
| | | return; |
| | | } |
| | | try |
| | | { |
| | | // this.manager.ExecuteSQLReturnInt(string.Format($"insert into WOMSJA\r\n (SJA001,SJA002,SJA003,SJA004,SJA005,SJA006,SJA007,SJA008,SJA009,SJA010,SJA011) \r\n values(NewID(),'{((BaseEdit)this.txtQAB002).EditValue.ToString()}','{((BaseEdit)this.txtGWM).EditValue.ToString()}',\r\n'{this.strCsl1}','{this.strSw1}','{this.SJJG}','{VSLoginInfo.LoginID}',convert(varchar(20),getdate(),120),'{((BaseEdit)this.txtDAA001).EditValue.ToString()}','{this.GWZT}','{this.SJJGZ}')")); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | // this.VisiblePanel(((BaseEdit)this.txtDQBarCode).EditValue.ToString(), ex.Message, "NG", Color.Yellow); |
| | | ((BaseEdit)this.txtGWM).EditValue = (object)""; |
| | | return; |
| | | } |
| | | System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder(); |
| | | string hx = "\r\n"; |
| | | stringBuilder.Append("模式1出水量:" + strCsl1 + hx); |
| | | stringBuilder.Append("模式1水温度:" + strSw1 + hx); |
| | | stringBuilder.Append("水检结果:" + SJJGZ + hx); |
| | | stringBuilder.Append("水检结果:" + SJJG + hx); |
| | | stringBuilder.Append("工位状态:" + GWZT + hx); |
| | | richTextBox1.Text = stringBuilder.ToString(); |
| | | // this.AddBarCode("已采集"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | private DataTable GetDataTable(string SQLString, string tmpBASMIG2) |
| | | { |
| | | string strConn = "Data Source=192.168.1.146;Initial Catalog=GS_MES;User ID=mesUser;Password =qixi1qaz@WSXmes"; |
| | | using (var connection = new SqlConnection(strConn)) |
| | | { |
| | | var ds = new DataSet(); |
| | | try |
| | | { |
| | | connection.Open(); |
| | | var command = new SqlDataAdapter(SQLString, connection); |
| | | command.Fill(ds, tmpBASMIG2); |
| | | } |
| | | catch (SqlException ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | return ds.Tables[0]; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |