資源簡介
C#環境下的Modbus類,很精簡.原創.包括modbus ASCII和RTU兩種傳輸模式.當然也就有LRC和CRC兩種校驗方式咯
代碼片段和文件信息
using?System;
using?System.Data;
/*
?PDU:功能碼+數據
?ADU:地址碼+PDU+校驗碼
?*/
namespace?MODBUS
{
????public?class?clModbus
????{
????????public?byte?DevAddr;
????????public?byte?FunCode;
????????//public?UInt16?RegAddr;
????????//public?UInt16?RegCnt;
????????public?byte[]?MbBuf;
????????public?clModbus()
????????{
????????????MbBuf?=?new?byte[1?+?2?+?2?+?2?*?252?+?2?+?2?+?1];
????????????DevAddr?=?1;
????????????FunCode?=?3;
????????}
????????private?byte?ToAscii(int?v?int?pos)
????????{
????????????if?(pos?>=?8)?return?0;
????????????v?>>=?pos?*?4;
????????????v?&=?0xf;
????????????if?(v?>?9)?return?(byte)(v?-?10?+?‘A‘);
????????????else?return?(byte)(v?+?‘0‘);
????????}
????????public?UInt32?frameToAscii(byte[]?PduBuf?UInt32?Len)
????????{
????????????byte?lrctmp;
????????????UInt32?i;
????????????MbBuf[0]?=(byte)?‘:‘;
????????????MbBuf[1]?=?ToAscii(DevAddr?1);?MbBuf[2]?=?ToAscii(DevAddr?0);
????????????MbBuf[3]?=?ToAscii(FunCode?1);?MbBuf[4]?=?ToAscii(FunCode?0);
????????????lrc?=(byte)(DevAddr?+?FunCode);
????????????for?(i=0;?i?????????????{
????????????????tmp?=?PduBuf[i];
????????????????lrc?+=?tmp;
????????????????MbBuf[i*2+5]?=?ToAscii(tmp?1);?MbBuf[i*2+6]?=?ToAscii(tmp?0);
????????????}
????????????i?=?i?*?2?+?5;?lrc?=?(byte)(0xff-lrc+1);//取補碼
????????????MbBuf[i++]?=?ToAscii(lrc?1);?MbBuf[i++]?=?ToAscii(lrc?0);
????????????MbBuf[i++]?=?0x0d;?MbBuf[i++]?=?0x0a;
????????????return?i;
????????}
????????public?UInt32?frameToRtu(byte[]?PduBuf?UInt32?Len)
????????{
????????????byte?ucCRCHi?=?0xFF;
????????????byte?ucCRCLo?=?0xFF;
????????????int?iIndex;
????????????UInt32?i;
????????????byte[]?aucCRCHi?=
????????????{
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x01?0xC0?0x80?0x41
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x00?0xC1?0x81?0x40
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x01?0xC0?0x80?0x41
????????????????0x00?0xC1?0x81?0x40?0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x01?0xC0?0x80?0x41
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x00?0xC1?0x81?0x40
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x00?0xC1?0x81?0x40
????????????????0x01?0xC0?0x80?0x41?0x01?0xC0?0x80?0x41?0x00?0xC1?0x81?0x40
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x01?0xC0?0x80?0x41
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x00?0xC1?0x81?0x40
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x01?0xC0?0x80?0x41
????????????????0x00?0xC1?0x81?0x40?0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?
????????????????0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?0x01?0xC0?0x80?0x41
????????????????0x00?0xC1?0x81?0x40?0x00?0xC1?0x81?0x40?0x01?0xC0?0x80?0x41?
????????????????0x01?0
評論
共有 條評論