Test program for Infrared SoftSerial.
Dependencies: Bf_SoftSerial_IR
main.cpp@0:4350de08a6de, 2020-05-15 (annotated)
- Committer:
- kenjiArai
- Date:
- Fri May 15 04:15:57 2020 +0000
- Revision:
- 0:4350de08a6de
Test program for Infrared SoftSerial using Infrared LED & IR Detector.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:4350de08a6de | 1 | /* |
kenjiArai | 0:4350de08a6de | 2 | * Mbed Application program |
kenjiArai | 0:4350de08a6de | 3 | * IR TX & RX test program |
kenjiArai | 0:4350de08a6de | 4 | * |
kenjiArai | 0:4350de08a6de | 5 | * Copyright (c) 2020 Kenji Arai / JH1PJL |
kenjiArai | 0:4350de08a6de | 6 | * http://www7b.biglobe.ne.jp/~kenjia/ |
kenjiArai | 0:4350de08a6de | 7 | * https://os.mbed.com/users/kenjiArai/ |
kenjiArai | 0:4350de08a6de | 8 | * Created: May 15th, 2020 |
kenjiArai | 0:4350de08a6de | 9 | * Revised: May 15th, 2020 |
kenjiArai | 0:4350de08a6de | 10 | */ |
kenjiArai | 0:4350de08a6de | 11 | |
kenjiArai | 0:4350de08a6de | 12 | // Include -------------------------------------------------------------------- |
kenjiArai | 0:4350de08a6de | 13 | #include "mbed.h" |
kenjiArai | 0:4350de08a6de | 14 | #include "Bf_SoftSerial_IR.h" |
kenjiArai | 0:4350de08a6de | 15 | |
kenjiArai | 0:4350de08a6de | 16 | // Object --------------------------------------------------------------------- |
kenjiArai | 0:4350de08a6de | 17 | DigitalOut myled(LED1); |
kenjiArai | 0:4350de08a6de | 18 | DigitalOut test_point(A5); |
kenjiArai | 0:4350de08a6de | 19 | RawSerial pc(USBTX, USBRX); |
kenjiArai | 0:4350de08a6de | 20 | Bf_SoftSerial_IR ir_trx(PB_2, PA_14); |
kenjiArai | 0:4350de08a6de | 21 | |
kenjiArai | 0:4350de08a6de | 22 | // RAM ------------------------------------------------------------------------ |
kenjiArai | 0:4350de08a6de | 23 | CircularBuffer<char, 1024> pc_rxbuf; // PC receiving Buffer |
kenjiArai | 0:4350de08a6de | 24 | |
kenjiArai | 0:4350de08a6de | 25 | // ROM / Constant data -------------------------------------------------------- |
kenjiArai | 0:4350de08a6de | 26 | |
kenjiArai | 0:4350de08a6de | 27 | // Function prototypes -------------------------------------------------------- |
kenjiArai | 0:4350de08a6de | 28 | static void pc_rx_handler(void); |
kenjiArai | 0:4350de08a6de | 29 | |
kenjiArai | 0:4350de08a6de | 30 | //------------------------------------------------------------------------------ |
kenjiArai | 0:4350de08a6de | 31 | // Control Program |
kenjiArai | 0:4350de08a6de | 32 | //------------------------------------------------------------------------------ |
kenjiArai | 0:4350de08a6de | 33 | int main() |
kenjiArai | 0:4350de08a6de | 34 | { |
kenjiArai | 0:4350de08a6de | 35 | char c; |
kenjiArai | 0:4350de08a6de | 36 | |
kenjiArai | 0:4350de08a6de | 37 | pc.attach(&pc_rx_handler, Serial::RxIrq); |
kenjiArai | 0:4350de08a6de | 38 | pc.printf("\r\nStart UART test program\r\n"); |
kenjiArai | 0:4350de08a6de | 39 | while(true){ |
kenjiArai | 0:4350de08a6de | 40 | //pc.printf("line:%d\r\n", __LINE__); |
kenjiArai | 0:4350de08a6de | 41 | if (!pc_rxbuf.empty()){ |
kenjiArai | 0:4350de08a6de | 42 | pc_rxbuf.pop(c); |
kenjiArai | 0:4350de08a6de | 43 | ir_trx.putc(c); |
kenjiArai | 0:4350de08a6de | 44 | } |
kenjiArai | 0:4350de08a6de | 45 | if (ir_trx.readable()){ |
kenjiArai | 0:4350de08a6de | 46 | c = ir_trx.getc(); |
kenjiArai | 0:4350de08a6de | 47 | if ((c == '\r') || (c == '\n')){ |
kenjiArai | 0:4350de08a6de | 48 | pc.putc('\r'); |
kenjiArai | 0:4350de08a6de | 49 | pc.putc('\n'); |
kenjiArai | 0:4350de08a6de | 50 | } else if (c == 0xff){ |
kenjiArai | 0:4350de08a6de | 51 | ; // no action -> Noise!! |
kenjiArai | 0:4350de08a6de | 52 | } else { |
kenjiArai | 0:4350de08a6de | 53 | pc.putc(c); |
kenjiArai | 0:4350de08a6de | 54 | } |
kenjiArai | 0:4350de08a6de | 55 | } |
kenjiArai | 0:4350de08a6de | 56 | } |
kenjiArai | 0:4350de08a6de | 57 | } |
kenjiArai | 0:4350de08a6de | 58 | |
kenjiArai | 0:4350de08a6de | 59 | static void pc_rx_handler(void) |
kenjiArai | 0:4350de08a6de | 60 | { |
kenjiArai | 0:4350de08a6de | 61 | while(pc.readable()) { |
kenjiArai | 0:4350de08a6de | 62 | pc_rxbuf.push(pc.getc()); |
kenjiArai | 0:4350de08a6de | 63 | } |
kenjiArai | 0:4350de08a6de | 64 | } |