Arduinoが初めてで、SPIを使用してArduinoから別のArduinoにデータを転送しようとしています。私は文字の配列(C文字列)を送ることに問題があります。最初は、文字列自体を定義することに問題があると思います(同じArduinoでシリアルに印刷しようとしていたので動作しました)。他のすべてのデータ型は正常に送られますが、何らかの理由で文字列が空白になります空行が代わりに印刷されている。Arduino SPI転送コードで文字列が空になる
ここマスタのコードだ、同じ問題がスレーブコードである。モニタで
// master
#include <SPI.h>
#include "SPI_anything.h"
// create a structure to store the different data values:
typedef struct myStruct {
char cmd[4];
double b;
long c;
};
myStruct sent;
myStruct recieved;
void setup() {
Serial.begin(115200);
SPI.begin();
// Slow down the master a bit
SPI.setClockDivider(SPI_CLOCK_DIV16);
sent.cmd[4] = "def";
sent.b = 32.2;
sent.c = 100000;
} // end of setup
void loop() {
digitalWrite(SS, LOW); // SS is pin 10
// SPI_writeAnything (sent);
delay(20);
Serial.println (SPI_readAnything (recieved));
String command=recieved.cmd;
Serial.println (recieved.cmd);///////////
Serial.println (sent.cmd);/////////////
Serial.println (command);
Serial.println (recieved.b);
Serial.println (recieved.c);
Serial.println();
digitalWrite(SS, HIGH);
delay (1000); // for testing
sent.c++;
} // end of loop
、b
及びc
は(ザ・データである正常に印刷されていますスレーブから来ている)が、cmd
が空行(受信と送信の両方)として表示されます。
ありがとうございました。
C = C++。使用している言語に合わせて1つだけタグを付けます。 – tambre
'send.cmd [4] =" def "を' strcpy(send.cmd、 "def") 'に変更する方が良いと思います。あなたがコード化した命令は、 '' def ''を指すポインタの値を、最大4バイトを含むchar配列の5番目の文字に割り当てます。 ;) –