﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-远风工作室-随笔分类-OPNET仿真</title><link>http://www.cppblog.com/amazon/category/10586.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 03 Oct 2011 03:50:06 GMT</lastBuildDate><pubDate>Mon, 03 Oct 2011 03:50:06 GMT</pubDate><ttl>60</ttl><item><title>修改wlan_propdel管道程序调整无线通信半径</title><link>http://www.cppblog.com/amazon/archive/2010/05/28/116580.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Fri, 28 May 2010 03:07:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2010/05/28/116580.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/116580.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2010/05/28/116580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/116580.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/116580.html</trackback:ping><description><![CDATA[在做拓扑控制协议仿真时，需要使用wlan_tx和wlan_rx这一对收发机，并对节点通信半径进行动态调整，但如果使用较低版本的OPNET，源程序中可能没有对通信半径做明确限制。此时我们可以修改无线收发机的pipeline -&gt; wlan_propdel管道程序，达到动态调整通信半径的目的。<br><br>第一步，在wlan_mac进程模型中，添加Simulation&nbsp; Attributes -&gt; Wireless LAN Range (meters) 属性，类型为integer，缺省值为300。<br><br>第二步，改动wlan_propdel管道程序。以某一版本的该程序为例：<br>之前的：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">opnet.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_20_42_Open_Image onclick="this.style.display='none'; Codehighlighter1_20_42_Open_Text.style.display='none'; Codehighlighter1_20_42_Closed_Image.style.display='inline'; Codehighlighter1_20_42_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_20_42_Closed_Image onclick="this.style.display='none'; Codehighlighter1_20_42_Closed_Text.style.display='none'; Codehighlighter1_20_42_Open_Image.style.display='inline'; Codehighlighter1_20_42_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_20_42_Closed_Text>/**/</span><span id=Codehighlighter1_20_42_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">****&nbsp;constants&nbsp;****</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_45_92_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_92_Open_Text.style.display='none'; Codehighlighter1_45_92_Closed_Image.style.display='inline'; Codehighlighter1_45_92_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_45_92_Closed_Image onclick="this.style.display='none'; Codehighlighter1_45_92_Closed_Text.style.display='none'; Codehighlighter1_45_92_Open_Image.style.display='inline'; Codehighlighter1_45_92_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_45_92_Closed_Text>/**/</span><span id=Codehighlighter1_45_92_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;propagation&nbsp;velocity&nbsp;of&nbsp;radio&nbsp;signal&nbsp;(m/s)&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PROP_VELOCITY&nbsp;&nbsp;&nbsp;&nbsp;3.0E+08</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_125_217_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_217_Open_Text.style.display='none'; Codehighlighter1_125_217_Closed_Image.style.display='inline'; Codehighlighter1_125_217_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_125_217_Closed_Image onclick="this.style.display='none'; Codehighlighter1_125_217_Closed_Text.style.display='none'; Codehighlighter1_125_217_Open_Image.style.display='inline'; Codehighlighter1_125_217_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_125_217_Closed_Text>/**/</span><span id=Codehighlighter1_125_217_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;The&nbsp;variable&nbsp;defining&nbsp;a&nbsp;maximum&nbsp;range&nbsp;across&nbsp;which&nbsp;the&nbsp;station&nbsp;can&nbsp;communicate&nbsp;(meters)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;wlan_max_distance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;OPC_DBL_INFINITY;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_273_304_Open_Image onclick="this.style.display='none'; Codehighlighter1_273_304_Open_Text.style.display='none'; Codehighlighter1_273_304_Closed_Image.style.display='inline'; Codehighlighter1_273_304_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_273_304_Closed_Image onclick="this.style.display='none'; Codehighlighter1_273_304_Closed_Text.style.display='none'; Codehighlighter1_273_304_Open_Image.style.display='inline'; Codehighlighter1_273_304_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_273_304_Closed_Text>/**/</span><span id=Codehighlighter1_273_304_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">****&nbsp;pipeline&nbsp;procedure&nbsp;****</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#if</span><span style="COLOR: #000000">&nbsp;defined&nbsp;(__cplusplus)</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">Zhou_wlan_propdel&nbsp;(pkptr)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;Packet</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pkptr;<br><img id=Codehighlighter1_399_2235_Open_Image onclick="this.style.display='none'; Codehighlighter1_399_2235_Open_Text.style.display='none'; Codehighlighter1_399_2235_Closed_Image.style.display='inline'; Codehighlighter1_399_2235_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_399_2235_Closed_Image onclick="this.style.display='none'; Codehighlighter1_399_2235_Closed_Text.style.display='none'; Codehighlighter1_399_2235_Open_Image.style.display='inline'; Codehighlighter1_399_2235_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_399_2235_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_399_2235_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_prop_delay,&nbsp;end_prop_delay;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_prop_distance,&nbsp;end_prop_distance;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Compute&nbsp;the&nbsp;propagation&nbsp;delay&nbsp;separating&nbsp;the&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;radio&nbsp;transmitter&nbsp;from&nbsp;the&nbsp;radio&nbsp;receiver.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;FIN&nbsp;(wlan_propdel&nbsp;(pkptr));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Get&nbsp;the&nbsp;start&nbsp;distance&nbsp;between&nbsp;transmitter&nbsp;and&nbsp;receiver.&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;start_prop_distance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;op_td_get_dbl&nbsp;(pkptr,&nbsp;OPC_TDA_RA_START_DIST);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Get&nbsp;the&nbsp;end&nbsp;distance&nbsp;between&nbsp;transmitter&nbsp;and&nbsp;receiver.&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;end_prop_distance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;op_td_get_dbl&nbsp;(pkptr,&nbsp;OPC_TDA_RA_END_DIST);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Compute&nbsp;propagation&nbsp;delay&nbsp;to&nbsp;start&nbsp;of&nbsp;reception.&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;start_prop_delay&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;start_prop_distance&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;PROP_VELOCITY;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Compute&nbsp;propagation&nbsp;delay&nbsp;to&nbsp;end&nbsp;of&nbsp;reception.&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;end_prop_delay&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;end_prop_distance&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;PROP_VELOCITY;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;If&nbsp;the&nbsp;maximum&nbsp;transmission&nbsp;range&nbsp;of&nbsp;the&nbsp;station&nbsp;is&nbsp;not&nbsp;already&nbsp;set&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;then&nbsp;extract&nbsp;it&nbsp;from&nbsp;the&nbsp;user&nbsp;defined&nbsp;simulation&nbsp;attribute.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(wlan_max_distance&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;OPC_DBL_INFINITY)<br><img id=Codehighlighter1_1286_1532_Open_Image onclick="this.style.display='none'; Codehighlighter1_1286_1532_Open_Text.style.display='none'; Codehighlighter1_1286_1532_Closed_Image.style.display='inline'; Codehighlighter1_1286_1532_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1286_1532_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1286_1532_Closed_Text.style.display='none'; Codehighlighter1_1286_1532_Open_Image.style.display='inline'; Codehighlighter1_1286_1532_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1286_1532_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1286_1532_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(op_ima_sim_attr_exists&nbsp;(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wireless&nbsp;LAN&nbsp;Range&nbsp;(meters)</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;OPC_TRUE)<br><img id=Codehighlighter1_1365_1462_Open_Image onclick="this.style.display='none'; Codehighlighter1_1365_1462_Open_Text.style.display='none'; Codehighlighter1_1365_1462_Closed_Image.style.display='inline'; Codehighlighter1_1365_1462_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1365_1462_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1365_1462_Closed_Text.style.display='none'; Codehighlighter1_1365_1462_Open_Image.style.display='inline'; Codehighlighter1_1365_1462_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1365_1462_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1365_1462_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;op_ima_sim_attr_get&nbsp;(OPC_IMA_DOUBLE,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wireless&nbsp;LAN&nbsp;Range&nbsp;(meters)</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">wlan_max_distance);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">printf&nbsp;("wlan_max_distance&nbsp;is&nbsp;%f&nbsp;\n",&nbsp;wlan_max_distance);</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;If&nbsp;the&nbsp;starting&nbsp;and&nbsp;ending&nbsp;propagation&nbsp;distance&nbsp;is&nbsp;more&nbsp;than&nbsp;the&nbsp;maximum&nbsp;transmission&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;range&nbsp;then&nbsp;discard&nbsp;the&nbsp;packet&nbsp;in&nbsp;the&nbsp;pipeline&nbsp;stage.&nbsp;This&nbsp;will&nbsp;model&nbsp;the&nbsp;physical&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;transmission&nbsp;boundary&nbsp;of&nbsp;a&nbsp;wireless&nbsp;station.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(end_prop_distance&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;wlan_max_distance&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;start_prop_distance&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;wlan_max_distance)<br><img id=Codehighlighter1_1859_2014_Open_Image onclick="this.style.display='none'; Codehighlighter1_1859_2014_Open_Text.style.display='none'; Codehighlighter1_1859_2014_Closed_Image.style.display='inline'; Codehighlighter1_1859_2014_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1859_2014_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1859_2014_Closed_Text.style.display='none'; Codehighlighter1_1859_2014_Open_Image.style.display='inline'; Codehighlighter1_1859_2014_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1859_2014_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1859_2014_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Discard&nbsp;the&nbsp;packet&nbsp;if&nbsp;the&nbsp;destination&nbsp;is&nbsp;more&nbsp;than&nbsp;the&nbsp;specified&nbsp;range</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;op_td_set_int&nbsp;(pkptr,&nbsp;OPC_TDA_RA_MATCH_STATUS,&nbsp;OPC_TDA_RA_MATCH_IGNORE);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Place&nbsp;both&nbsp;propagation&nbsp;delays&nbsp;in&nbsp;packet&nbsp;transmission&nbsp;data&nbsp;attributes.</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;op_td_set_dbl&nbsp;(pkptr,&nbsp;OPC_TDA_RA_START_PROPDEL,&nbsp;start_prop_delay);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;op_td_set_dbl&nbsp;(pkptr,&nbsp;OPC_TDA_RA_END_PROPDEL,&nbsp;end_prop_delay);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;FOUT;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span></div>
<br>修改之后的，注意&nbsp;"<span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(wlan_max_distance&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;OPC_DBL_INFINITY)"那部分为添加语句</span>：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">opnet.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_20_42_Open_Image onclick="this.style.display='none'; Codehighlighter1_20_42_Open_Text.style.display='none'; Codehighlighter1_20_42_Closed_Image.style.display='inline'; Codehighlighter1_20_42_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_20_42_Closed_Image onclick="this.style.display='none'; Codehighlighter1_20_42_Closed_Text.style.display='none'; Codehighlighter1_20_42_Open_Image.style.display='inline'; Codehighlighter1_20_42_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_20_42_Closed_Text>/**/</span><span id=Codehighlighter1_20_42_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">****&nbsp;constants&nbsp;****</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_45_92_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_92_Open_Text.style.display='none'; Codehighlighter1_45_92_Closed_Image.style.display='inline'; Codehighlighter1_45_92_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_45_92_Closed_Image onclick="this.style.display='none'; Codehighlighter1_45_92_Closed_Text.style.display='none'; Codehighlighter1_45_92_Open_Image.style.display='inline'; Codehighlighter1_45_92_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_45_92_Closed_Text>/**/</span><span id=Codehighlighter1_45_92_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;propagation&nbsp;velocity&nbsp;of&nbsp;radio&nbsp;signal&nbsp;(m/s)&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PROP_VELOCITY&nbsp;&nbsp;&nbsp;&nbsp;3.0E+08</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_125_217_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_217_Open_Text.style.display='none'; Codehighlighter1_125_217_Closed_Image.style.display='inline'; Codehighlighter1_125_217_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_125_217_Closed_Image onclick="this.style.display='none'; Codehighlighter1_125_217_Closed_Text.style.display='none'; Codehighlighter1_125_217_Open_Image.style.display='inline'; Codehighlighter1_125_217_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_125_217_Closed_Text>/**/</span><span id=Codehighlighter1_125_217_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;The&nbsp;variable&nbsp;defining&nbsp;a&nbsp;maximum&nbsp;range&nbsp;across&nbsp;which&nbsp;the&nbsp;station&nbsp;can&nbsp;communicate&nbsp;(meters)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;wlan_max_distance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;OPC_DBL_INFINITY;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_273_304_Open_Image onclick="this.style.display='none'; Codehighlighter1_273_304_Open_Text.style.display='none'; Codehighlighter1_273_304_Closed_Image.style.display='inline'; Codehighlighter1_273_304_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_273_304_Closed_Image onclick="this.style.display='none'; Codehighlighter1_273_304_Closed_Text.style.display='none'; Codehighlighter1_273_304_Open_Image.style.display='inline'; Codehighlighter1_273_304_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_273_304_Closed_Text>/**/</span><span id=Codehighlighter1_273_304_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">****&nbsp;pipeline&nbsp;procedure&nbsp;****</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#if</span><span style="COLOR: #000000">&nbsp;defined&nbsp;(__cplusplus)</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">wlan_propdel&nbsp;(pkptr)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;Packet</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pkptr;<br><img id=Codehighlighter1_399_2235_Open_Image onclick="this.style.display='none'; Codehighlighter1_399_2235_Open_Text.style.display='none'; Codehighlighter1_399_2235_Closed_Image.style.display='inline'; Codehighlighter1_399_2235_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_399_2235_Closed_Image onclick="this.style.display='none'; Codehighlighter1_399_2235_Closed_Text.style.display='none'; Codehighlighter1_399_2235_Open_Image.style.display='inline'; Codehighlighter1_399_2235_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_399_2235_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_399_2235_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_prop_delay,&nbsp;end_prop_delay;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_prop_distance,&nbsp;end_prop_distance;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Compute&nbsp;the&nbsp;propagation&nbsp;delay&nbsp;separating&nbsp;the&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;radio&nbsp;transmitter&nbsp;from&nbsp;the&nbsp;radio&nbsp;receiver.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;FIN&nbsp;(wlan_propdel&nbsp;(pkptr));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Get&nbsp;the&nbsp;start&nbsp;distance&nbsp;between&nbsp;transmitter&nbsp;and&nbsp;receiver.&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;start_prop_distance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;op_td_get_dbl&nbsp;(pkptr,&nbsp;OPC_TDA_RA_START_DIST);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Get&nbsp;the&nbsp;end&nbsp;distance&nbsp;between&nbsp;transmitter&nbsp;and&nbsp;receiver.&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;end_prop_distance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;op_td_get_dbl&nbsp;(pkptr,&nbsp;OPC_TDA_RA_END_DIST);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Compute&nbsp;propagation&nbsp;delay&nbsp;to&nbsp;start&nbsp;of&nbsp;reception.&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;start_prop_delay&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;start_prop_distance&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;PROP_VELOCITY;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Compute&nbsp;propagation&nbsp;delay&nbsp;to&nbsp;end&nbsp;of&nbsp;reception.&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;end_prop_delay&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;end_prop_distance&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;PROP_VELOCITY;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;If&nbsp;the&nbsp;maximum&nbsp;transmission&nbsp;range&nbsp;of&nbsp;the&nbsp;station&nbsp;is&nbsp;not&nbsp;already&nbsp;set&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;then&nbsp;extract&nbsp;it&nbsp;from&nbsp;the&nbsp;user&nbsp;defined&nbsp;simulation&nbsp;attribute.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(wlan_max_distance&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;OPC_DBL_INFINITY)<br><img id=Codehighlighter1_1286_1532_Open_Image onclick="this.style.display='none'; Codehighlighter1_1286_1532_Open_Text.style.display='none'; Codehighlighter1_1286_1532_Closed_Image.style.display='inline'; Codehighlighter1_1286_1532_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1286_1532_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1286_1532_Closed_Text.style.display='none'; Codehighlighter1_1286_1532_Open_Image.style.display='inline'; Codehighlighter1_1286_1532_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1286_1532_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1286_1532_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(op_ima_sim_attr_exists&nbsp;(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wireless&nbsp;LAN&nbsp;Range&nbsp;(meters)</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;OPC_TRUE)<br><img id=Codehighlighter1_1365_1462_Open_Image onclick="this.style.display='none'; Codehighlighter1_1365_1462_Open_Text.style.display='none'; Codehighlighter1_1365_1462_Closed_Image.style.display='inline'; Codehighlighter1_1365_1462_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1365_1462_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1365_1462_Closed_Text.style.display='none'; Codehighlighter1_1365_1462_Open_Image.style.display='inline'; Codehighlighter1_1365_1462_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1365_1462_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1365_1462_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;op_ima_sim_attr_get&nbsp;(OPC_IMA_DOUBLE,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wireless&nbsp;LAN&nbsp;Range&nbsp;(meters)</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">wlan_max_distance);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">printf&nbsp;("wlan_max_distance&nbsp;is&nbsp;%f&nbsp;\n",&nbsp;wlan_max_distance);</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;If&nbsp;the&nbsp;starting&nbsp;and&nbsp;ending&nbsp;propagation&nbsp;distance&nbsp;is&nbsp;more&nbsp;than&nbsp;the&nbsp;maximum&nbsp;transmission&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;range&nbsp;then&nbsp;discard&nbsp;the&nbsp;packet&nbsp;in&nbsp;the&nbsp;pipeline&nbsp;stage.&nbsp;This&nbsp;will&nbsp;model&nbsp;the&nbsp;physical&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;transmission&nbsp;boundary&nbsp;of&nbsp;a&nbsp;wireless&nbsp;station.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(end_prop_distance&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;wlan_max_distance&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;start_prop_distance&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;wlan_max_distance)<br><img id=Codehighlighter1_1859_2014_Open_Image onclick="this.style.display='none'; Codehighlighter1_1859_2014_Open_Text.style.display='none'; Codehighlighter1_1859_2014_Closed_Image.style.display='inline'; Codehighlighter1_1859_2014_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1859_2014_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1859_2014_Closed_Text.style.display='none'; Codehighlighter1_1859_2014_Open_Image.style.display='inline'; Codehighlighter1_1859_2014_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1859_2014_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1859_2014_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Discard&nbsp;the&nbsp;packet&nbsp;if&nbsp;the&nbsp;destination&nbsp;is&nbsp;more&nbsp;than&nbsp;the&nbsp;specified&nbsp;range</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;op_td_set_int&nbsp;(pkptr,&nbsp;OPC_TDA_RA_MATCH_STATUS,&nbsp;OPC_TDA_RA_MATCH_IGNORE);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Place&nbsp;both&nbsp;propagation&nbsp;delays&nbsp;in&nbsp;packet&nbsp;transmission&nbsp;data&nbsp;attributes.</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;op_td_set_dbl&nbsp;(pkptr,&nbsp;OPC_TDA_RA_START_PROPDEL,&nbsp;start_prop_delay);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;op_td_set_dbl&nbsp;(pkptr,&nbsp;OPC_TDA_RA_END_PROPDEL,&nbsp;end_prop_delay);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;FOUT;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span></div>
<br>第三步，选择file -&gt; Compile，编译该程序。需要注意的是，如果将wlan_propdel改名为其他名字，如***_wlan_propdel，那么需要将函数名也修改为相应的***_wlan_propdel。<br><br><br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/116580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2010-05-28 11:07 <a href="http://www.cppblog.com/amazon/archive/2010/05/28/116580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自动配置节点ID号的方法</title><link>http://www.cppblog.com/amazon/archive/2010/01/27/106511.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Wed, 27 Jan 2010 02:40:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2010/01/27/106511.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/106511.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2010/01/27/106511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/106511.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/106511.html</trackback:ping><description><![CDATA[无线传感器或者无线局域网仿真需要使用wlan_mac模块作为链路层协议，在定义大量节点的时候如果手工设置每个节点的wlan_mac.Address属性（mac地址）是一件很麻烦的事情，而wlan_mac模块对该属性提供了一个Auto Assigned值（Auto Assigned=-2），但在实际的仿真中发现，设置为Auto Assigned的节点并没有自行设置有效的mac地址，而是仍为-2，此时源节点只能设置目的地址为Broadcast（-1）或者Random（-2）。<br>综上所述，本人想出了一个方法，将wlan_mac.Address属性与name属性取值相等，，而在添加节点的时候，节点的name属性是自动递增的，例如添加节点&#8221;1&#8221;后，下一个添加的节点名为&#8221;2&#8221;。这样就避免了手工设置的麻烦，具体如下：<br><br>在wlan_mac模块中的init函数中添加如下命令：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Determine&nbsp;the&nbsp;assigned&nbsp;MAC&nbsp;address.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>op_ima_obj_attr_get&nbsp;(my_objid,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Address</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">my_address);<br><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">*************************************************************************</span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(my_address&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;AUTO_ASSIGNED)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;op_ima_obj_attr_get&nbsp;(my_node_objid,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;my_node_name);<br>&nbsp;&nbsp;&nbsp;&nbsp;my_address&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name_aoti&nbsp;(my_node_name);<br>&nbsp;&nbsp;&nbsp;&nbsp;op_ima_obj_attr_set&nbsp;(my_node_objid,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wireless&nbsp;LAN&nbsp;MAC&nbsp;Address</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;my_address);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">*************************************************************************</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;Obtain&nbsp;an&nbsp;address&nbsp;handle&nbsp;for&nbsp;resolving&nbsp;WLAN&nbsp;MAC&nbsp;addresses.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/<br><font color=#000000>oms_aa_handle = oms_aa_address_handle_get ("MAC Addresses", "Address");<span style="COLOR: #000000"></span></font></span></div>
其中，在SV中定义my_node_name为int型变量，在HB中定义AUTO_ASSIGNED为-2。该代码定义：如果读出的my_address为-2，说明mac层地址仍未设置，则在此将其设置为节点name值，否则不做任何动作。<br><br>同理，在其他需要使用mac层地址的协议层中的初始化部分，添加如下代码：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(my_node_addr&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;AUTO_ASSIGNED)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;op_ima_obj_attr_get&nbsp;(op_topo_parent&nbsp;(op_id_self&nbsp;()),&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;my_node_name);<br>&nbsp;&nbsp;&nbsp;&nbsp;my_node_addr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name_aoti&nbsp;(my_node_name);<br>&nbsp;&nbsp;&nbsp;&nbsp;op_ima_obj_attr_set&nbsp;(op_topo_parent&nbsp;(op_id_self&nbsp;()),&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wireless&nbsp;LAN&nbsp;MAC&nbsp;Address</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;my_node_addr);<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br>注意：<br>1.在wlan_mac_intf层，同样需要使用到mac_address，但只在wait阶段需要对该属性进行读写，所以并不会读到错误的值，可以不管。<br>2.name_aoti函数：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;name_aoti&nbsp;(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">name)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;num&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">tmp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;name;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;FIN&nbsp;(name_aoti);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">tmp&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;num&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">tmp&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;FRET&nbsp;(num);<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/106511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2010-01-27 10:40 <a href="http://www.cppblog.com/amazon/archive/2010/01/27/106511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>定义Wireless LAN Range (meters)仿真属性</title><link>http://www.cppblog.com/amazon/archive/2010/01/26/106459.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Tue, 26 Jan 2010 05:41:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2010/01/26/106459.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/106459.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2010/01/26/106459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/106459.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/106459.html</trackback:ping><description><![CDATA[参考他人代码，发现在wlan_mac进程模型中的Simulation Attributes中定义了Wireless LAN Range (meters)属性，不知从何而来，如图所示。经查证该属性不存在于wlan_mac进程代码中，疑来自底层的管道阶段代码。<br><span style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang=EN-US><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/amazon/Wireless_LAN_Range.jpg" width=511 height=38><br><br><font size=3>后来发现，在wlan_port_tx.propdel model管道阶段的<span style="COLOR: red">wlan_propdel</span>程序中有这么一段代码：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;If&nbsp;the&nbsp;maximum&nbsp;transmission&nbsp;range&nbsp;of&nbsp;the&nbsp;station&nbsp;is&nbsp;not&nbsp;already&nbsp;set&nbsp;then&nbsp;extract&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;it&nbsp;from&nbsp;the&nbsp;user&nbsp;defined&nbsp;simulation&nbsp;attribute.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(wlan_max_distance&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;OPC_DBL_INFINITY)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(op_ima_sim_attr_exists&nbsp;(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wireless&nbsp;LAN&nbsp;Range&nbsp;(meters)</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;OPC_TRUE)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;op_ima_sim_attr_get&nbsp;(OPC_IMA_DOUBLE,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wireless&nbsp;LAN&nbsp;Range&nbsp;(meters)</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">wlan_max_distance);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;If&nbsp;the&nbsp;starting&nbsp;and&nbsp;ending&nbsp;propagation&nbsp;distance&nbsp;is&nbsp;more&nbsp;than&nbsp;the&nbsp;maximum&nbsp;transmission&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;range&nbsp;then&nbsp;discard&nbsp;the&nbsp;packet&nbsp;in&nbsp;the&nbsp;pipeline&nbsp;stage.&nbsp;This&nbsp;will&nbsp;model&nbsp;the&nbsp;physical&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;transmission&nbsp;boundary&nbsp;of&nbsp;a&nbsp;wireless&nbsp;station.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(end_prop_distance&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;wlan_max_distance&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;start_prop_distance&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;wlan_max_distance)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;op_td_set_int&nbsp;(pkptr,&nbsp;OPC_TDA_RA_MATCH_STATUS,&nbsp;OPC_TDA_RA_MATCH_IGNORE);<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br>该段代码的作用在于：当wlan_max_distance变量未具体定义时，如果Wireless LAN Range (meters)属性在仿真属性中定义了，那么将该属性的值作为最大的无线传输半径，超过该传输半径的数据包通通丢弃。<br><br></font></span>
<img src ="http://www.cppblog.com/amazon/aggbug/106459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2010-01-26 13:41 <a href="http://www.cppblog.com/amazon/archive/2010/01/26/106459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>broadcast模式导致wlan_mac层无法接收数据包的原因分析</title><link>http://www.cppblog.com/amazon/archive/2010/01/26/106451.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Tue, 26 Jan 2010 02:47:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2010/01/26/106451.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/106451.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2010/01/26/106451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/106451.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/106451.html</trackback:ping><description><![CDATA[网络模型：无线传感器网络，所有节点初始化时广播hello包。<br>节点模型：在OPNET自带的wlan_station_adv节点模型基础上进行改进，添加route模块。属性设置如下，wlan_mac_intf.destination_address &lt;- broadcast，wlan_mac.Address &lt;- Auto Assigned。<br>仿真结果：执行仿真运行无错误，想观察统计结果时发现没有结果可显示，这说明目的端接收不到数据包；当把destination_address改为Random或者固定地址后，仿真运行无错，也有统计结果显示，但是仍有一定量的数据包丢失。<br><br>调试纠错：<br>初步认定错误发生在在wlan_mac模块中，进一步跟踪调试发现，丢失数据报的原因在于执行wlan_physical_layer_data_arrival函数时，在if ((wlan_flags-&gt;rcvd_bad_packet == OPC_BOOLINT_ENABLED) || (accept == OPC_FALSE) ||(wlan_flags-&gt;collided_packet == OPC_BOOLINT_ENABLED))判断处进入内部代码段并最终执行了op_pk_destroy函数，<span style="COLOR: red">说明该</span><span style="COLOR: red">数据包因为在目的端与其他数据包冲突而导致丢失</span>。仔细分析上述原因后，猛然发现，之所以broadcast模式下全部数据包均丢失，是因为source模块中的Packet Interarrival Time设置为constant类型，所有节点均在同一时间发包，导致所有数据包冲突；而random模式下冲突较少的原因是因为数据包不是广播形式发送，同一目的端同时接受多个数据包的概率减小了，故只有一定几率下才会冲突。<br><br>修正方法：<br><span style="COLOR: red">将Packet Interarrival Time设置为exponenetial类型</span>即可，错开各节点的发包时间。<br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/106451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2010-01-26 10:47 <a href="http://www.cppblog.com/amazon/archive/2010/01/26/106451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OPNET中某些有用的preference设置</title><link>http://www.cppblog.com/amazon/archive/2009/06/24/88437.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Wed, 24 Jun 2009 08:34:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2009/06/24/88437.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/88437.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2009/06/24/88437.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/88437.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/88437.html</trackback:ping><description><![CDATA[<p>1.去掉运行仿真时的响声：<br>preference -&gt; 搜索beep的参数 -&gt; 将两项参数值均设成0。<br><br>2.ODB调试时窗口不自动关闭：<br>preference -&gt; console_exit_pause属性设定为true，这样需要输入两次Enter后才会关闭。<br><span style="COLOR: red">注意：取消debug模式而直接运行时，如果没有将console_exit_pause配置重新改为false，可能会出现运行完毕后close按钮为灰色的情况，必须注意。</span><br><br>3.OPNET与VC联调：<br>preference -&gt; bind_shobj_flags的值后面加上 /DEBUG<br>preference -&gt; comp_flags和comp_flags_cpp后面加上/Zi /Od<br>config simulation(advanced) -&gt; Envirement files -&gt; include两项：debug和force_compile<br>运行ODB，然后在VC下attach to process，添加op_runsim进程，开始联合调试。<br><br>4.删除和查看source directory<br>preference -&gt; mod_dir -&gt; 选择某项删除<br><br><br></p>
 <img src ="http://www.cppblog.com/amazon/aggbug/88437.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2009-06-24 16:34 <a href="http://www.cppblog.com/amazon/archive/2009/06/24/88437.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>"Output stream index (0) is unoccupied"错误处理</title><link>http://www.cppblog.com/amazon/archive/2009/06/13/87575.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Sat, 13 Jun 2009 06:10:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2009/06/13/87575.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/87575.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2009/06/13/87575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/87575.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/87575.html</trackback:ping><description><![CDATA[出现该问题的原因是：进程对应模块的output stream (0)没有定义，可以查看一下节点模型中该模块与其他模块之间的数据流向，通常存在两种情况：<br><br>1.没有0号输出流，此时或者修改进程代码中的错误，或者添加模块0号输出流即可。<br>2.有0号输出流但是依然报错，那么建议重新布线。<br>3.重新布线依然错误，那就找上帝吧&#8230;&#8230;<br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/87575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2009-06-13 14:10 <a href="http://www.cppblog.com/amazon/archive/2009/06/13/87575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>"Invalid Memory Acess"错误处理</title><link>http://www.cppblog.com/amazon/archive/2009/06/13/87574.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Sat, 13 Jun 2009 05:54:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2009/06/13/87574.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/87574.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2009/06/13/87574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/87574.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/87574.html</trackback:ping><description><![CDATA[&#8220;无效的内存访问&#8221;——这是一个让人很头疼的问题，错误很隐蔽，调试很麻烦，新手头一次遇到这个问题基本束手无策。出现该错误的主要原因在于读取内存越界，特别是使用指针和数组的时候。下面就曾经遇到的情况做一个简单的总结，以防遗忘。<br><br>1.在无线收发机（wlan_port_rx）中出现"Invalid Memory Acess"错误，提示"power model"管道阶段有误。利用VC联合调试发现异常出现在power model管道阶段的某数据包指针处，具体原因不明。将原模型的pipeline程序wlan_power换成dra_power，错误消失，程序正常运行。<br><br>2.子队列为空，但是没有做判别就使用op_subq_pk_remove读取包，由于子队列为空，所以将读不到任何数据，提示"Invalid Memory Acess"的错误。<br><br>3.定义数组大小为MAX_NUM，但是在写入数组时超出该数组边界，结果导致"Invalid Memory Acess"的错误。<br>PS：不管是OPNET编程还是VC下的编程，数组越界都是一个常见的问题，切记一定不能出现这种错误，不然会痛苦不堪&#8230;&#8230;<br><br><br><br><br><br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/87574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2009-06-13 13:54 <a href="http://www.cppblog.com/amazon/archive/2009/06/13/87574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wlan_mac_intf层"Current event is not a stream or access interrupt"错误处理</title><link>http://www.cppblog.com/amazon/archive/2009/06/10/87324.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Wed, 10 Jun 2009 07:40:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2009/06/10/87324.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/87324.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2009/06/10/87324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/87324.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/87324.html</trackback:ping><description><![CDATA[<p>在ad hoc网络仿真中使用src / routing&nbsp; / wlan_mac_intf / wlan_mac层次的节点模型，仿真时出现如下错误：<br><br>&lt;&lt;&lt; Recoverable Error &gt;&gt;&gt;<br>&nbsp; * Time:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15:12:26 &#208;&#199;&#198;&#218;&#200;&#253; &#193;&#249;&#212;&#194; 10 <br>&nbsp; * Product:&nbsp;&nbsp; modeler<br>&nbsp; * Program:&nbsp;&nbsp; op_runsim (Version 8.1.A PL8 Build 1575)<br>&nbsp; * System:&nbsp;&nbsp;&nbsp; Windows NT 5.1 Build 2600<br>&nbsp; * Package:&nbsp;&nbsp; process (Bestsink_wlan_mac_intf_test) at module (top.Office Network.ap_1.wlan_mac_intf)<br>&nbsp; * Function:&nbsp; Bestsink_wlan_mac_intf_test () [idle exit execs]<br>&nbsp; * Error:&nbsp;&nbsp;&nbsp;&nbsp; Current event is not a stream or access interrupt.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T (0), EV (194), MOD (top.Office Network.ap_1.wlan_mac_intf)</p>
<br>分析：<br>通过debugger查看得知stream interrupt并不在EV(194)处，而是更靠后的事件，但在仿真到EV(194)处就要读取stream上的包，从而导致&#8220;Current event is not a stream or access interrupt&#8221;的错误。<br><br>查找原因：<br>由T(0)可知错误出现在仿真开始时，此时除了src模块外routing&nbsp; / wlan_mac_intf / wlan_mac均无数据包发送的动作，所以暂定错误出现的原因是src模块在0.0s时发包，此时wlan_mac_intf模块的初始化尚未完毕，从而导致事件序列的混乱。<br><br>纠错方法：<br>将src模块的发包start time定为10.0s，避免其他模块未初始化完毕的尴尬局面。实验证明方法有效。<br><br>总结：<br>src模块的start time缺省值就是10.0s，本人擅做主张改成0.0s，结果出现错误。看来还是小心为上，不然倒霉的是自己&#8230;&#8230;<br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/87324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2009-06-10 15:40 <a href="http://www.cppblog.com/amazon/archive/2009/06/10/87324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>wlan_mac进程模型从8.0到8.1的迁移</title><link>http://www.cppblog.com/amazon/archive/2009/06/09/87147.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Tue, 09 Jun 2009 02:12:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2009/06/09/87147.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/87147.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2009/06/09/87147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/87147.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/87147.html</trackback:ping><description><![CDATA[因为OPNET各版本之间不能兼容，8.0版本下的进程模型迁移到8.1甚至更高版本后在编译时可能产生错误。wlan_mac进程模型就是其中一个例子，该进程从8.0迁移到8.1后编译会提示&#8220;error：WLAN_AIR_PROPAGATION_TIME未定义&#8221;的错误，此时在进程Header Block中添加如下宏：<br><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;WLANC_MSDU_HEADER_SIZE&nbsp;272&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">作用未知<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;WLAN_AIR_PROPAGATION_TIME&nbsp;0.000001&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">定义WLAN_AIR_PROPAGATION_TIME&nbsp;</span></div>
<br>添加后重新编译，没有错误，进程可以运行。<br><br><br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/87147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2009-06-09 10:12 <a href="http://www.cppblog.com/amazon/archive/2009/06/09/87147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OPNET中某些概念</title><link>http://www.cppblog.com/amazon/archive/2009/06/03/86667.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Wed, 03 Jun 2009 09:01:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2009/06/03/86667.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/86667.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2009/06/03/86667.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/86667.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/86667.html</trackback:ping><description><![CDATA[1.时延<br>传播时延：依赖于传播距离。<br>发送时延：第一个比特发送到最后一个比特传输结束，即包长度与发送速率之比。<br>排队时延：数据包在队列中等待时间。<br><br>2.远程监听<br>节点内：统计线或远程中断<br>节点外：远程中断<br><br>3.事件类型<br>自中断：可带ICI信息<br>流、统计线：可带ICI信息<br>故障：对节点或链路故障的异步通知（貌似很少用到）<br>接入（access）：进程向另一进程产生请求，可带ICI信息<br>远程中断（remote）：可带ICI信息<br>PS：使用ICI，在绑定事件调度之后应使用op_ici_install（OPC_NIL）进行拆除，以及op_ici_destroy（）进行销毁。若一个ICI多次使用，可不用op_ici_destroy进行销毁。<br><br>4.一些错误<br>process中状态里避免使用return，否则可能出错。<br>如果进程模型内部用到队列函数，如op_subq_stat等，必须用queue模块才行。<br>避免多个邻近节点同时发包，否则会导致mac层冲突加剧，时延过大。<br>PS：mac层使用CSMA/CA协议，应该有重传机制，但是根据多次试验分析，貌似没有重传一说&#8230;&#8230;<br><br>5.数据概率分布函数<br>dist_ptr = op_dist_load（dist_name，dist_arg0，dist_arg1）；<br>num = op_dist_outcome（dist_ptr）；<br><br>6.统计数据流<br>op_stat_reg（"Packet Size (bits)"，OPC_STAT_INDEX_NONE，OPC_STAT_GLOBAL）<br>其中变量1为统计量名，变量3规定全局或局部，返回值是句柄stat_handle。<br>op_stat_write（）：写入统计量<br>op_stat_local_read（instat_index）：instat_index是用数字表示的输入统计变量的索引值，范围是0～99<br>PS：可以一个源对应多个目的模块；可以多个模块同一统计量对应同一目的模块；每个统计数据流定义一个信号量，在流的src_stat属性。<br><br><br><br><br><br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/86667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2009-06-03 17:01 <a href="http://www.cppblog.com/amazon/archive/2009/06/03/86667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>license破解失败问题</title><link>http://www.cppblog.com/amazon/archive/2009/06/03/86659.html</link><dc:creator>远风</dc:creator><author>远风</author><pubDate>Wed, 03 Jun 2009 08:13:00 GMT</pubDate><guid>http://www.cppblog.com/amazon/archive/2009/06/03/86659.html</guid><wfw:comment>http://www.cppblog.com/amazon/comments/86659.html</wfw:comment><comments>http://www.cppblog.com/amazon/archive/2009/06/03/86659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/amazon/comments/commentRss/86659.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/amazon/services/trackbacks/86659.html</trackback:ping><description><![CDATA[安装OPNET8.1，使用license破解工具，结果出现Invalid Memory Access的错误，开始故障查找过程。<br><br>1.网线是否断开？<br>2.Windows防火墙及其他防火墙软件是否关闭？<br>3.破解license时OPNET是否打开？<br>4.是否第一次安装OPNET，若不是上一次卸载是否完全？<br>5.今天人品是不是很差？<br><br>以上错误均不成立的情况下，没有其他办法，安安心心重装系统吧，我日&#8230;&#8230;<br><br>
<img src ="http://www.cppblog.com/amazon/aggbug/86659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/amazon/" target="_blank">远风</a> 2009-06-03 16:13 <a href="http://www.cppblog.com/amazon/archive/2009/06/03/86659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>