簡體   English   中英

如何使用RS485將數據傳輸到BeagleBone Black

[英]How to transfer data using RS485 to BeagleBone Black

我需要使用Rs485通過Modbus RTU將數據傳輸到BeagleBone Black。 要使用Modbus RTU,但我不知道如何在rs-485.HELP中切換rts

Modbus RTU數據傳輸代碼

如何添加RS485代碼,使用Modbus庫libmodbus

#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;
}

首先,我會檢查您的硬件是否支持自動(硬件)半雙工方向控制。

如果沒有,那么你可以看看這個答案 在那里,您可以獲得編譯和安裝libmodbus所需的所有詳細信息,並支持使用軟件切換線路。

我在我的RPi和CHIP計算機上使用此解決方案,但您應該可以立即在BBB上使用它。 如果GPIO文件名具有3位或4位數字,您可能會發現一個小警告(請查看/sys/class/gpio )。 如果是這種情況,請看一下這里 ,我不得不修改代碼來糾正這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM