modbus软件开发linux,Linux C开发之用modbus实现串口通讯

想要读取串口数据,modbus是一个很好用的第三方库。该库适用于windows和Linux,支持RTP、RTU等协议,基于Linux的开发较难一些,是我前段时间主要的研究方向。http://www.modbus.org/是modbus的主页,有兴趣的朋友可以查看一下它的特性。

废话不多说,速度开始。首先,你需要安装modbus的第三方库,sudo apt-get install libmodbus-dev,然后你就可以在Linux C代码里面写上#include 了。

第二步:连接串口并做一些参数配置。

m_modbus = modbus_new_rtu("/dev/ttyS0"/*serialPort*/,9600/*baud*/,78,8/*dataBits  */,1/*stopBits*/);//ttys0是Linux第一个串口,有的时候默认串口是ttys1,最好是枚举一下。在windows下,默认串口设备名为“COM1”

modbus_set_debug(m_modbus, 0);

第三步:设置等待时间,超过时间没连接上则报错。

struct timeval response_timeout;

response_timeout.tv_sec = 1;

response_timeout.tv_usec = 0;

modbus_set_response_timeout(m_modbus,&response_timeout);

第四步:从串口读取数据,一般是开关量数据,只有0、1两态。

int i;

if(m_modbus == NULL)

{

printf("No connection,check your device!\n");

return;

}

uint8_t dest[1024]; //setup memory for data

uint16_t * dest16 = (uint16_t *) dest;

memset(dest, 0, 1024);

int ret = -1; //return value from read functions

int is16Bit = 0;

modbus_set_slave(m_modbus, slave);

ret = modbus_read_input_bits(m_modbus, 0/*startAddress*/, 24/*noOfItems*/, dest);//24值得是读取端口数量

第五步:关闭modbus连接。

if(m_modbus) {

modbus_close(m_modbus);

modbus_free(m_modbus);

m_modbus = NULL;

}

这就是modbus操作的全部过程,怎么样,很简单吧?

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值