You are here

BLT : 시간에 따라 변하는 결과 그리기...

어떻게 처리를 해야할지... 이상한 점도 있구요...
좀 도와주세요.

제가 구현하고자 하는 것은,
반복계산을 하는 win.exe를 실행한 후,
residues.txt를 쌓이는 데이터의 그래프를 그때 그때 그리고 싶습니다.
계산되는 결과가 수렴하는지 보고싶어서 그렇습니다.

아래의 코드는 프로그램의 일부 소스입니다.
계속 테스트 하면서 한 단계씩 나가고 있는 수준입니다.

BLT와 MDI를 사용해서 만들고 있습니다.
그래프는 MDI를 통해 만든 slave8에 그려지게 했습니다.
아직은 그때그때 호출하게 한 것도 아니고,
임시로 메뉴를 만들어 호출해 보면서 테스트 하고 있습니다.

현재 계산이 완료된 이후에는 graph_residue를 콜 하면 그래프가 그려집니다.
그런데 계산 도중에는 결과가 그려지지 않네요... 어떻게 된 것인지...
residues.txt파일은 계산 도중에 파일로 출력하게 했기 때문에
문제는 없어 보입니다.

혹시 좋은 아이디어 있으시면 도와주세요.

...
set cmd "./win.exe"
blt::bgexec execstatus \
        -onoutput ::StdoutMessage \
        -keepnewline true \
        $cmd &
...

proc StdoutMessage {msg} {
        puts $msg

        #graph_residue

}

proc graph_residue {} {
        namespace import blt::*
        namespace import -force blt::tile::*

        variable master1
        global slave8 fr19

        puts "Slave  created as [set slave8  [MDI::slave cli8 $master1 -height 400 -width 500 -closecmd simpleasthat2 \
                -title "
Residues of Plasma parameters"]]"

        set fr19 [frame $slave8.fr19]
        pack $fr19 -fill x

        set rgraph [blt::graph $fr19.graph -title "Residues"]
        pack $rgraph

        $rgraph xaxis configure -title "Iteration (#)"
        $rgraph yaxis configure -title "Residues"

        $rgraph grid on

        set outdata "./ju/residues.txt"
        set file [open $outdata r]
        set i 1
        while { [gets $file line] != -1 } {
                incr i 1
        } ;# 라인 수를 읽어들이기 위해
        close $file

        set arr_num [expr $i-1]
       # 라인 수 만큼 배열 할당
        vector x($arr_num) y0($arr_num) y1($arr_num) y2($arr_num)
        set outdata "./ju/residues.txt"
        set file [open $outdata r]
        set i 1
        while { [gets $file line] != -1 } {
                scan $line "%f %f %f %f %f" iter ni ne nN Te
                set x($i-1) $iter
                set y0($i-1) $ne
                set y1($i-1) $nN
                set y2($i-1) $Te
                incr i 1
        }
        close $file

        $rgraph element create ne -symbol square \
                -linewidth 1 \
                -color red \
                -xdata x -ydata y0
       
        $rgraph element create ni -symbol triangle \
                -linewidth 1 \
                -color green \
                -xdata x -ydata y1
       
        $rgraph element create Te -symbol cross \
                -linewidth 1 \
                -color blue \
                -xdata x -ydata y2
       
        # log scale.

        $rgraph axis configure x -logscale yes
        $rgraph axis configure y -logscale yes
}

첨부 파일파일 크기
Image icon proc.GIF57.75 KB