[問題] c++bind後如何在tcl中取值?

看板Network_Sim作者 (yzvvs)時間15年前 (2009/10/07 14:40), 編輯推噓3(3017)
留言20則, 3人參與, 最新討論串1/1
小弟最近被這個問題卡很久沒進度 麻煩各位能幫幫我 我的研究是LEACH,我想在wireless-phy.cc中 bind一個變數然後取值 我測試的寫法是在wireless-phy.h中宣告一個int變數test_cc 接著在wireless-phy.cc的WirelessPhy::WirelessPhy()中給初值0 以及bind("test_tcl",&test_cc); 然後在uamps.tcl中寫一行: Phy/WirelessPhy set test_tcl 0 接著ns-leach.tcl的Application/LEACH instproc init args {}中有加了 $self instvar mywphy testvar set mywphy [new Phy/WirelessPhy] set testvar 0 而在其他程式區塊中寫了測試取值的程式碼如下: $self instvar mywphy testvar set testvar [$mywphy set test_tcl] set outf [open $opt(dirname)/test_tcl.txt a] puts $outf "testvar = $testvar " close $outf ./leach_test後卻會 run到一半就停止了,我看停止的地方好像是執行到 set mywphy [new Phy/WirelessPhy]這段就停了 但是看out檔跟err檔卻沒有錯誤訊息,所以想問各位是不是我哪邊寫錯了? 網路上爬了一堆文,但....還是沒結果....囧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.123.44

10/07 17:00, , 1F
我測試是OK的,可以取得test_cc,我是沒開檔寫入,而是
10/07 17:00, 1F

10/07 17:01, , 2F
直接印出來看,數值沒錯,且有bind成功!
10/07 17:01, 2F

10/07 17:03, , 3F
想正常因該都有錯誤訊息吧,你所謂的run到一半就停止?
10/07 17:03, 3F

10/07 17:03, , 4F
只執行完? 還是卡住?
10/07 17:03, 4F

10/07 17:17, , 5F
感謝你還幫我測試,我是執行到一半就停住,我有試過把
10/07 17:17, 5F

10/07 17:17, , 6F
set mywphy [new Phy/WirelessPhy]這行註解掉就可以跑完了
10/07 17:17, 6F

10/07 17:19, , 7F
我的停住.....應該就是卡住,苦惱的就是沒任何訊息,out檔中
10/07 17:19, 7F

10/07 17:20, , 8F
只有原本就會印的那些東西。
10/07 17:20, 8F

10/07 17:37, , 9F
看out檔似乎是執行完findBestCluster {}才停的,因為裡面的
10/07 17:37, 9F

10/07 17:38, , 10F
puts還有印到,接下來就沒了
10/07 17:38, 10F

10/07 19:08, , 11F
bind的值不是應該在 ns-default.tcl 中給初始預設值?
10/07 19:08, 11F
我把印出檔案那段挪到程式停止前那邊印(即findBestCluster {}中),分別設初值 (我說的是指 Phy/WirelessPhy set test_tcl 0 這段),結果是 uamps.tcl ns-default.tcl 初值都沒設=>印出的值為.CC中的初值,err有waring uamps.tcl有設 ns-default.tcl沒設 =>印出的值為uamps.tcl中設的初值,err沒waring uamps.tcl沒設 ns-default.tcl有設 =>印出的值為.CC中的初值,err有waring uamps.tcl ns-default.tcl 兩個都有設=>印出的值為uamps.tcl中設的初值,err沒waring (waring 都是 no class variable Phy/WirelessPhy::test_tcl) 不過我在 .CC 檔中的 WirelessPhy::sendDown 一進去就隨便設一個值給 test_cc ,怎嚜印出的都只有初值,快瘋掉了~XD 而且還是沒辦法執行完程式,還是卡住在同個地方啊.....囧 ※ 編輯: yzvvs 來自: 59.112.83.40 (10/07 23:07)

10/08 02:01, , 12F
印象中,ns-default.tcl 有沒有設定出值因該不影響卡住!
10/08 02:01, 12F

10/08 02:05, , 13F
在sendDown設值,我想因該還沒執行到那邊吧因為你卡住
10/08 02:05, 13F

10/08 02:10, , 14F
把set mywphy [new Phy/WirelessPhy]註解掉?那你後面會印
10/08 02:10, 14F

10/08 02:11, , 15F
出什麼東西? 我指testvar的值(印那段字串嗎??)
10/08 02:11, 15F
對不起,我沒說清楚,在測試 set mywphy [new Phy/WirelessPhy] 這行時我已經先把 要測試印出的那五行註解掉了,單純只看 set mywphy [new Phy/WirelessPhy] 有註解 跟沒註解掉的差異而已,差別就是沒這行跑的完,有這行則卡住,所以是沒印值的。

10/08 02:23, , 16F
不然就不要用bind.. 直接建立command回傳值
10/08 02:23, 16F

10/08 02:23, , 17F
我測試沒問題,你也沒err可以看,還真難幫上忙!
10/08 02:23, 17F

10/08 02:24, , 18F
只能建議你... 重新安裝... 再試一次看看了@@
10/08 02:24, 18F

10/08 02:26, , 19F
推kivava!! 我也是都用command回傳!!
10/08 02:26, 19F
非常感謝你們的協助,我在試試看 command,其實我程式滿弱的XD,command怎麼寫 應該要在花時間看一下了,再不行就只好重新安裝了,哭哭了我~ ※ 編輯: yzvvs 來自: 140.118.123.44 (10/08 11:09)

10/08 12:00, , 20F
突然想到用command不是也會用到set myphy [new P...]這行?
10/08 12:00, 20F
文章代碼(AID): #1Ap3VwaI (Network_Sim)
文章代碼(AID): #1Ap3VwaI (Network_Sim)