资源简介
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 < Len; 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
相关资源
- C# 调用win32 api函数-user32.dll详细说明
- C# 调用BarTender打印条码DEMO
- 大型比赛竞赛抽签系统 可打印 c# vs
- C#编写的Gerber查看器
- lua C# .Net4.0 vs2010 LuaInterface
- C#十六进制编辑器
- 明华URF-35H读卡器 C#读写源码 为大家
- C#文件流读取CSV文件
- c#读写PDF文件sql
- C# winform Socket大文件传输
- c#车牌识别系统附30张测试图片
- 《C#面向对象程序设计》源代码(CS)
- 金旭亮《C#面向对象程序设计》教案
- 试题库管理系统毕业论文(C#)源程序
- 学校网站原代码(C#.NET)
- C#-数据库操作技术-员工管理系统
- c#web开发入门经典
- C#与Matlab混合编程的几种方式
- c# 开发与 mysql数据库实现的增删改查
- C#异步操作 异步查询数据库 异步处理
- Basler相机通过IO触发源码
- [源代码] 《领域驱动设计 (C# 2008 实
- 松下PLC与C#通讯串口调试入门教程.z
- USB 继电器控制器 LCUS-1 保证能用 c#
- C# AES加密解密小工具
- C#圆形按钮,非常漂亮动态~~
- [精]C#仿QQ右下角弹出提示框()
- C#进程间通信-共享内存代码
- 有史以来最简单的三层(C#)
- vb调用c#编写的串口DLL文件(vb源码
评论
共有 条评论