VS2010下调试时查看DataTable.Rows的值

本文分享了一个在调试过程中查看DataSet或DataTable具体值的技巧。作者在调试时发现了一种通过特定路径在自动窗口中查看这些对象详细信息的方法,包括Rows、base、非公共成员等,为快速定位数据问题提供了一种有效途径。

      调试的时候遇到一个问题:不知道怎么在自动窗口或者添加监视那里查看DataSet或者DataTable的具体的值。度娘了一下很多都是添加DataTable.Rows[][]监视,但是一行一列地看还是有点麻烦。可能也是没找到点子上...后来问了一下说是工具箱里有一个DataSet的控件可以用上,但是还没试过,效果还有待检验...

      昨晚调试的时候实在是蛋痛的时候在自动窗口里瞎点了十来分钟居然让我找到了...

     具体点击路径:Rows--base--非公共成员--System--list-base--结果视图--{index}--ItemArray[count]

     图中是只有一行的情况,多行下应该也可以...

     有更好的方法的欢迎多交流...

转载于:https://www.cnblogs.com/SiWenGuanXi/p/4160450.html

namespace MQTT { public partial class Form1 : Form { private IMqttClient mqttClient; private IMqttClient mqttClient1; public Form1() { InitializeComponent(); var mqttFactory = new MqttFactory(); mqttClient = mqttFactory.CreateMqttClient(); var mqttFactory1 = new MqttFactory(); mqttClient1 = mqttFactory1.CreateMqttClient(); } TcpListener listener = new TcpListener(IPAddress.Any, 18888); private async void ConnectToMqttServer() { var mqttClientOptions = new MqttClientOptionsBuilder() .WithClientId($"WinForm_{Guid.NewGuid()}") .WithTcpServer("123.232.107.150", 1883) .WithCredentials("test", "qE.8qygD?'i;G?k")// 替换为你的MQTT服务器地址和端口 .WithCleanSession(false) .WithKeepAlivePeriod(TimeSpan.FromSeconds(60)) .Build(); await mqttClient.ConnectAsync(mqttClientOptions, CancellationToken.None); } private async void ConnectToMqttServer1() { var mqttClientOptions = new MqttClientOptionsBuilder() .WithClientId($"WinForm_{Guid.NewGuid()}") .WithTcpServer("hddff06f.ala.cn-hangzhou.emqxsl.cn", 8883) .WithCredentials("test", "test")// 替换为你的MQTT服务器地址和端口 .WithCleanSession(false) .WithKeepAlivePeriod(TimeSpan.FromSeconds(60)) .WithTlsOptions(new MqttClientTlsOptions { UseTls = true, SslProtocol = System.Security.Authentication.SslProtocols.Tls12, // 指定协议版本 CertificateValidationHandler = (certContext) => { // 自定义证书验证逻辑(生产环境需严格验证) //return true; // 测试可跳过验证 return certContext.Chain.Build((X509Certificate2)certContext.Certificate); } }) .Build(); await mqttClient1.ConnectAsync(mqttClientOptions, CancellationToken.None); } private async void SendMessage() { //ConnectToMqttServer(); //Thread.Sleep(5000); if (mqttClient.IsConnected) { using (SqlConnection con = new SqlConnection("server=10.104.229.10;user=nmjxxzx;pwd=NMJ[xxzx5902768];database=shuiqin;")) { try { con.Open(); DataTable dataTable = new DataTable(); SqlCommand sqlCommand = new SqlCommand("select sbno,dt,shuiwei from czshuiwei where dt>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and dt<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by dt asc", con); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); sqlDataAdapter.Fill(dataTable); for (int i = 0; i < dataTable.Rows.Count; i++) { string mess = JsonConvert.SerializeObject(new { STCD = dataTable.Rows[i][0], DMBH = dataTable.Rows[i][0] + "0", DMMC = dataTable.Rows[i][0] + "0", TM = dataTable.Rows[i][1], Z = dataTable.Rows[i][2] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/z") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } dataTable = new DataTable(); SqlCommand sqlCommand1 = new SqlCommand("select STCD,SNDT,WAT,FlUX,WV,WS,V1 from ST_FDATA_B where SNDT>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and SNDT<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' and stcd='40102100' order by SNDT asc", con); SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter(sqlCommand1); sqlDataAdapter1.Fill(dataTable); for (int i = 0; i < dataTable.Rows.Count; i++) { string v2 = null, v3 = null, v4 = null, v5 = null, v6 = null, v7 = null, v8 = null, v9 = null, v10 = null, di1 = null, di2 = null, di3 = null, di4 = null, di5 = null, di6 = null, di7 = null, di8 = null, di9 = null, di10 = null; string mess = JsonConvert.SerializeObject(new { STCD = dataTable.Rows[i][0], STNM = "青铜峡", TM = dataTable.Rows[i][1], XSNM = dataTable.Rows[i][0] + "0", Z = dataTable.Rows[i][2], Q = dataTable.Rows[i][3], xsavv = dataTable.Rows[i][4], xstta = dataTable.Rows[i][5], v1 = dataTable.Rows[i][6], v2, v3, v4, v5, v6, v7, v8, v9, v10, di1, di2, di3, di4, di5, di6, di7, di8, di9, di10 }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/q") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } dataTable = new DataTable(); SqlCommand sqlCommand2 = new SqlCommand("select stcd,tm,ed from st_ed_r where tm>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and tm<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by tm asc", con); SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter(sqlCommand2); sqlDataAdapter2.Fill(dataTable); if (dataTable.Rows.Count > 0) { for (int i = 0; i < dataTable.Rows.Count; i++) { if (dataTable.Rows[i][0].ToString() == "40102102") { string mess = JsonConvert.SerializeObject(new { STCD = "40102100", TM = dataTable.Rows[i][1], STNM = "青铜峡水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40102650") { string mess = JsonConvert.SerializeObject(new { STCD = "40102650", TM = dataTable.Rows[i][1], STNM = "巴彦高勒水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40544700") { string mess = JsonConvert.SerializeObject(new { STCD = "40103050", TM = dataTable.Rows[i][1], STNM = "三湖河口水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40549700") { string mess = JsonConvert.SerializeObject(new { STCD = "40103400", TM = dataTable.Rows[i][1], STNM = "头道拐水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40539600") { string mess = JsonConvert.SerializeObject(new { STCD = "40102500", TM = dataTable.Rows[i][1], STNM = "头道拐水文站", evas = dataTable.Rows[i][2], bj = "E601" }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/e") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } } } dataTable = new DataTable(); SqlCommand sqlCommand3 = new SqlCommand("select stcd,tm,uc,us,atmp,mst,fl from ST_TMP_R where (tm>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and tm<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "') and (stcd='40102650' or stcd='40544700' or stcd='40549700' or stcd='40102102' or stcd='40520500'or stcd='40539600') order by tm asc", con); SqlDataAdapter sqlDataAdapter3 = new SqlDataAdapter(sqlCommand3); sqlDataAdapter3.Fill(dataTable); //MessageBox.Show(dataTable.Rows[0][6].ToString()); for (int i = 0; i < dataTable.Rows.Count; i++) { if (dataTable.Rows[i][0].ToString() == "40102650") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40102650", STNM = "巴彦高勒水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40544700") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40103050", STNM = "三湖河口水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40549700") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40103400", STNM = "头道拐水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40102102") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40102100", STNM = "青铜峡水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40520500") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40101750", STNM = "下河沿水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else if (dataTable.Rows[i][0].ToString() == "40539600") { string RAIN = null, MAXTEM = null, MINTEM = null, DEWTEM = null; string mess = JsonConvert.SerializeObject(new { STCD = "40102500", STNM = "石嘴山水文站", TM = dataTable.Rows[i][1], WINDIR = dataTable.Rows[i][2], WINSPE = dataTable.Rows[i][3], RAIN, AMBTEM = dataTable.Rows[i][4], MAXTEM, MINTEM, AMBHUM = dataTable.Rows[i][5], DEWTEM, AIRPRE = dataTable.Rows[i][6] }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/phe") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } } dataTable.Clear(); dataTable.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { con.Close(); } } using (SqlConnection con = new SqlConnection("server=10.104.229.16;user=sw;pwd=Swj159753!;database=CSea;")) { try { con.Open(); SqlCommand sqlCommand = new SqlCommand("select MSGCONTENT from SQ_RECE_S where MSGCONTENT like '%PN30%' and tm>'" + DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:0") + "' and tm<='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by tm asc", con); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); DataTable dataTable = new DataTable(); sqlDataAdapter.Fill(dataTable); Regex rg1 = new Regex("(?<=(PN30 ))[.\\s\\S]*?(?=(\\s))", RegexOptions.Multiline | RegexOptions.Singleline); Regex rg = new Regex("(?<=(PD ))[.\\s\\S]*?(?=(\\s))", RegexOptions.Multiline | RegexOptions.Singleline); Regex rg2 = new Regex("(?<=(H ))[.\\s\\S]*?(?=(\\s))", RegexOptions.Multiline | RegexOptions.Singleline); if (dataTable.Rows.Count > 0) { for (int i = 0; i < dataTable.Rows.Count; i++) { string zhanhao = rg2.Match(dataTable.Rows[i][0].ToString()).Value; string sanshi = rg1.Match(dataTable.Rows[i][0].ToString()).Value; if (DateTime.Now.Hour == 8 && DateTime.Now.Minute < 10) { string ryl = rg.Match(dataTable.Rows[i][0].ToString()).Value; string DRP = null; string mess = JsonConvert.SerializeObject(new { STCD = zhanhao, TM = DateTime.Now.ToString("yyyy-MM-dd HH:0:0"), DRP, PN30 = sanshi, INTV = "30", DYP = ryl }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/pp") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } else { string DRP = null, DYP = null; string mess = JsonConvert.SerializeObject(new { STCD = zhanhao, TM = DateTime.Now.ToString("yyyy-MM-dd HH:0:0"), DRP, PN30 = sanshi, INTV = "30", DYP }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/pp") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } } } else { string[] zh = { "40102100", "40101750", "40102500", "40102650", "40103050", "40103180", "40103400" }; for (int i = 0; i < zh.Length; i++) { string DRP = null, DYP = null; string mess = JsonConvert.SerializeObject(new { STCD = zh[i], TM = DateTime.Now.ToString("yyyy-MM-dd HH:0:0"), DRP, PN30 = "0.0", INTV = "30", DYP }); var message = new MqttApplicationMessageBuilder() .WithTopic("hydro/nm/pp") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); await mqttClient.PublishAsync(message, CancellationToken.None); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { con.Close(); } } label4.Invoke(new Action(() => { label4.Text =DateTime.Now + "已发送成功"; label4.Font = new Font("黑体", 12); label4.BackColor = Color.Green; })); } else { try { ConnectToMqttServer(); await Task.Delay(10000); SendMessage(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } //await mqttClient.DisconnectAsync(); // 发送 DISCONNECT //mqttClient.Dispose(); // 释放资源 // 置空对象 //MessageBox.Show("发送成功123"); } private void Form1_Load(object sender, EventArgs e) { ConnectToMqttServer(); ConnectToMqttServer1(); listener.Start(); label4.Text = "未发送"; label4.Font = new Font("黑体", 12); label5.Text = "未发送"; label5.Font = new Font("黑体", 12); label6.Text = "未发送"; label6.Font = new Font("黑体", 12); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { using (SqlConnection con = new SqlConnection("server=;database=shuiqin;Integrated Security=True")) { try { con.Open(); TcpClient client = listener.AcceptTcpClient(); using (NetworkStream stream = client.GetStream()) { byte[] buffer = new byte[1024]; int bytesRead; StringBuilder messageBuilder = new StringBuilder(); string jssj = ""; // 持续接收数据,直到客户端断开连接 while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) { // 将接收到的字节转换为字符串 string receivedData = Encoding.UTF8.GetString(buffer, 0, bytesRead); jssj += receivedData; } string[] cr = Regex.Split(jssj, ","); for (int i = 0; i < cr.Length - 1; i += 3) { SqlCommand command = new SqlCommand("insert into czshuiwei(sbno,dt,shuiwei) values('" + cr[i] + "','" + cr[i + 1] + "','" + cr[i + 2] + "')", con); command.ExecuteNonQuery(); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { con.Close(); } } } private void timer1_Tick(object sender, EventArgs e) { if ((DateTime.Now.Minute == 33 && DateTime.Now.Second == 0) || (DateTime.Now.Minute == 3 && DateTime.Now.Second == 0)) { SendMessage(); } if (DateTime.Now.Minute % 6 == 0 && DateTime.Now.Second == 0) { timer3.Enabled = true; //timer4.Enabled = true; } } private void button2_Click_1(object sender, EventArgs e) { SendMessage(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { } private void timer2_Tick(object sender, EventArgs e) { if (!backgroundWorker1.IsBusy) { backgroundWorker1.RunWorkerAsync(); } } private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e) { using (SqlConnection con = new SqlConnection("server=;database=shuiqin;Integrated Security=True")) { try { con.Open(); if (mqttClient1.IsConnected) { SqlCommand sqlCommand = new SqlCommand("select top 1 dt,shuiwei from shuiwei where sbno='1040510350' and dt>'" + DateTime.Now.AddMinutes(-6).ToString("yyyy-MM-dd HH:mm:0") + "' and dt <='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by dt desc", con); DataTable dt = new DataTable(); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); sqlDataAdapter.Fill(dt); if (dt.Rows.Count > 0) { string mess = "H 40510350 T " + dt.Rows[0][0] +" Z " + dt.Rows[0][1] +" NN"; var message = new MqttApplicationMessageBuilder() .WithTopic("ToPlatform/waterLevel") // 替换为你的主题名 .WithPayload(mess) // 发送的消息内容 .Build(); mqttClient1.PublishAsync(message, CancellationToken.None); timer3.Enabled = false; label5.Invoke(new Action(() => { label5.Text = dt.Rows[0][0] + "已发送成功"; label5.Font = new Font("黑体", 12); label5.BackColor = Color.Green; })); } } else { ConnectToMqttServer1(); Thread.Sleep(10000); } } catch(Exception ex) { MessageBox.Show(ex.ToString()); }finally { con.Close(); } } } private void timer3_Tick(object sender, EventArgs e) { if (!backgroundWorker3.IsBusy) { backgroundWorker3.RunWorkerAsync(); } } private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) { using (SqlConnection con = new SqlConnection("server=;database=shuiqin;Integrated Security=True")) { try { con.Open(); SqlCommand sqlCommand = new SqlCommand("select top 1 dt,shuiwei from shuiwei where sbno='1000100200' and dt>'" + DateTime.Now.AddMinutes(-6).ToString("yyyy-MM-dd HH:mm:0") + "' and dt <='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:0") + "' order by dt desc", con); DataTable dt = new DataTable(); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); sqlDataAdapter.Fill(dt); if (dt.Rows.Count > 0) { TcpClient client = new TcpClient("182.92.175.121", 8897); NetworkStream stream = client.GetStream(); byte[] soh = new byte[] { 0x01 }; // SOH (0x01) byte[] stx = new byte[] { 0x02 }; // STX (0x02) byte[] stx1 = new byte[] { 0x03 }; // STX (0x02) byte[] payload1 = Encoding.ASCII.GetBytes("FF00401031511A0A320040"); string xuhao = ""; if (Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) < 10) { xuhao = "000" + ConfigurationManager.AppSettings["geshu"]; } else if (Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) >= 10 && Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) < 100) { xuhao = "00" + ConfigurationManager.AppSettings["geshu"]; } else if (Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) >= 100 && Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) < 1000) { xuhao = "0" + ConfigurationManager.AppSettings["geshu"]; } else if (Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) >= 1000 && Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) <= 9999) { xuhao = ConfigurationManager.AppSettings["geshu"]; } byte[] payload2 = Encoding.ASCII.GetBytes(xuhao+"" +DateTime.Now.ToString("yy")+ DateTime.Now.ToString("MM")+DateTime.Now.ToString("dd")+DateTime.Now.ToString("HH")+ DateTime.Now.ToString("mm")+ DateTime.Now.ToString("ss")+ "ST 0040103151 H TT " +Convert.ToDateTime( dt.Rows[0][0]).ToString("yy")+ Convert.ToDateTime(dt.Rows[0][0]).ToString("MM")+ Convert.ToDateTime(dt.Rows[0][0]).ToString("dd")+ Convert.ToDateTime(dt.Rows[0][0]).ToString("HH")+ Convert.ToDateTime(dt.Rows[0][0]).ToString("mm") + " Z " + dt.Rows[0][1] +" VT 13.96"); byte[] bytes = soh.Concat(payload1).Concat(stx).Concat(payload2).Concat(stx1).ToArray(); StringBuilder hexBuilder = new StringBuilder(); foreach (char c in bytes) { // 将字符转为字节,再转为两位十六进制 string hexByte = Convert.ToByte(c).ToString("X2"); hexBuilder.Append(hexByte); //hexBuilder.Append(" "); // 可选空格分隔 } byte[] data = new byte[hexBuilder.Length / 2]; for (int i = 0; i < data.Length; i++) { int startIndex = i * 2; string byteString = Convert.ToString(hexBuilder).Substring(startIndex, 2); if (!byte.TryParse(byteString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out data[i])) { throw new FormatException($"无效的十六进制字符: {byteString}"); } } ushort crc = 0xFFFF; // 初始 foreach (byte b in data) { crc ^= b; // 与当前字节异或 // 处理每个位 for (int i = 0; i < 8; i++) { if ((crc & 0x0001) != 0) // 最低位为1 { crc >>= 1; // 右移 crc ^= 0xA001; // 与多项式异或 (0x8005的反转) } else { crc >>= 1; // 直接右移 } } } byte[] fasong = bytes.Concat(Encoding.ASCII.GetBytes(crc.ToString("X4"))).ToArray(); //int gs = 5; //for (int i = 0; i < gs; i++) //{ // byte[] data = Encoding.UTF8.GetBytes(i + ""); // //byte[] lengthHeader = BitConverter.GetBytes(data.Length); // //stream.Write(lengthHeader, 0, 4); stream.Write(fasong, 0, fasong.Length); //} stream.Close(); string configPath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath; // 加载配置文件 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(configPath); // 查找appSettings节点 XmlNode node = xmlDoc.SelectSingleNode("//appSettings"); // 查找对应的key XmlElement element = (XmlElement)node.SelectSingleNode($"add[@key='geshu']"); if (element != null) { // 存在则更新 if (xuhao == "9999") { element.SetAttribute("value", "1"); } else { element.SetAttribute("value", Convert.ToString(Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) + 1)); } } else { // 不存在则创建新节点 element = xmlDoc.CreateElement("add"); element.SetAttribute("key", "geshu"); element.SetAttribute("value", Convert.ToString(Convert.ToDecimal(ConfigurationManager.AppSettings["geshu"]) + 1)); node.AppendChild(element); } // 保存配置文件 xmlDoc.Save(configPath); // 刷新配置,使修改立即生效 ConfigurationManager.RefreshSection("appSettings"); label6.Invoke(new Action(() => { label6.Text = dt.Rows[0][0]+"已发送成功"; label6.Font = new Font("黑体", 12); label6.BackColor = Color.Green; })); //string path = @"D:\MQTT日志.txt"; //string AppendText = xuhao + "" + DateTime.Now.ToString("yy") + DateTime.Now.ToString("MM") + DateTime.Now.ToString("dd") + DateTime.Now.ToString("HH") + DateTime.Now.ToString("mm") + DateTime.Now.ToString("ss") + "ST 0040103151 H TT " + Convert.ToDateTime(dt.Rows[0][0]).ToString("yy") + Convert.ToDateTime(dt.Rows[0][0]).ToString("MM") + Convert.ToDateTime(dt.Rows[0][0]).ToString("dd") + Convert.ToDateTime(dt.Rows[0][0]).ToString("HH") + Convert.ToDateTime(dt.Rows[0][0]).ToString("mm") + " Z " + dt.Rows[0][1] + " VT 13.96" + Environment.NewLine; //File.AppendAllText(path, AppendText); timer4.Enabled = false; } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { con.Close(); } } } private void timer4_Tick(object sender, EventArgs e) { //if (!backgroundWorker2.IsBusy) //{ // backgroundWorker2.RunWorkerAsync(); //} } } } 请解析以上代码
10-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值