public void monitor() { qplc = new McProtocolTcp(plc_ip, int.Parse(plc_port), McFrame.MC3E, (uint)int.Parse(plc_staionnumber)); //qplc = new McProtocolTcp("192.168.0.2", int.Parse("2000"), McFrame.MC3E, (uint)int.Parse("8")); try { qplc.Open(); } catch (Exception e) { MessageBox.Show(e.Message); return; } while (true) { //foreach (DictionaryEntry de in hshTable) IDictionaryEnumerator de = hshTable.GetEnumerator(); while (de.MoveNext()) { //if markup abortflag then qplc.close,thread.abort PlcDeviceType type; int addr; McProtocolApp.GetDeviceCode(de.Key.ToString(), out type, out addr); var val = new int[1]; //int rtCode = McProtocolApp.IsBitDevice(type) ? qplc.GetBitDevice(de.Key.ToString(), val.Length, val) : // qplc.ReadDeviceBlock(de.Key.ToString(), val.Length, val); try { int rtCode = McProtocolApp.IsBitDevice(type) ? qplc.GetBitDevice(de.Key.ToString(), val.Length, val) : qplc.ReadDeviceBlock(de.Key.ToString(), val.Length, val); } catch (Exception e) { MessageBox.Show(e.Message); return; } ((info)de.Value).temp_value = val[0].ToString(); } Thread.Sleep(20); } qplc.Close(); }
private void comboBox1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { ComboBox cb = comboBox1; string buff = cb.Text; if (0 < buff.IndexOf(',')) { // "D10,2"のパターン string[] s = buff.Split(','); if (1 < s.Length) { PlcDeviceType type; int addr; McProtocolApp.GetDeviceCode(s[0], out type, out addr); var val = new int[int.Parse(s[1])]; int rtCode = McProtocolApp.IsBitDevice(type) ? FApp.GetBitDevice(s[0], val.Length, val) : FApp.ReadDeviceBlock(s[0], val.Length, val); if (0 < rtCode) { listBox1.Items.Add("ERROR:0x" + rtCode.ToString("X4")); } else { for (int i = 0; i < val.Length; ++i) { listBox1.Items.Add(type.ToString() + (addr + i).ToString(CultureInfo.InvariantCulture) + "=" + val[i].ToString(CultureInfo.InvariantCulture)); } } } } else if (0 < buff.IndexOf('=')) { string[] s = buff.Split('='); if (0 < s[0].IndexOf("..", System.StringComparison.Ordinal)) { // "D10..12=0"のパターン string[] t = s[0].Replace("..", "=").Split('='); int m; int n = int.Parse(t[1]); PlcDeviceType type; McProtocolApp.GetDeviceCode(t[0], out type, out m); var data = new int[n - m + 1]; int v = int.Parse(s[1]); for (int i = 0; i < data.Length; ++i) { data[i] = v; } int rtCode = McProtocolApp.IsBitDevice(type) ? FApp.SetBitDevice(t[0], data.Length, data) : FApp.WriteDeviceBlock(t[0], data.Length, data); listBox1.Items.Add(buff.ToUpper()); if (0 < rtCode) { listBox1.Items.Add("ERROR:0x" + rtCode.ToString("X4")); } } else { // "D10=0"のパターン PlcDeviceType type; int addr; McProtocolApp.GetDeviceCode(s[0], out type, out addr); int val = int.Parse(s[1]); int rtCode; if (McProtocolApp.IsBitDevice(type)) { var data = new int[1]; data[0] = val; rtCode = FApp.SetBitDevice(s[0], data.Length, data); } else { rtCode = FApp.SetDevice(s[0], val); } listBox1.Items.Add(buff.ToUpper()); if (0 < rtCode) { listBox1.Items.Add("ERROR:0x" + rtCode.ToString("X4")); } } } else { // "D10"のパターン PlcDeviceType type; int addr; McProtocolApp.GetDeviceCode(buff.ToUpper(), out type, out addr); int n; int rtCode; if (McProtocolApp.IsBitDevice(type)) { var data = new int[1]; rtCode = FApp.GetBitDevice(buff, data.Length, data); n = data[0]; } else { rtCode = FApp.GetDevice(buff.ToUpper(), out n); } listBox1.Items.Add(buff.ToUpper() + "=" + n.ToString(CultureInfo.InvariantCulture)); if (0 < rtCode) { listBox1.Items.Add("ERROR:0x" + rtCode.ToString("X4")); } } listBox1.SelectedIndex = listBox1.Items.Count - 1; cb.Items.Insert(0, cb.Text); cb.Text = ""; } }