ページ 11

snd_mbx

Posted: 2020年7月22日(水) 14:36
by ymmt
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 を先頭番地とするメッセージパケットを
メッセージキューの末尾に入れます。この時、送信するメッセージパケットは、既にメールボッ
クスのメッセージキューにながれていてはなりません。」
とあるので何らかの方法で正常にデータを受け取れる方法がありますでしょうか?

Re: snd_mbx

Posted: 2020年7月27日(月) 11:58
by eForce技術担当
まずは、下記の内容を確認して頂けますでしようか。

viewtopic.php?f=12&t=38

Re: snd_mbx

Posted: 2020年7月27日(月) 14:12
by ymmt
ありがとうございます。
内容理解いたしました。