![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
toto | 投稿日時: 2013/12/12 16:40 |
新米 ![]() ![]() 登録日: 2013/11/5 居住地: 投稿: 6 |
ノード間距離の出力について ノード間距離の出力について質問させていただきます。
現在phy_802_15_4.cppのPhy802_15_4SignalArrivalFromChannel関数内で 時系列ログとして[受信電力、送信ノードID、受信ノードID、ノード間距離] を出力させようとプログラムを書いています。 { char clockStr[MAX_STRING_LENGTH]; TIME_PrintClockInSecond(getSimTime(node),clockStr); printf("%s rxNode %d txNode %d rxMsgPower_dBm %e\n",clockStr,node->nodeId,propRxInfo->txNodeId,IN_DB(rxPower_mW)); fflush(stdout); } 上記のプログラムを追加することで受信電力、送信ノードID 、受信ノードIDを出力することはできました。 次にpropagation.hの PropPathProfile構造体の中にdistanceというメンバを見つけたので、ヘッダファイルをphy_802_15_4.cppにインクルードしました。そして先ほどのPhy802_15_4SignalArrivalFromChannelの変数にPropPathProfileを追加し、printfの中にdistanceを書いたのですがビルド時にエラーが出てしまいます。 原因として考えられるものがありましたらご指摘いただきたいです。 最終的にプログラムは以下のように記述しました。 void Phy802_15_4SignalArrivalFromChannel( Node* node, int phyIndex, int channelIndex, PropRxInfo *propRxInfo, PropPathProfile *pathProfile) { PhyData* thisPhy = node->phyData[phyIndex]; PhyData802_15_4* phy802_15_4 = (PhyData802_15_4*) thisPhy->phyVar; if ((phy802_15_4->mode != PHY_TRX_OFF)) { double rxPower_mW = NON_DB(ANTENNA_GainForThisSignal(node, phyIndex, propRxInfo) + propRxInfo->rxPower_dBm); { char clockStr[MAX_STRING_LENGTH]; TIME_PrintClockInSecond(getSimTime(node),clockStr); printf("%s rxNode %d txNode %d rxMsgPower_dBm %e %d\n",clockStr,node->nodeId,propRxInfo->txNodeId,IN_DB(rxPower_mW),pathProfile->distance); fflush(stdout); } |
marimo | 投稿日時: 2013/12/13 11:29 |
常連 ![]() ![]() 登録日: 2005/9/22 居住地: 投稿: 49 |
Re: ノード間距離の出力について ※試してはいないので、ビルドするときの一般的なコメントです。
ヘッダインクルードを追加してエラーがでるときは、一旦クリーンしてビルドすると解決することがあります。ご参考までに。 |
toto | 投稿日時: 2013/12/14 17:36 |
新米 ![]() ![]() 登録日: 2013/11/5 居住地: 投稿: 6 |
Re: ノード間距離の出力について marimoさん
ご指摘の通り一度クリーンしてからビルドしてみましたが、 結果は同じものでエラーが出てしまいました。 phy_802_15_4.h,phy.h,phy.cpp内の PHY_SignalArrivalFromChannel関数の変数にも[PropPathProfile *pathProfile]を追加し、クリーン→ビルドを行いましたが、ビルド後に以下のような警告、エラーが表示されてしまいます。 1>------ ビルド開始: プロジェクト: 20131211, 構成: Debug Win32 ------ 1>メイクファイル プロジェクト動作を実行しています。 1>Microsoft(R) Program Maintenance Utility Version 9.00.30729.01 1>Copyright (C) Microsoft Corporation. All rights reserved. 1> cl /nologo /Fe..\bin\qualnet.exe /Ox /Ob2 ..\main\temp.lib ..\main\libraries.lib ../kernel/obj/main.o-windows-vc9 /link ../lib/windows/libexpat.lib ../lib/windows/pthreadVC2.lib oldnames.lib kernel32.lib user32.lib netapi32.lib advapi32.lib gdi32.lib comdlg32.lib comctl32.lib ole32.lib oleaut32.lib ..\license_dir\windows\lmgr.lib ws2_32.lib 1>cl : コマンド ライン warning D9024 : ソースファイルの種類 '../kernel/obj/main.o-windows-vc9' は認識できませんでした。オブジェクト ファイルと仮定します。 1>temp.lib(propagation_private.o-windows-vc9) : error LNK2019: 未解決の外部シンボル "void __cdecl PHY_SignalArrivalFromChannel(struct Node *,int,int,struct PropRxInfo *)" (?PHY_SignalArrivalFromChannel@@YAXPAUNode@@HHPAUPropRxInfo@@@Z) が関数 "void __cdecl PROP_ProcessEvent(struct Node *,class Message *)" (?PROP_ProcessEvent@@YAXPAUNode@@PAVMessage@@@Z) で参照されました。 1>..\bin\qualnet.exe : fatal error LNK1120: 外部参照 1 が未解決です。 1>NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\cl.EXE"' : リターン コード '0x2' 1>Stop. 1>Project : error PRJ0019: ツールはエラー コードを返しました : "メイクファイル プロジェクト動作を実行しています。" 1>ビルドログは "file://c:\snt\qualnet\5.2\program\Debug\BuildLog.htm" に保存されました。 1>20131211 - エラー 4、警告 1 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== |
marimo | 投稿日時: 2013/12/20 12:13 |
常連 ![]() ![]() 登録日: 2005/9/22 居住地: 投稿: 49 |
Re: ノード間距離の出力について なるほど、PHY_SignalArrivalFromChannel関数の引数を変更していたのですね。
この関数は確か呼び出し元がソースコード非公開の部分に埋もれているので、引数変更はできないと思います。ビルドエラーはそのせいですね。 送信元ノードの位置座標を取得することができれば、自ノードの位置座標からノード間距離は求められそうです。 (送信元のノードIDはpropRxInfo->txNodeIdで取れるはず) 試してはいませんが、ノードの位置座標を取得する方法についての投稿がありました。 http://simweb.kke.co.jp/qualnet/forum/modules/newbb/viewtopic.php?viewmode=thread&topic_id=343&forum=24&post_id=1274#1274 ご参考になれば幸いです。 |
tsuna | 投稿日時: 2013/12/20 12:32 |
新米 ![]() ![]() 登録日: 2007/2/9 居住地: 投稿: 2 |
Re: ノード間距離の出力について COORD_CalcDistanceという関数で、距離が取得できます。
使い方は、例えばmac_link.cpp等の使い方を調べてみてはいかがでしょうか。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |