シリアルで読み込みができているみたいだから、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で表示させるところまで作って終わりにしよう。
コメントを追加