Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: построить GUI
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Zelepuk
Прошу наставить на правильный путь.
Нужно написать GUI приложение для визуализации данных с измерительного прибора в "реальном времени"(так должно казаться оператору) и хранить принятые данные в виде таблицы.
Прибор: машина с Linux на борту. Отправляет данные по SSH в виде файла.
возможна ли реализация взаимодействия какого либо ssh клиента(как putty) и самописного GUI?
если встроить SSH клиент в GUI, то существуют ли открытые исходники ssh клиентов?
как проще всего реализовать задачу?
Писать хочу в CBuilder
XVR
Цитата
Отправляет данные по SSH в виде файла
Это как? SSH файлы не передает. Или имеется в виду SCP?
Цитата
существуют ли открытые исходники ssh клиентов?
OpenSSH например. Да и через command line клиента SSH тоже можно работать (через тот же OpenSSH например).
_pv
Цитата(Zelepuk @ Feb 11 2012, 13:43) *
как проще всего реализовать задачу?

забирать файл через запуская консольный psftp.
Tanya
Цитата(_pv @ Feb 13 2012, 12:39) *
забирать файл через запуская консольный psftp.

Или - http://winscp.net/eng/docs/lang:ru
sasamy
Цитата(Zelepuk @ Feb 11 2012, 10:43) *
возможна ли реализация взаимодействия какого либо ssh клиента(как putty) и самописного GUI?
если встроить SSH клиент в GUI, то существуют ли открытые исходники ssh клиентов?


Если хост-система Linux, то совсем просто - sshfs позволяет монтировать удаленные фс, в прикладной программе с GUI даже не нужно знать о существовании удаленного хоста, все будет как с обычными локальными файлами.
http://blog.sjinks.pro/administering/119-m...-ssh-in-ubuntu/
думаю если поискать то и для Windows должно быть что-то подобное - например в виде сетевого диска.
TigerSHARC
У меня текая же проблема.
Нужно чтобы моё GUI под Win при запуске скачивало файл по SSH и строило графики на основе данных из файла, графики нужно обновлять каждые 3 секунды и хранить базу данных полученных данных.
ЧТо для этого нужно? какие ключевые слова?
Cosmojam
sshfs for windows
libssh
TigerSHARC
Цитата(Cosmojam @ Feb 16 2012, 14:59) *
sshfs for windows
libssh


А можно ли обойтись малой кровью, если не имел дело с SSH? Я имею ввиду написать какой либо скрипт для ssh-клиента, чтобы тот скачивал файл куда нужно, а уже простейший GUI будет анализировать полученные файлы?
XVR
Цитата(TigerSHARC @ Feb 16 2012, 16:53) *
А можно ли обойтись малой кровью, если не имел дело с SSH? Я имею ввиду написать какой либо скрипт для ssh-клиента, чтобы тот скачивал файл куда нужно, а уже простейший GUI будет анализировать полученные файлы?

Можно конечно. Запускаете ssh клиента (от OpenSSH например), который запускает там скрипт (на perl например), который периодически читает файл и печатает его в stdout. У себя читаете stdout от запущеного ssh клиента, парсите его и показываете, что надо
Cosmojam
Цитата(XVR @ Feb 16 2012, 16:09) *
Можно конечно. Запускаете ssh клиента (от OpenSSH например), который запускает там скрипт (на perl например), который периодически читает файл и печатает его в stdout. У себя читаете stdout от запущеного ssh клиента, парсите его и показываете, что надо

Зачем так громоздко? scp как раз предназначен для копирования файлов. Запускается scp раз в дцать секунд и копирует файл во временный каталог программы.
Под Windows есть pscp http://www.chiark.greenend.org.uk/~sgtatha...y/download.html работает аналогично каноничному scp. Ради интереса попробовал только что с линуксовой машины скопировать файл на виндовую - работает. pscp.exe user@host:/path/to/file C:\path\to\local\copy
Правда не знаю как тут (в винде и pscp) с аутентификацией по ключам, но у самой софтины есть опасная опция -pw для указания пароля в открытом виде.
Zelepuk
Цитата(Cosmojam @ Feb 16 2012, 18:01) *
Зачем так громоздко? scp как раз предназначен для копирования файлов. Запускается scp раз в дцать секунд и копирует файл во временный каталог программы.


А как это сделать автоматически по Windows?
Cosmojam
Цитата(Zelepuk @ Feb 16 2012, 18:00) *
А как это сделать автоматически по Windows?

Например, парсить командную строку pscp в самой программе и вызывать с помощью ShellExecute() или аналогичного, Либо в bat-файл засунуть вызов pscp и вызывать из программы этот bat-файл.
Zelepuk
Цитата(Cosmojam @ Feb 16 2012, 21:19) *
Например, парсить командную строку pscp в самой программе и вызывать с помощью ShellExecute() или аналогичного, Либо в bat-файл засунуть вызов pscp и вызывать из программы этот bat-файл.

простите, но чувствую что я ламер(((
можете ли вы рассказать подробнее о том КАК парсить командню строку? про батник мне "более или менее" понятно.
Cosmojam
Так же как обычную строку. Сишный псевдокод:
Код
char *username = "vasya"; // спросим у пользователя эти данные
char *host = "192.168.1.150";
char *password = "1234";
char *remote_file = "/home/vasya/my_file";
char *local_file = "C:\\my_file";

char *pscp_dir = "C:\\Program\ files";

char *full_parameters = (char *)malloc(640); // 640 байт должно хватить всем

sprintf(full_parameters, "-pw %s %s@%s:%s %s", password, username, host, remote_file, local_file);

ShellExecute(NULL,"open","pscp.exe", full_parameters, pscp_dir, SW_HIDE);

Передавать пароль открытым текстом при вызове - плохая идея, поэтому рекомендую аутентификацию по ключам http://the.earth.li/~sgtatham/putty/0.60/h...c/Chapter5.html либо на крайняк на удалённом хосте создать юзера, у которого нет никаких прав кроме как чтение этого файла и логиниться под ним.
XVR
Цитата(Cosmojam @ Feb 16 2012, 18:01) *
Зачем так громоздко? scp как раз предназначен для копирования файлов. Запускается scp раз в дцать секунд и копирует файл во временный каталог программы.
Если ТС устроит скорость обновления 'раз в дцать секунд', то scp действительно лучше. Если же ему надо обновлять каждую секунду (или около того), то скорости работы scp может оказаться недостаточно.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.