現在、私はプロジェクトを進めています。私は、コンピュータ上のプログラムからシリアル経由で接続された核F303REマイクロコントローラを備えたラズベリーPIにUDPメッセージを送信しています。 マイクロコントローラには1つのセンサーがあり、1つは接続されています。センサーの電圧が特定の値以下に下がると、LEDが点灯します。 私のプログラムでは、ラズベリーのPIにUDPメッセージを送り、シリアルポートとマイクロコントローラに転送します。プログラム内のトリガー値"d"をに設定すると、1回だけ動作します。初めて設定した後、再び設定することはできません。私は今、一日を探していましたが、解決策は見つかりませんでした。誰でもここにアイデアがありますか?シリアル経由のマイクロコントローラへの設定値
#include "mbed.h"
DigitalOut Vcc(PA_0);
AnalogIn aInnA1(PA_1);
DigitalOut Gnd(PA_4);
DigitalOut myled(PA_6);
static float voltage1=0.0f;
void utspenning()
{
float voltage1 = aInnA1*3.3f;
printf("$VOLTAGE,A1,%.2f\r\n"); // This sends value back to the program
}
int main()
{
Vcc=1; Gnd=0;
char e [9];
while(1)
{
scanf("%[^\r\n]s",e); // Reads my input from the program
float d = atof(e);
if (voltage1 > d)
{
myled = 1;
}
if (voltage1 < d) //
{
myled = 1;
wait(0.1);
myled = 0;
wait(0.1);
}
}}
あなたの関数 '無効utspenning()'では、あなたは '宣言するまた、 'utspenning()'を呼び出すときは? – Swanand
scanfフォーマット指定子が疑わしいのですが、この関数はローカル変数として使用しています。 "%8s"や "%[^ \ r \ n]" 'が好きかもしれませんが、 ''の後ろに 's'が現れるはずはないと思います。印刷する浮動体を指定しますが、後続の引数にfloatの値を指定しないでください。 – kkrambo
デバッガのコードを踏んだことはありますか?何が起こるのですか? – kkrambo