Автор: Andrey_Zee Дата: 08.12.2008 16:29
Написал программку которая с ком-порта читает данные, теперь хочу часть этих данных выводить в форму написанную в tcl/tk.... вот правда не знаю как это сделать.... может у кого-нибудь примерчик есть или так кто нибудь расскажет про реализацию подобного взаимодействия....
---
#!/bin/sh
# \
exec wish "$0"
# создаем метку, которая будет получать текст из переменной infVar
pack [label .inf -textvariable infVar]
pack [button .quit -text Quit -command exit]
# запускаем дочерний процесс, который будет "сливать инфу" скрипту
set pipeFD [open {| seq 100 | awk {{print;system("sleep 1";-);}}} r]
# привязываем onPipe к событию появления данных в канале
fileevent $pipeFD readable onPipe
# переводим канал в неблокирующий режим,
# чтобы не блокировать процесс интерпретатора и устанавливаем
# построчный режим буферизации
fconfigure $pipeFD -blocking 0 -buffering line
# чтение данных из канала
proc onPipe {} {
global pipeFD infVar
if {[gets $pipeFD line] >= 0} {
set infVar "line is $line"
} else {
if [catch {close $pipeFD} msg] {
tk_messageBox -message $msg -parent . -icon error
}
}
}
---
Учтите, что каналы в тикле могут быть двунаправленными
(open с флагом режима чтения/записи "r+";-).
Как вариант, можете запустить скрипт из вашей програмки,
но тогда вам нужно повесить обработчики событий на
stdin и/или stdout
ссылки теме
[www.tcl.tk]
[www.tcl.tk]
Удачи
PS
[community.livejournal.com]