
Realtime sound spectrogram using FFT or linear prediction. Spectrogram is displayed on the display of PC. リアルタイム・スペクトログラム.解析の手法:FFT,線形予測法.スペクトログラムは PC のディスプレー装置に表示される.PC 側のプログラム:F446_Spectrogram.
Dependencies: Array_Matrix mbed SerialTxRxIntr F446_AD_DA UIT_FFT_Real
myFunctions.cpp@1:cc596a8d40c9, 2017-02-21 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Feb 21 13:25:58 2017 +0000
- Revision:
- 1:cc596a8d40c9
- Parent:
- 0:a539141b9dec
- Child:
- 2:acc16e3f91ac
2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:a539141b9dec | 1 | #include "myFunctions.hpp" |
MikamiUitOpen | 0:a539141b9dec | 2 | |
MikamiUitOpen | 0:a539141b9dec | 3 | // シリアル・ポートの受信割り込み |
MikamiUitOpen | 0:a539141b9dec | 4 | void Rx() |
MikamiUitOpen | 0:a539141b9dec | 5 | { |
MikamiUitOpen | 0:a539141b9dec | 6 | unsigned char chr = pc_.getc(); |
MikamiUitOpen | 0:a539141b9dec | 7 | // '\r' を受信した場合はメッセージの終了とする |
MikamiUitOpen | 0:a539141b9dec | 8 | // '\r' は,rxBuffer_ には追加されない |
MikamiUitOpen | 0:a539141b9dec | 9 | if (chr == '\r') eol_ = true; |
MikamiUitOpen | 0:a539141b9dec | 10 | else rxBuffer_ += chr; // '\r' が来るまで文字が追加される |
MikamiUitOpen | 0:a539141b9dec | 11 | |
MikamiUitOpen | 0:a539141b9dec | 12 | // 受信するメッセージの文字数のチェック |
MikamiUitOpen | 0:a539141b9dec | 13 | if (rxBuffer_.size() > RX_MAX_) |
MikamiUitOpen | 0:a539141b9dec | 14 | while (true) // 文字数がオーバーの場合 LED が点滅する |
MikamiUitOpen | 0:a539141b9dec | 15 | { |
MikamiUitOpen | 0:a539141b9dec | 16 | myLed_ = !myLed_; |
MikamiUitOpen | 0:a539141b9dec | 17 | wait(0.1f); |
MikamiUitOpen | 0:a539141b9dec | 18 | } |
MikamiUitOpen | 0:a539141b9dec | 19 | } |
MikamiUitOpen | 0:a539141b9dec | 20 | |
MikamiUitOpen | 0:a539141b9dec | 21 | // データを PC へ転送(12 ビットを 2 文字で表すコード化を利用) |
MikamiUitOpen | 0:a539141b9dec | 22 | void Xfer(Array<int16_t> &xn) |
MikamiUitOpen | 0:a539141b9dec | 23 | { |
MikamiUitOpen | 0:a539141b9dec | 24 | for (int n=0; n<xn.Length(); n++) |
MikamiUitOpen | 0:a539141b9dec | 25 | pc_.printf("%c%c", ((xn[n] & 0xFC0) >> 6) + ' ', |
MikamiUitOpen | 0:a539141b9dec | 26 | (xn[n] & 0x3F) + ' '); |
MikamiUitOpen | 0:a539141b9dec | 27 | |
MikamiUitOpen | 0:a539141b9dec | 28 | pc_.printf("\n"); // データの最後を通知 |
MikamiUitOpen | 0:a539141b9dec | 29 | wait_ms(1); // これは必須 |
MikamiUitOpen | 0:a539141b9dec | 30 | pc_.printf("EOT\n"); // 転送終了であることを送信 |
MikamiUitOpen | 0:a539141b9dec | 31 | } |