XiangTan_JiaoJie_Bak/DM_Weight/Port/MyMinaDecoder.cs

63 lines
2.0 KiB
C#

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)
{
DecodeReturn decodeReturn= new DecodeReturn();
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);
int c = input.Get(length - 3);
int d = input.Get(length - 4);
//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');
logger.Info($"查状态收到返回a:{a};b:{b};c:{c};d:{d}");
bool f = false;
if(a>0|| b>0||c>0||d>0)
{
f= true;
}
output.Write(f);
}
input.Position = length;
return MessageDecoderResult.OK;
}
public void FinishDecode(IoSession session, IProtocolDecoderOutput output)
{
}
}
public class DecodeReturn
{
public int CodeFunction;
public bool Flag;
}
}