サイト内検索

検索

Shares

Table of Content

EthercatDevice.writeFoE()

[Ethercat Device]

説明

FoEを使うEtherCATスレーブデバイスにファイルを書き込みます。

構文

int writeFoE(char *filename, uint32_t password, void *data, uint32_t size, uint32_t timeout_ms = 2000);

媒介変数

  • [in] char *filename
    書込むファイルの数。
  • [in] uint32_t password
    32ビット・パスワード値。パスワード値がゼロの場合、パスワードが使用されていないことを示します。
  • [in] void *data
    書込むファイル・データ・バッファ。
  • [in] uint32_t size
    書込むファイル・データ・バッファのサイズ。
  • [in] uint32_t timeout_ms
    タイムアウト値で、ミリ秒単位。

戻り値

error codeを返します。返された値が 0の場合、この関数が正常に完了したことを示します。

備考

この関数は、 EthercatMaster::begin()が正常に実行された後で呼び出す必要があります。この関数はブロッキングされているため、循環コールバック関数内で呼び出すことができません。

#include "Ethercat.h"

EthercatMaster master;
EthercatDevice_Generic slave;

char source[] = {"source.bin"};
char filename[] = {"firmware.bin"};
uint32_t password = 0;
uint8_t *filedata;
int filesize;
FILE *file;

void setup() {
  master.begin();
  slave.attach(0, master);

  file = fopen(source, "rb");
  if (file != NULL) {
    fseek(file, 0, SEEK_END);
    filesize = ftell(file);
    fseek(file, 0, SEEK_SET);
    filedata = (uint8_t *)malloc(filesize);
    if (filedata != NULL) {
      fread(filedata, sizeof(uint8_t), filesize, file);
      slave.writeFoE(filename, password, filedata, filesize);
      free(filedata);
    }
    fclose(file);
  }
}

void loop() {
  // put your main code here, to run repeatedly:

}

詳細は EtherCAT Library User Manual QEC EtherCAT命令とAPI使用法参照

上部へスクロール