Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private byte[] WriteData(byte[] command, bool ack = true, int retries = 5)
- {
- byte[] ackBuffer = new byte[2];
- bool done = false;
- while ((!done) && (retries-- > 0))
- {
- Port.Write(command, 0, command.Length);
- if (ack)
- {
- while (Port.BytesToRead != 2) { Task.Delay(1).Wait(); }
- Port.Read(ackBuffer, 0, 2);
- done = 0xEE07 != (ackBuffer[0] << 8 | ackBuffer[1]);
- }
- else
- done = true;
- }
- if (!done)
- throw new Exception("WriteData retries exceeded");
- return ackBuffer;
- }
- private byte[] ReadData(byte[] command, int readLength)
- {
- byte[] headerBuffer = new byte[2];
- byte[] returnBuffer = new byte[readLength];
- Port.Write(command, 0, command.Length);
- while (Port.BytesToRead != 2) { Task.Delay(1).Wait(); }
- Port.Read(headerBuffer, 0, 2);
- if (headerBuffer[0] != 0xBB)
- throw new Exception(string.Format("ReadData error 0x{0:x2}{0:x2}", headerBuffer[0], headerBuffer[1]));
- if (headerBuffer[1] != readLength)
- throw new Exception(string.Format("ReadData error: failed to read {0} bytes. Read {1}", readLength, headerBuffer[1]));
- while (Port.BytesToRead != readLength) { Task.Delay(1).Wait(); }
- Port.Read(returnBuffer, 0, readLength);
- return returnBuffer;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement