111,094
社区成员




private void OrderProccess()
{
try
{
while (m_flag)
{
for (int k = 0; k < m_clist.Count; k++)
{//构造字节数组
Byte[] sendByte = new Byte[64];
//是这个服务器内的设备IP号
if (m_clist[k].m_name.Contains(m_name))
//起始位和IP号
{
string datastr = "AA" + m_clist[k].ip.ToString("X2");
//CRC校验码
int crc = CRCKey_RTU(datastr);
//待发送内容
string sendStr = datastr + String.Format("{0:X4}", crc);
//转换成字节数组以便发送
sendByte = Encoding.BigEndianUnicode.GetBytes(sendStr.ToCharArray());
// receiveTd.Interrupt();
//向每个设备最多发三次命令
for (int i = 0; i <= 3; i++)
{
//如果接收到的数据包与发送的不一致,重新发送
if (!(Compare(m_rStr, sendStr)) || m_rStr == null)
{
if (i < 3)
{
m_socket.Send(sendByte, sendByte.Length, 0);//发送数据
//每次发送之后延时100毫秒
Thread.Sleep(2000);
}
else
{
//如果三次都没有返回从IP列表中删除
// m_clist.Remove(m_clist[k]);
m_clist[k].isFound = false;
break;
}
}
//接收到相同的数据包,设备搜索成功
else
{
//搜索到的设备个数加1
ipcount++;
m_clist[k].isFound = true;
m_clist[k].m_name = m_name + m_clist[k].ip.ToString();
//更新设备表
UpDateDevice(m_da, m_clist[k].ip.ToString("X2"));
break;
}
}
}
}
//提示实际找到的设备
MessageBox.Show(m_ip.ToString() + "下搜索到" + ipcount + "个设备!");
//计数器清零
ipcount = 0;
//线程挂起
Thread.Sleep(Timeout.Infinite);
break;
}
}
catch (Exception ex)
{
//MessageBox.Show(ex.ToString());
// MessageBox.Show("连接已断开!");
}
}