Передача repeatTime из ns2 в файл.cc

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

Вот две строки кода, которые я добавляю под функцию 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и это определенно смущает вас. Это меня иногда смущает!)

Другие вопросы по тегам