private void timer1_Tick(object sender, EventArgs e)
{ if (fxPLC != null)
{ string binaryStr;
fxPLC.ReadM(out binaryStr);
List<string> changeMessages = new List<string>();
// 解析当前位状态(从左到右为第1到第7位)
bool[] currentBitStates = new bool[7];
for (int i = 0; i < 7; i++)
{ currentBitStates = binaryStr == '1'; // '1'对应true,'0'对应false
}
// 对比当前状态与上一次状态,检测"0→1"的变化
for (int i = 0; i < 7; i++)
{ int bitPosition = i + 1; // 位编号(1-7)
bool previous = previousBitStates;
bool current = currentBitStates;
previousBitStates = currentBitStates;
columnNames[0] = (listViewData.Items.Count + 1).ToString();//序号,当前数量+1
// 仅当从0(false)变为1(true)时提示
if (!previous && current)
{ switch (i)
{ case 0://M100-启动
columnNames[1] = DateTime.Now.ToString();
textBoxOne.Text = "";
textBoxTwo.Text = "";
textBoxThree.Text = "";
textBoxFour.Text = "";
textBoxLog.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "接收到启动信号\r\n"; break;
case 1: //M101-扫码
keyenceScan.OpenScan();
if (keyenceScan.ReadExisting() == 0)
{ //扫码成功
fxPLC.WriteM("M0120", true); columnNames[2] = keyenceScan.BufferString;
}
else
{ //扫码失败
fxPLC.WriteM("M0121", true); columnNames[2] = "扫码失败";
}
textBoxSN.Text = columnNames[2];
textBoxLog.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "接收到启动信号,扫码结果:" + columnNames[2] + "\r\n"; break;
case 2: //M102-第1个螺丝
columnNames[3] = DateTime.Now.ToString();
textBoxOne.Text = "OK";
textBoxLog.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "打第1个螺丝\r\n"; break;
case 3://M103-第2个螺丝
columnNames[4] = DateTime.Now.ToString();
textBoxTwo.Text = "OK";
textBoxLog.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "打第2个螺丝\r\n"; break;
case 4://M104-第3个螺丝
columnNames[5] = DateTime.Now.ToString();
textBoxThree.Text = "OK";
textBoxLog.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "打第3个螺丝\r\n"; break;
case 5://M105-第4个螺丝
columnNames[6] = DateTime.Now.ToString();
textBoxLog.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "打第4个螺丝\r\n"; textBoxFour.Text = "OK";
break;
case 6://M106-结束
columnNames[7] = DateTime.Now.ToString();
// 1. 创建一行数据(对应列头顺序)
ListViewItem item = new ListViewItem();
item.Text = columnNames[0];
item.SubItems.Add(columnNames[1]);
item.SubItems.Add(columnNames[2]);
item.SubItems.Add(columnNames[3]);
item.SubItems.Add(columnNames[4]);
item.SubItems.Add(columnNames[5]);
item.SubItems.Add(columnNames[6]);
item.SubItems.Add(columnNames[7]);
// 2. 把行添加到ListView
listViewData.Items.Add(item);
// 3. 自动滚动到最新行(可选)
listViewData.EnsureVisible(listViewData.Items.Count - 1);
textBoxLog.Text += DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "完成\r\n"; break;
}
}
}
}
}