/// <summary> /// 根据PLC类型读取--文本输入类 /// </summary> /// <param name="pLC"></param> /// <param name="numerical_Class"></param> /// <param name="skinTextBox_Reform"></param> /// <returns></returns> public void Refresh(TextBox_base textBox)//根据PLC类型读取--文本输入类 { switch (textBox.Plc) { case PLC.Mitsubishi: IPLC_interface mitsubishi = new Mitsubishi_realize(); //实例化接口--实现三菱在线访问 if (mitsubishi.PLC_ready) //PLC是否准备完成 { string data = mitsubishi.PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值 TextBox_state(textBox, data); //填充文本数据--自动判断用户设定的小数点位置--多余的异常 } break; case PLC.Siemens: IPLC_interface Siemens = new Siemens_realize(); //实例化接口--实现西门子在线访问 if (Siemens.PLC_ready) //PLC是否准备完成 { string data = Siemens.PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值 TextBox_state(textBox, data); //填充文本数据--自动判断用户设定的小数点位置--多余的异常 } break; case PLC.MODBUS_TCP: MODBUD_TCP MODBUD_TCP = new MODBUD_TCP(); //实例化接口--实现MODBUS TCP if (MODBUD_TCP.IPLC_interface_PLC_ready) //PLC是否准备完成 { //由于modbus_TCP读写状态不同 读输出 写输入模式 string data = MODBUD_TCP.IPLC_interface_PLC_read_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.numerical); //读取PLC数值 TextBox_state(textBox, data); //填充文本数据--自动判断用户设定的小数点位置--多余的异常 } break; } }
/// <summary> /// 填充文本数据 /// </summary> /// <param name="skinTextBox_Reform"></param> /// <param name="numerical_Class"></param> /// <param name="Data"></param> private void TextBox_state(TextBox_base textBox, string Data)//填充文本数据 { try { int Inde = Data.IndexOf('.'); //搜索数据是否有小数点 if (Inde > 0 || Inde >= textBox.Decimal_Below) //判断是否有小数点 { int In = Data.Length - 1 - textBox.Decimal_Below - Inde; //实现原理--先获取数据长度-后减1-小数点-在减去设定数-获取小数点位置 for (int i = 0; i < In; i++) { Data = Data.Remove(Data.Length - 1, 1); //移除掉 } } else { Data = complement(Data, textBox);//然后位数不够--自动补码 } if (textBox.Decimal_Below < 1) { Data = Data.Replace('.', ' '); //如果用户设定没有小数点直接去除小数点 } textBox.Control_Text = Data; //直接填充数据 } catch { return; } }
/// <summary> /// 实现浮点小数自动补码 /// </summary> /// <param name="Name"></param> /// <param name="numerical_Class"></param> /// <returns></returns> private string complement(string Name, TextBox_base textBox) //实现浮点小数自动补码 { int Inde = Name.IndexOf('.'); //搜索数据是否有小数点 if (Inde < 0 & textBox.Decimal_Below != 0) { Name += "."; //自动补码小数点 } if (textBox.Decimal_Below > 0 & Inde < 0) { for (int i = 0; i < textBox.Decimal_Below; i++) { Name += "0"; //填充数据 } } if (textBox.Decimal_Below > 0 & Inde > 0) { int In = Name.Length - 1 - Inde; for (int i = 0; i < textBox.Decimal_Below - In; i++) { Name += "0"; //填充数据 } } return(Name);//返回数据 }
public string plc(TextBox_base textBox)//根据PLC类型写入 { switch (textBox.Plc) { case PLC.Mitsubishi: IPLC_interface mitsubishi = new Mitsubishi_realize(); //实例化接口--实现三菱在线访问 if (mitsubishi.PLC_ready) { mitsubishi.PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical); } else { MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err"); //推出异常提示 } break; case PLC.Siemens: IPLC_interface Siemens = new Siemens_realize(); //实例化接口--实现西门子在线访问 if (Siemens.PLC_ready) { Siemens.PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical); } else { MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err"); //推出异常提示 } break; case PLC.MODBUS_TCP: MODBUD_TCP MODBUD_TCP = new MODBUD_TCP(); //实例化接口--实现MODBUS TCP if (MODBUD_TCP.IPLC_interface_PLC_ready) { MODBUD_TCP.IPLC_interface_PLC_write_D_register(textBox.PLC_Contact, textBox.PLC_Address, textBox.Control_Text, textBox.numerical); } else { MessageBox.Show("未连接设备:" + textBox.Plc.ToString(), "Err"); //推出异常提示用户 } break; } return("OK_RUN"); }
public List <string> plc(TextBox_base textBox, Histogram_base dataGridView, int Idx)//根据PLC类型写入 { List <string> Data = new List <string>(); switch (textBox.Plc) { case PLC.Mitsubishi: IPLC_interface mitsubishi = new Mitsubishi_realize(); //实例化接口--实现三菱在线访问 if (mitsubishi.PLC_ready) { for (int i = 0; i < Idx; i++) { Data.Add(mitsubishi.PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i])); } } break; case PLC.Siemens: IPLC_interface Siemens = new Siemens_realize(); //实例化接口--实现西门子在线访问 if (Siemens.PLC_ready) { for (int i = 0; i < Idx; i++) { Data.Add(Siemens.PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i])); } } break; case PLC.MODBUS_TCP: MODBUD_TCP MODBUD_TCP = new MODBUD_TCP(); //实例化接口--实现MODBUS TCP if (MODBUD_TCP.IPLC_interface_PLC_ready) { for (int i = 0; i < Idx; i++) { Data.Add(MODBUD_TCP.IPLC_interface_PLC_read_D_register(textBox.PLC_Contact, dataGridView.Total_address[i].ToString(), dataGridView.Histogram_numerical[i])); } } break; } return(Data); }