53 lines
1.9 KiB
C#
53 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Xylem.Common.Hardware.Interfaces.Ports.PortCore;
|
|
|
|
namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol
|
|
{
|
|
public class RfidTransmitProtocol : UartTransmitProtocol
|
|
{
|
|
//use the UART transmit protocol sync byte wrapped to RFID protocol
|
|
private const Byte ProtSyncByte = 0x5B;
|
|
private const UInt16 ProtAddLength = 1;
|
|
private readonly UInt16? _protLengthIndex = 1;
|
|
//this will be used if RFID protocol has been extracted from RfidComPort
|
|
//private const Byte ProtSyncByte = 0x01;
|
|
//private const UInt16 ProtAddLength = 1;
|
|
//private readonly UInt16? _protLengthIndex = 3;
|
|
|
|
private const Int32 DefaultResponseTimeoutMs = 1550;
|
|
private Int32 _responseTimeoutMs = DefaultResponseTimeoutMs;
|
|
|
|
/// <inheritdoc />
|
|
public override void SetResponseTimeout(Int32 responseTimeoutMs)
|
|
{
|
|
_responseTimeoutMs = responseTimeoutMs;
|
|
}
|
|
/// <inheritdoc />
|
|
public override void SetDefaultResponseTimeout()
|
|
{
|
|
_responseTimeoutMs = DefaultResponseTimeoutMs;
|
|
}
|
|
private const UInt32 BaudRate = 9600;
|
|
private readonly UInt32? _receiveBufferFlushThreshold = null;
|
|
|
|
public RfidTransmitProtocol(String portName) : base (portName)
|
|
{
|
|
|
|
}
|
|
public override TransmitPortSettings GetTransmitPortSettings()
|
|
{
|
|
return new TransmitPortSettings(ProtSyncByte, _protLengthIndex, ProtAddLength,
|
|
_responseTimeoutMs, BaudRate, _receiveBufferFlushThreshold);
|
|
}
|
|
public override List<Byte> SpecificCrcCalc()
|
|
{
|
|
//returns an empty list of bytes to avoid filling of CRC in advance to the CRC calculation,
|
|
//because the RFID does not use the CRC filled up with 0x00, 0x00 to calculate itself
|
|
return new List<Byte>();
|
|
}
|
|
}
|
|
}
|
|
|
|
|