[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使用法参照