首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用RS485向BeagleBone黑传输数据

如何使用RS485向BeagleBone黑传输数据
EN

Stack Overflow用户
提问于 2019-06-19 08:53:50
回答 1查看 1.5K关注 0票数 0

我需要传输数据通过BeagleBone黑色通过Modbus RTU使用Rs485。使用Modbus RTU,但我不知道如何在rs-485中切换rts。

Modbus RTU数据传输代码

如何向其中添加RS485代码,以使用Modbus库libmodbus

代码语言:javascript
运行
复制
#include "modbus-rtu.h"
#include <stdio.h>
#include <errno.h>

int main(){
int connected;
    modbus_t *ctx;     
    uint16_t tab_reg[64];    
    int rc;     
    int i;
    ctx = modbus_new_rtu("/dev/ttyS4", 9600, 'N', 8, 1);     
    if(ctx == NULL) {   
        fprintf(stderr, "Unable to create the libmodbus context\n");

    }
    else {
        modbus_set_slave(ctx, 1);     
        modbus_set_debug(ctx, TRUE);     
        connected = modbus_connect(ctx);    
        printf("modbus_set_slave return: %d\n", rc);
        if (rc != 0)
        {
            printf("modbus_set_slave: %s \n"modbus_strerror(errno));        
        }
            rc = modbus_read_registers(ctx, 0, 3, tab_reg);      
        for (i = 0; i < rc; i++) {
            printf("reg[%d]=%d (0x%X)\n", i, tab_reg[i], tab_reg[i]);
        }
            if(rc == -1)
            {
                fprintf(stderr, "%s\n", modbus_strerror(errno));
            }               
        modbus_close(ctx);     
        modbus_free(ctx);     
    }
return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2019-06-19 16:33:09

首先,我会检查你的硬件是否支持自动(硬件)半双工方向控制.

如果不是,那么您可以看看这个回答。在这里,您有编译和安装libmodbus所需的所有细节,支持使用软件切换行。

我正在使用这个解决方案在我的RPi和芯片电脑,但你应该能够立即使用它在你的血脑屏障。如果GPIO文件名有一个3或4位数的数字(查看/sys/class/gpio),您可能会发现一个小警告。如果是这样的话,请看一下这里,我不得不修改代码来纠正这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56663732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档