Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/20:3/3
2024/05/19:18/23

2024/03/21より398/1411
人気モジュール
No.1: フォーラム 21
No.2: QualNet概要 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット21

No.1:どっかの巡回ロボット18
No.2:Google巡回ロボット2
No.3:Baidu巡回ロボット1

日曜日からの合計
メイン
   Physical Layer Protocol Implementation & Model Development
     ノード間距離の出力について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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等の使い方を調べてみてはいかがでしょうか。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT