Ок, в принципе я уже описал в двух словах, могу подробней.
На контроллере ведется архив, архиватор писал сам, в свое время столкнулся с этим вопросом, овен предлагает свое решение, но у меня там были какие-то проблемы, насколько я помню с вещественными числами, решено это сейчас или нет - не знаю. Пишу на карту, каждый день новая директория, название - текущая дата; внутри - каждый час файл, название - время.лог. Внутри строки определенного формата.
На делфи пишу приложение. Каждый час формируется файл скрипта, примерно такого вида:
Код:
option batch on
option confirm off
open scp://root:12345@192.168.84.6
cd /mnt/mmc/PLC5_20121010/
option transfer binary
get 0900.log D:\PLCArchives\PLC5\PLC5_20121010\
close
exit
Понятно, что даты и время вычисляются. Кому интересно что это значит на сайт winscp это описано. Далее запускаю winscp примерно так:
Код:
WinSCPPath:=WorkingDir+'WinSCP\winscp.com';
WinSCPCMD:='/console /script='+WorkingDir+'script.txt';
Rslt:=CreateProcess(PAnsiChar(WinSCPPath),
PAnsiChar(WinSCPCMD),
nil,
nil,
false,
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartUpInfo,
ProcessInfo);
Далее проверяю существование файла. На самом деле можно получать код с которым завершилось приложение (winscp.com), но у меня всегда возвращался отрицательный результат, как я понял это связано с тем, что не поддерживается команда groups. Далее разбираю файл и делаю что мне нужно. Еще стоит заметить, что при таком способе перед автоматизацией этого процесса один раз ручками подключаюсь к контроллеру, чтобы они обменялись ключами или как-то так. После это все норм работает. Все, кажется подробно