• 16156阅读
  • 11回复

[提问]QT中实现modbus,使用libmodbus-master库,怎么实现 [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2013-07-23
关键词: modbus
我把库加到工程下边,然后呢?是调用函数还是怎样?还有连接串口那块儿?急求答案!谢谢高手答复

只看该作者 1楼 发表于: 2013-07-24
有会的吗?求解答
离线贵宾杨佳

只看该作者 2楼 发表于: 2013-07-24
modbus 没用过库。之前用tcp协议做了哈 modbus的测试。

只看该作者 3楼 发表于: 2013-07-25
回 2楼(贵宾杨佳) 的帖子
在QT中做的吗?不是有RTU模式的吗?

只看该作者 4楼 发表于: 2013-07-26
有做过的吗?给一点儿思路
离线feixiangxtu

只看该作者 5楼 发表于: 2013-07-29
libmodbus是一个跨平台的库,应该是用C写的,把源码加到你的工程中,直接调用函数就可以了!

只看该作者 6楼 发表于: 2013-07-29
回 5楼(feixiangxtu) 的帖子
我调用了,界面是两个lineEdit,一个输入请求帧,一个输出响应帧。但是出错了
int rc;
    int raw_req_length=0,req_length=0;
    QString in,out;
    QByteArray ba;
    const uint8_t *req=0;
    uint8_t *raw_req=0;
    ctx=modbus_new_rtu("COM4",19200,'N',8,1);
    in=ui->sendlineEdit->text();
    ba=in.toLocal8Bit();
    raw_req=(unsigned char*)ba.data();
    rc=modbus_send_raw_request( ctx,raw_req,raw_req_length);//发送的请求帧
    uint8_t *msg=0;
    modbus_mapping_t *mb_mapping=0;
   rc = modbus_reply(ctx,req,req_length,mb_mapping); //响应帧
   out=QString::fromUtf8((const char *)msg);
   ui->respondlineEdit->setText(out);
这样的话,运行起来,一输入请求帧点确定就出错,程序有问题。帮忙看看吧?

只看该作者 7楼 发表于: 2013-07-30
是用哪个函数调哪个呢,还是调一个解决所有问题?
离线feixiangxtu

只看该作者 8楼 发表于: 2013-07-31
你可以下载一个modbus的master或者slave工具跟你的测试程序联调。确保你发送的数据的正确性。

只看该作者 9楼 发表于: 2013-08-07
解决了,正在逐个实现modbus中的功能
离线johnnyqin

只看该作者 10楼 发表于: 2015-07-16
回 心雨星晴jay 的帖子
心雨星晴jay:解决了,正在逐个实现modbus中的功能 (2013-08-07 14:39) 

楼主是怎么解决的,跪求分享啊,如果价格合理也是可以付费的
离线asblue

只看该作者 11楼 发表于: 2016-03-03
楼主我也在做这个移植的 请问你怎么编译移植到aRM的啊 能共享一下吗?
快速回复
限100 字节
 
上一个 下一个