Commit 456a558d gujlg

修改无法接收的问题

1 个父辈 7781a023
...@@ -36,7 +36,7 @@ namespace Asa.IOModule ...@@ -36,7 +36,7 @@ namespace Asa.IOModule
private List<string> _logRxTx; //日志 private List<string> _logRxTx; //日志
//private List<byte[]> _send; //发送的命令 //private List<byte[]> _send; //发送的命令
private System.Collections.Concurrent.ConcurrentQueue<byte[]> _send; private System.Collections.Concurrent.ConcurrentQueue<byte[]> _send;
private List<byte[]> _receive; //接收的数据 private System.Collections.Concurrent.ConcurrentQueue<byte[]> _receive; //接收的数据
private Thread tSend; //发送命令处理 private Thread tSend; //发送命令处理
private Thread tReceive; //接收信息处理 private Thread tReceive; //接收信息处理
...@@ -118,9 +118,8 @@ namespace Asa.IOModule ...@@ -118,9 +118,8 @@ namespace Asa.IOModule
_sta = new Box_Sta[32]; _sta = new Box_Sta[32];
_log = new List<string>(); _log = new List<string>();
_logRxTx = new List<string>(); _logRxTx = new List<string>();
//_send = new List<byte[]>();
_send = new System.Collections.Concurrent.ConcurrentQueue<byte[]>(); _send = new System.Collections.Concurrent.ConcurrentQueue<byte[]>();
_receive = new List<byte[]>(); _receive = new System.Collections.Concurrent.ConcurrentQueue<byte[]>();
Type = Box_Type.DIO_32; Type = Box_Type.DIO_32;
tReconn = new Thread(new ThreadStart(Reconn)); tReconn = new Thread(new ThreadStart(Reconn));
...@@ -290,11 +289,8 @@ namespace Asa.IOModule ...@@ -290,11 +289,8 @@ namespace Asa.IOModule
_unrevd = 0; _unrevd = 0;
_unrevdRemote = 0; _unrevdRemote = 0;
_flag = 0; _flag = 0;
//_send.Clear(); _send = new System.Collections.Concurrent.ConcurrentQueue<byte[]>();
while (_send.TryDequeue(out byte[] aa)) _receive = new System.Collections.Concurrent.ConcurrentQueue<byte[]>();
{ }
_receive.Clear();
_log.Clear(); _log.Clear();
_logRxTx.Clear(); _logRxTx.Clear();
...@@ -597,27 +593,14 @@ namespace Asa.IOModule ...@@ -597,27 +593,14 @@ namespace Asa.IOModule
{ {
while (true) while (true)
{ {
if (_receive.Count > 0) if (_receive.TryDequeue(out byte[] buff))
{
if (_receive[0] != null)
{
if (_receive[0][7] == 1)
ReadDO(_receive[0]);
else if (_receive[0][7] == 2)
ReadDI(_receive[0]);
else if (_receive[0][7] == 5)
ReadSingle(_receive[0]);
if (LogOut)
{ {
byte[] bb = new byte[2]; if (buff[7] == 1)
bb[0] = _receive[0][1]; ReadDO(buff);
bb[1] = _receive[0][0]; else if (buff[7] == 2)
ushort flag = BitConverter.ToUInt16(bb, 0); ReadDI(buff);
_logRxTx.Remove(flag + "," + _receive[0][7]); else if (buff[7] == 5)
} ReadSingle(buff);
_receive.RemoveAt(0);
}
} }
Thread.Sleep(10); Thread.Sleep(10);
} }
...@@ -943,7 +926,7 @@ namespace Asa.IOModule ...@@ -943,7 +926,7 @@ namespace Asa.IOModule
int len = _client.Receive(bb); int len = _client.Receive(bb);
byte[] buff = new byte[len]; byte[] buff = new byte[len];
Array.Copy(bb, buff, len); Array.Copy(bb, buff, len);
_receive.Add(buff); _receive.Enqueue(buff);
_unrevd = 0; _unrevd = 0;
} }
_unrevd += NET_SLEEP; _unrevd += NET_SLEEP;
......
...@@ -593,7 +593,9 @@ namespace Asa.IOModule ...@@ -593,7 +593,9 @@ namespace Asa.IOModule
/// </summary> /// </summary>
private void Receive() private void Receive()
{ {
while (_receive.TryDequeue(out byte[] buff)) while (true)
{
if (_receive.TryDequeue(out byte[] buff))
{ {
if (buff[7] == 1) if (buff[7] == 1)
ReadDO(buff); ReadDO(buff);
...@@ -601,6 +603,7 @@ namespace Asa.IOModule ...@@ -601,6 +603,7 @@ namespace Asa.IOModule
ReadDI(buff); ReadDI(buff);
else if (buff[7] == 5) else if (buff[7] == 5)
{ } { }
}
Thread.Sleep(10); Thread.Sleep(10);
} }
} }
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!