Спасибо за информацию! Упокавал modBus-пакет в TFTP! То ли я где-то что-то пропустил, вообщем работать от этого лучше не стало. Решил поступить драконовским методом: поставил программу wireshark-win32-1.2.0.exe, поймал пакеты, проанализировал их, только после этого нашёл что нужно есчё сделать с пакетом перед тем как отправить, всё заработало!
Вот какое преобразование нужно совершить с modBus пакетом перед тем как упаковывать его в tftp-фрейм:
int tftp_pack(unsigned char *query, unsigned char *pack, int query_sz)
{
int len = 0;
pack[len++] = 0;
pack[len++] = 1;
pack[len++] = '=';
for (int i=0; i<query_sz; i++) {
pack[len++] = (query[i]>>4)>0x09?(query[i]>>4)-0x09+0x40:(query[i]>>4)+0x30;
pack[len++] = (query[i]&0x0F)>0x09?(query[i]&0x0F)-0x09+0x40:(query[i]&0x0F)+0x30;
}
pack[len++] = 0;
pack[len++] = 'o';
pack[len++] = 'c';
pack[len++] = 't';
pack[len++] = 'e';
pack[len++] = 't';
pack[len++] = 0;
return len;
}
может кому пригодится!