シリアルで読み込みができているみたいだから、mbedで取得してみた。
最近Pythonずっといじってたためか、配列の要素取り出すのに、スライスするというのが頭にこびりついていて、要素ごと取り出して計算させていたが、1日ぐらいでようやく、頭がすっきりしてきた。年取ると、頭の切り替えしにえらく時間がかかる。
#include "mbed.h"
DigitalOut myled(LED2);
Serial tocos(PTE0,PTE1);
Serial pc(USBTX,USBRX);
int main() {
tocos.baud(115200);
pc.baud(115200);
char recv_str[64];
char ad1_str[5]={'\0'};
char ad1h_str[5]={'\0'};
int ad1,ad1h;
float lm61;
while(1) {
while( tocos.getc() != 0x3A ); // 0x3A=":"
for(int i=0;i<49;i++){
recv_str[i] = tocos.getc();
}
recv_str[49]=NULL;
// 78811501B781003BB6782A05000B291B000033FFFFFFFFA3
// 012345678901234567890123456789012345678901234567
strncpy(ad1_str,recv_str+36,2);
strncpy(ad1h_str,recv_str+44,2);
ad1 = strtol(ad1_str,NULL,16);
ad1h= strtol(ad1h_str,NULL,16) & 0x03;
ad1 = (ad1 * 4 + ad1h) * 4;
lm61= ((float)ad1 - 600.0)/10.0;
myled = 0;
pc.printf(":%s\n\r",recv_str);
pc.printf("LM61=%+5.1f\n\r",lm61);
myled = 1;
}
}
mbedのUARTで受けて、それをPCに接続したmbedをUARTで開いて、さらに送信する。この結果
:78811501CF81003BB67804A3000B371B000032FFFFFFFE07 LM61=+20.8
一応、思い通りに表示されているようだ。
さらに、TFTで表示させるところまで作って終わりにしよう。
コメントを追加