2

モーニングスター サンセーバー MPPT のデータを読み取る ac プログラムを作成しようとしています。

これはネットで見つけた簡単なプログラムです。しかし、私のプログラムはレジスタからデータを読み取ることができません。

#include <stdlib.h>
#include <errno.h>
#include "src/modbus.h"
int main(void)
{
    modbus_t *ctx;
    uint16_t tab_reg[64];
    int rc;
    int i;

    ctx = modbus_new_rtu("/dev/ttyS0", 115200, 'N',8,1);
    if (ctx == NULL) {
       fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
       modbus_free(ctx);
       return -1;
    }

    rc = modbus_read_registers(ctx, 0, 10, tab_reg);
    if (rc == -1) {
      fprintf(stderr, "%s\n", modbus_strerror(errno));
      return -1;
    }

    for (i=0; i < rc; i++) {
      printf("reg[%d]=%d (0x%X)\n", i, tab_reg[i], tab_reg[i]);
    }

    modbus_close(ctx);
    modbus_free(ctx);
}

私にはうまくいきません。次のエラー メッセージが表示されます。

不正なファイル記述子

4

2 に答える 2

0

間違ったシリアル ポートから読み込もうとしていることが判明しました。

/dev/ttyS3 からの読み取りは機能しました。

後で、シリアルポートが /dev/ttyS0 .. /dev/ttyS9 からのものであることに気付きました

于 2013-10-11T20:49:40.633 に答える