2013-12-08 4 views
0

Я пишу код для простого моделирования. У нас есть 10 узлов и один приемный узел. Я хочу запустить симуляцию 5 раз. Единственное, что я знаю до сих пор, это то, что мне нужно написать set val(repeatTimes) 5, но я не знаю, как его использовать в симуляции. Кроме того, я добавляю две строки кода, как показано в соответствующем файле mac-simple.cc, чтобы получить время повторения от ns2. Затем я скомпилирую файл .cc и запускаю симуляцию. Однако, когда я запускаю файл .tcl, он показывает мне ошибку, что он не может найти переменную repeatTimes.Передача repeatTime из ns2 в .cc файл

Вот две строки кода, что я добавить под функцией Mac():

tcl.evalf("Mac/Simple set repeatTimes"); 
bind("repeatTimes", &repeatTimes); 

ли вы решение этой проблемы? Если вы не знаете решение, можете ли вы направить меня на форум/сайт, на котором я могу найти решение?

Заранее спасибо

ответ

1

ли bind в конструкторе для класса Mac/MncPrj объекта? (Вот где это должно быть.) Если это так, это должно быть доtcl.evalf звонок, потому что он определяет переменную с точки зрения OTcl; код для его чтения не будет работать (и будет генерировать ошибку Tcl - исключение на уровне Tcl - если вы попытаетесь это сделать) до тех пор, пока не будет выполнена привязка.

После того, как вы сделали привязку, вы можете прочитать переменный со стороны сценария Tcl с:

Mac/MncPrj set repeatTimes 

и записать его с:

Mac/MncPrj set repeatTimes $whateverTheValueIs 

Вы должны избежать сохранения значения в массив Tcl; это будет неживой копией и смутит вас. (Если вы не пойдете гораздо глубже в магию trace add variable, и это будет определенно смущает вас. Это меня иногда смущает!)

+0

Да, привязка для класса Mac/Simple. Проблема решена сейчас. спасибо – Amir

Смежные вопросы