snd_mbx

弊社RTOS「μC3/Compact」に関する書込みはこちらにお願いします。
返信する
ymmt
記事: 6
登録日時: 2020年6月10日(水) 16:29

snd_mbx

投稿記事 by ymmt » 2020年7月22日(水) 14:36

snd_mbx関数について教えてください。

現在STM32F4にμC3/Compactを入れて開発をしております。

rcv_mbx関数を実施前の受信を待っているタスクがない状態でsnd_mbxを実施すると第2引数の
「T_MSG* pk_msg メールボックスへ送信するメッセージパケットの先頭番地」
ここの番地の先頭4バイトが0になってしまいます。

例えば
typedef struct MSG{
int a;
int b;
}_MSG;
_MSG msg;

msg.a = 1234;
msg.b = 5678;
snd_mbx(MSG_ID,(T_MSG*)msg);

とrcv_mbxを実行前に行うと msg.a が0になってしまいます。
そしてその後、rcv_mbxを実行するとこのデータを受け取れるのですが、msg.a = 0;msg.b = 5678;
となります。

これは使い方として、rcv_mbxの前にsnd_mbxを実行してはいけないのでしょうか?

それともユーザーマニュアルのsnd_mbxの項目に
「受信を待っているタスクがない場合には、pk_msg を先頭番地とするメッセージパケットを
メッセージキューの末尾に入れます。この時、送信するメッセージパケットは、既にメールボッ
クスのメッセージキューにながれていてはなりません。」
とあるので何らかの方法で正常にデータを受け取れる方法がありますでしょうか?

アバター
eForce技術担当
記事: 167
登録日時: 2014年4月24日(木) 14:18

Re: snd_mbx

投稿記事 by eForce技術担当 » 2020年7月27日(月) 11:58

まずは、下記の内容を確認して頂けますでしようか。

viewtopic.php?f=12&t=38

ymmt
記事: 6
登録日時: 2020年6月10日(水) 16:29

Re: snd_mbx

投稿記事 by ymmt » 2020年7月27日(月) 14:12

ありがとうございます。
内容理解いたしました。

返信する