using log4net; using Mina.Core.Buffer; using Mina.Core.Session; using Mina.Filter.Codec; using Mina.Filter.Codec.Demux; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DM_Weight.Port { internal class MyMinaDecoder : IMessageDecoder { private readonly ILog logger = LogManager.GetLogger(typeof(SocketHelper)); public MessageDecoderResult Decodable(IoSession session, IoBuffer input) { logger.Info("Decodable"); return MessageDecoderResult.OK; } public MessageDecoderResult Decode(IoSession session, IoBuffer input, IProtocolDecoderOutput output) { logger.Info("Decode"); int length = input.Remaining; byte functionCode = input.Get(7); if (functionCode == 4) { int a = input.Get(length - 2); int b = input.Get(length - 1); Console.WriteLine("a"); Console.WriteLine(a); Console.WriteLine("b"); Console.WriteLine(b); var r = Convert.ToString((a >> 14) | (b << 2), 2).PadLeft(18, '0').ToCharArray(); bool f = r.Any(c => c == '1'); output.Write(f); } input.Position = length; return MessageDecoderResult.OK; } public void FinishDecode(IoSession session, IProtocolDecoderOutput output) { } } }