123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- using MECF.Framework.Common.Communications;
- using System.Collections.Generic;
- namespace MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Pumps.OsakaPumpTGkine
- {
- public abstract class OsakaPumpTGkineHandler : HandlerBase
- {
- public OsakaPumpTGkine Device { get; }
- private static byte _slaveID = 0x01;
- protected OsakaPumpTGkineHandler(OsakaPumpTGkine device, byte addressHigh, byte addressLow)
- : base(BuildMessage(new byte[] { addressHigh, addressLow }))
- {
- Device = device;
- }
- protected OsakaPumpTGkineHandler(OsakaPumpTGkine device, byte addressHigh, byte addressLow, byte valueHigh, byte valueLow)
- : base(BuildMessage(new byte[] { addressHigh, addressLow }, new byte[] { valueHigh, valueLow }))
- {
- Device = device;
- }
- private static byte[] BuildMessage(byte[] address)
- {
- List<byte> result = new List<byte>() { 0x02, _slaveID, 0x00, 0x09, 0x52, 0x00, 0x02 };
- if (address != null)
- {
- foreach (byte data in address)
- result.Add(data);
- }
- result.AddRange(new List<byte>() { 0x00, 0x02 });
- result.Add(CalcSum(result));
- result.AddRange(new List<byte>() { 0x03, 0x03 });
- return result.ToArray();
- }
- private static byte[] BuildMessage(byte[] address, byte[] datas)
- {
- List<byte> result = new List<byte>() { 0x02, _slaveID, 0x00, 0x0A, 0x57, 0x00, 0x02 };
- if (address != null)
- {
- foreach (byte data in address)
- result.Add(data);
- }
- result.Add(CalcSum(result));
- if (address != null)
- {
- foreach (byte data in datas)
- result.Add(data);
- }
- result.Add(CalcSum(result));
- result.AddRange(new List<byte>() { 0x03, 0x03 });
- return result.ToArray();
- }
- public override bool HandleMessage(MessageBase msg, out bool transactionComplete)
- {
- OsakaPumpTGkineMessage response = msg as OsakaPumpTGkineMessage;
- ResponseMessage = msg;
- if (response.IsResponse)
- {
- SetState(EnumHandlerState.Acked);
- SetState(EnumHandlerState.Completed);
- transactionComplete = true;
- Device.NoteError(null);
- return true;
- }
- transactionComplete = false;
- return false;
- }
- public static byte CalcSum(List<byte> value)
- {
- byte ret = 0x00;
- for (var i = 0; i < value.Count; i++)
- {
- ret += value[i];
- }
- ret = (byte)~ret;
- ret++;
- return ret;
- }
- }
- public class OsakaPumpTGkineLowerReadHandler : OsakaPumpTGkineHandler
- {
- public byte ResultHigh { get; set; }
- public byte ResultLow { get; set; }
- public OsakaPumpTGkineLowerReadHandler(OsakaPumpTGkine device, byte addressHigh, byte addressLow)
- : base(device, addressHigh, addressLow)
- {
- }
- public override bool HandleMessage(MessageBase msg, out bool handled)
- {
- if (base.HandleMessage(msg, out handled))
- {
- var result = msg as OsakaPumpTGkineMessage;
- ResultHigh = result.RawMessage[5];
- ResultLow = result.RawMessage[6];
- Device.NoteLowerReadDone();
- }
- return true;
- }
- }
- public class OsakaPumpTGkineLowerWriteHandler : OsakaPumpTGkineHandler
- {
- public OsakaPumpTGkineLowerWriteHandler(OsakaPumpTGkine device, byte addressHigh, byte addressLow, byte valueHigh, byte valueLow)
- : base(device, addressHigh, addressLow, valueHigh, valueLow)
- {
- }
- public override bool HandleMessage(MessageBase msg, out bool handled)
- {
- if (base.HandleMessage(msg, out handled))
- {
- var result = msg as OsakaPumpTGkineMessage;
- Device.NoteLowerWriteDone();
- }
- return true;
- }
- }
- }
|