XiangTan_JiaoJie_Bak/DM_Weight/Port/MyMinaEncoder.cs

62 lines
1.8 KiB
C#

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
{
public class MyMinaEncoder : IMessageEncoder<MyBaseMessage>
{
private short accumulate = 0;
public void Encode(IoSession session, MyBaseMessage message, IProtocolEncoderOutput output)
{
IoBuffer input = IoBuffer.Allocate(12);
input.AutoExpand = true;
input.PutInt16(accumulate);
input.PutInt16(0);
input.PutInt16(6);
input.Put((byte)message.addr);
// 功能码
input.Put((byte)message.functionCode);
// 锁号
input.PutInt16(message.lockNo);
// 开锁时间
input.PutInt16(message.delay);
input.Flip();
accumulate += 1;
session.Write(input);
}
public void Encode(IoSession session, object message, IProtocolEncoderOutput output)
{
IoBuffer input = IoBuffer.Allocate(12);
input.AutoExpand = true;
if (message is MyBaseMessage)
{
var m = message as MyBaseMessage;
input.PutInt16(accumulate);
input.PutInt16(0);
input.PutInt16(6);
input.Put((byte)m.addr);
// 功能码
input.Put((byte)m.functionCode);
// 锁号
input.PutInt16(m.lockNo);
// 开锁时间
input.PutInt16(m.delay);
input.Flip();
accumulate += 1;
}
session.Write(input);
}
}
}