以下两种方法其实都是不行的,第三种方法没有尝试,有兴趣的可以尝试一下
方法一:通过tcp传送数据并用python的matplotlib库来画(帧数跟不上,严重延迟)
在硬件开发的时候很容易就会遇到要把数据plot一下,在树莓派里面暂时有两种方法,一种是蓝牙传输,一种是tcp的方式。比较熟悉tcp的方法,就是用了tcp的方法。
python的tcp连接方法简单,而且有丰富的库,那么就找了python的matplotlib类库来做。python的话要注意粘包的问题,原因。为了解决粘包问题,就先发送一个包的大小过来,接收之后,再设置python接收的包的大小,这样就能解决粘包的问题,不然数据很容易就乱了。在c里面发送int和double,float也是一个坑。如下:
char data[1024];
int j;
j = sprintf(data, "%lf\t", nP);
j += sprintf(data + j, "%lf\t", nD);
j += sprintf(data + j, "%d\t", nSpeed);
j += sprintf(data + j, "%d\t", g_nLeftMotorOut);
j += sprintf(data + j, "%lf\t", rotation_y);
j += sprintf(data + j, "%lf\t", gyro_scaled_y);
j += sprintf