string regAddr = dgvData.Rows[e.RowIndex].Cells["colRegNum"].Value.ToString(); //modbus地址 ushort uRegAddr = (ushort)Convert.ToInt16(regAddr); string regValue = ""; if (dgvData.Rows[e.RowIndex].Cells["colRegValue"].Value != null) { regValue = dgvData.Rows[e.RowIndex].Cells["colRegValue"].Value.ToString(); regValue = GetGridValue(regAddr, regValue).ToString(); } double dRegValue = 0; if (regValue.Trim() != "") { dRegValue = Convert.ToDouble(regValue); } if (e.ColumnIndex == dgvData.Columns["colRead"].Index) { if (SendReadCmd(uRegAddr)) { int pos = (int)Math.Log10(modCmd.objRegDicionary[uRegAddr].Gain); string format = "f" + pos.ToString(); string strValue = modCmd.objRegDicionary[uRegAddr].regValue.ToString(); if (pos > 0) { strValue = modCmd.objRegDicionary[uRegAddr].regValue.ToString(format); } if (IsSwitchReg(regAddr)) { if (strValue == "1") { strValue = "ON"; } else { strValue = "OFF"; } }
时间: 2024-02-10 22:17:48 浏览: 137
字符串数组转换成string类型的
5星 · 资源好评率100%
在这段代码中,它首先从所选行中获取modbus地址并将其转换为ushort类型,就像之前的代码片段一样。接着,它会检查所选行中“colRegValue”列的值是否为空,如果不为空,就会调用GetGridValue方法来获取该值,并将其转换为字符串类型。
然后,它会将获取到的字符串类型的值转换为double类型,并将其存储在dRegValue变量中。接下来,它会检查用户是否点击了“colRead”列。如果是,它会调用SendReadCmd方法向modbus设备发送读取命令,并从modCmd.objRegDicionary[uRegAddr]中获取到读取到的寄存器值。然后,它会将该值格式化成字符串,并将其存储在strValue变量中。如果该寄存器是开关寄存器,它会将值“1”转换为“ON”,将值“0”转换为“OFF”。
总之,这段代码的作用是在用户单击“colRead”列时,向modbus设备发送读取命令,并将读取到的寄存器值在DataGridView中显示出来。
阅读全文