Commit 1b91aab0 刘韬

1

1 个父辈 22acfcf0
......@@ -344,7 +344,104 @@ public class PuYueRFID_C2S
}
}
public bool ReadByte(short address, short length, out byte[] data, out string errmsg)
{
errmsg = "";
if (length > 0x40)
{
throw new Exception("最大读取64个字节");
}
data = null;
byte[] temp;
byte[] buffer = new byte[12];
seqadd();
var seqbyte = BitConverter.GetBytes(seq); //事务处理标识
buffer[0] = seqbyte[0]; //高位
buffer[1] = seqbyte[1]; //低位
buffer[2] = 0;
buffer[3] = 0; //协议标识
buffer[4] = 0;
buffer[5] = 0x06; //后面字节数
buffer[6] = 0xFF; //主设备
buffer[7] = 0x03; //功能码
temp = BitConverter.GetBytes(address); //寄存器起始地址
buffer[8] = temp[1]; //高位
buffer[9] = temp[0]; //低位
temp = BitConverter.GetBytes(length); //寄存器个数
buffer[10] = temp[1]; //高位
buffer[11] = temp[0]; //低位
var buffer5 = new byte[256];
int recvlen = 0;
lock (tcpClient)
{
try
{
if (this.tcpClient.Client.Available > 0)
{
this.tcpClient.Client.Receive(buffer5);
}
this.tcpClient.Client.Send(buffer);
Thread.Sleep(10);
recvlen = this.tcpClient.Client.Receive(buffer5);
}
catch (SocketException exception1)
{
errmsg = exception1.ToString();
return false;
}
catch (Exception ex)
{
errmsg = ex.ToString();
return false;
}
}
if (buffer5.Length <= 6)
{
errmsg = "返回内容长度太短:" + BitConverter.ToString(buffer5);
return false;
}
if (buffer5[0] != seqbyte[0] || buffer5[1] != seqbyte[1])
{
errmsg = "seq不符:" + BitConverter.ToString(buffer5) + ",seq:" + BitConverter.ToString(seqbyte);
return false;
}
else if (buffer5[7] == 0x83)
{
errmsg = "设备报错:" + BitConverter.ToString(buffer5);
return false;
}
else
{
byte[] buffer6 = new byte[2];
buffer6[0] = buffer5[5];
buffer6[1] = buffer5[4];
var num3 = BitConverter.ToInt16(buffer6, 0);
if (((num3 + 6) >= recvlen))
{
data = new byte[num3 - 3];
Buffer.BlockCopy(buffer5, 9, data, 0, length);
//data = buffer6.GetRange(9, num3 - 3).ToArray();
//Console.WriteLine(BitConverter.ToString(list.ToArray()));
return true;
}
else
{
errmsg = "返回数据长度不符:" + BitConverter.ToString(buffer5) + ",rn:" + num3;
}
}
return false;
}
public bool ReadByte(short address,short length,out byte[] data) {
if (length > 64)
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!