123456789101112131415161718192021222324252627282930313233343536 |
- using Parser.BinaryParser;
- using Parser.BinaryParser.MessageEntity;
- using WayneChina_IcCardReader_SinoChem.MessageEntity.Incoming;
- namespace WayneChina_IcCardReader_SinoChem.MessageEntity
- {
- /// <summary>
- /// 数据包头: 1 byte,0xFA
- /// 源地址: 1 byte,0x#0 / 0x#1, 地址的高4位为帧序列号,1~F之间循环,主从方独立序列号,如接收方收到相同的序列号,只应答ACK,不执行该命令
- /// 有效数据长度 : 2 bytes,BCD,数值为N+1
- /// 命令字: 1 byte,BCD
- /// 参数: N bytes
- /// 数据校验: 2 bytes,CRC校验,校验数据为“源地址”到“参数”,低字节在前
- /// 总长度: 7+N bytes
- /// </summary>
- public class MessageTemplateLookup : IMessageTemplateLookup
- {
- public MessageTemplateBase GetMessageTemplateByRawBytes(byte[] bytes)
- {
- if (bytes.Length == 7 && bytes[4] == 0x00)
- return new HeartBeat();
- else if (bytes.Length == 7 && bytes[4] == 0x01)
- return new ACK();
- else if (bytes.Length == 8 && bytes[4] == 0x02)
- return new CardReaderStateEvent();
- else if (bytes.Length == 18 && bytes[4] == 0x03)
- return new SignDataResponse();
- else if (bytes.Length == 8 && bytes[4] == 0x05)
- return new CardExternalCheckErrorRequest();
- else if (bytes.Length == 39 && bytes[4] == 0x06)
- return new CardOnlineVerificationRequest();
- return null;
- }
- }
- }
|