我有一个Arduino设备和PC.我在板上尝试了以下代码:
gpsdata data;
char needtosend;
void setup() {
Serial.begin(9600);
Serial.flush();
data.id = 0;
data.src= 500;
data.lat= 1;
data.lon= 2;
data.alt= 3;
strcpy(data.date, "test date format");
}
void loop() {
if(Serial.available() > 0)
{
needtosend = Serial.read();
if ( needtosend == '2')
{
data.id = ++data.id % 10;
}
byte* buff = (byte*)&data;
Serial.write(buff, sizeof(data));
}
delay (200);
}
Run Code Online (Sandbox Code Playgroud)
PC应用程序是用C++编写的,并使用boost库与Arduino设备进行通信.这是PC代码:
Serial serial("/dev/ttyUSB0",9600);
gpsdata *data;
char *values = new char[sizeof(gpsdata)];
while(true)
{
try {
serial.writeString("2",1);
serial.read(values,sizeof(gpsdata));
data = (gpsdata *)values;
cout<<data->id<<endl;
} …
Run Code Online (Sandbox Code Playgroud)