只知道客户机IP地址,怎么实现modbus功能,编码遇到瓶颈了,用的是libmodbus库,在linux系统下qt开发

 我来答
香颂有你
2015-12-04 · TA获得超过4318个赞
知道小有建树答主
回答量:1678
采纳率:0%
帮助的人:399万
展开全部
C#的行吗?可以的话我再给你大概的代码

拿读数据做例子,其他的功能重要改掉03功能码就行
先组成命令的byte数组

byte[] Dp = new byte[8];
byte[] DpC = new byte[6];
Dp[0] = 0x01;//这是表的地址,假定是01
Dp[1] = 0x03;//这是功能码,03是读寄存器数据
Dp[2] = 0x00;
Dp[3] = 0x03;//表的相应寄存器地址
Dp[4] = 0x00;
Dp[5] = 0x0C;//表的相应寄存器参数,根据功能码和表的不同,这几个编码有变化
for (int i = 0; i < 6; i++)
{
DpC[i] = Dp[i];
}
uint ValCRC;
ValCRC = CRC(DpC);//CRC为自己写的CRC-16校验码的函数,具体的实现这里不给要的话可以发给你
Dp[6] = (byte)(ValCRC % 256);
Dp[7] = (byte)(ValCRC / 256);

然后把这个数组发给串口,编程语言不同发送方式不同
还在程序可以设置波特率,校验什么的,编程语言不同设置方式也不同
然后接受数据,也是一个byte数组

然后自己解析数组,把需要的转化成10进制或者你需要的格式
大概就这样
追问
我用的没有这么麻烦,我只是用一下libmodbus库里面提供的接口,测试一下是否能够连通,我使用的编程语言使c++.还有一个问题就是这个库怎么引用过来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式