Bayley Wang
/
pyroflex_AND
control the laser with the MBED
main.cpp@1:d42ef49f54df, 2019-11-11 (annotated)
- Committer:
- bwang
- Date:
- Mon Nov 11 03:38:40 2019 +0000
- Revision:
- 1:d42ef49f54df
- Parent:
- 0:5d2320fc9350
added command line
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bwang | 0:5d2320fc9350 | 1 | #include "mbed.h" |
bwang | 1:d42ef49f54df | 2 | #include "CommandProcessor.h" |
bwang | 1:d42ef49f54df | 3 | #include "prefs.h" |
bwang | 1:d42ef49f54df | 4 | |
bwang | 1:d42ef49f54df | 5 | float __float_reg[64]; |
bwang | 1:d42ef49f54df | 6 | int __int_reg[64]; |
bwang | 0:5d2320fc9350 | 7 | |
bwang | 0:5d2320fc9350 | 8 | DigitalOut led(LED1); |
bwang | 0:5d2320fc9350 | 9 | InterruptIn in(PA_10); |
bwang | 0:5d2320fc9350 | 10 | PwmOut out(PA_8); |
bwang | 0:5d2320fc9350 | 11 | |
bwang | 0:5d2320fc9350 | 12 | Serial pc(USBTX, USBRX); |
bwang | 0:5d2320fc9350 | 13 | |
bwang | 1:d42ef49f54df | 14 | char linebuf[128]; |
bwang | 1:d42ef49f54df | 15 | int index = 0; |
bwang | 1:d42ef49f54df | 16 | void rxCallback() { |
bwang | 1:d42ef49f54df | 17 | while (pc.readable()) { |
bwang | 1:d42ef49f54df | 18 | char c = pc.getc(); |
bwang | 1:d42ef49f54df | 19 | if (c != 127 && c != 8 && c != '\r' && c != '\t') { |
bwang | 1:d42ef49f54df | 20 | linebuf[index] = c; |
bwang | 1:d42ef49f54df | 21 | if (index < 127) index++; |
bwang | 1:d42ef49f54df | 22 | if (c < 128) pc.putc(c); |
bwang | 1:d42ef49f54df | 23 | } else if (c == 127 || c == 8) { |
bwang | 1:d42ef49f54df | 24 | if (index > 0) { |
bwang | 1:d42ef49f54df | 25 | index--; |
bwang | 1:d42ef49f54df | 26 | //BS (8) should delete previous char |
bwang | 1:d42ef49f54df | 27 | pc.putc(127); |
bwang | 1:d42ef49f54df | 28 | } |
bwang | 1:d42ef49f54df | 29 | } else if (c == '\r') { |
bwang | 1:d42ef49f54df | 30 | linebuf[index] = 0; |
bwang | 1:d42ef49f54df | 31 | if (index > 0) { |
bwang | 1:d42ef49f54df | 32 | pc.putc(c); |
bwang | 1:d42ef49f54df | 33 | processCmd(&pc, linebuf); |
bwang | 1:d42ef49f54df | 34 | pc.putc('>'); |
bwang | 1:d42ef49f54df | 35 | } else { |
bwang | 1:d42ef49f54df | 36 | pc.putc(c); |
bwang | 1:d42ef49f54df | 37 | pc.putc('>'); |
bwang | 1:d42ef49f54df | 38 | } |
bwang | 1:d42ef49f54df | 39 | index = 0; |
bwang | 1:d42ef49f54df | 40 | } |
bwang | 1:d42ef49f54df | 41 | } |
bwang | 1:d42ef49f54df | 42 | } |
bwang | 1:d42ef49f54df | 43 | |
bwang | 0:5d2320fc9350 | 44 | void turn_on() { |
bwang | 1:d42ef49f54df | 45 | out.pulsewidth_us(_PULSE_WIDTH); |
bwang | 0:5d2320fc9350 | 46 | led = 1; |
bwang | 0:5d2320fc9350 | 47 | } |
bwang | 0:5d2320fc9350 | 48 | |
bwang | 0:5d2320fc9350 | 49 | void turn_off() { |
bwang | 0:5d2320fc9350 | 50 | out.pulsewidth_us(0); |
bwang | 0:5d2320fc9350 | 51 | led = 0; |
bwang | 0:5d2320fc9350 | 52 | } |
bwang | 0:5d2320fc9350 | 53 | |
bwang | 0:5d2320fc9350 | 54 | int main() { |
bwang | 1:d42ef49f54df | 55 | pc.baud(115200); |
bwang | 1:d42ef49f54df | 56 | pc.attach(rxCallback); |
bwang | 0:5d2320fc9350 | 57 | pc.printf("PYROFLEX\n"); |
bwang | 1:d42ef49f54df | 58 | cmd_clear(&pc); |
bwang | 1:d42ef49f54df | 59 | cmd_defaults(&pc); |
bwang | 1:d42ef49f54df | 60 | pc.printf(">"); |
bwang | 1:d42ef49f54df | 61 | |
bwang | 0:5d2320fc9350 | 62 | out.period_us(10); |
bwang | 1:d42ef49f54df | 63 | out.pulsewidth_us(_PULSE_WIDTH); |
bwang | 0:5d2320fc9350 | 64 | |
bwang | 0:5d2320fc9350 | 65 | in.rise(turn_on); |
bwang | 0:5d2320fc9350 | 66 | in.fall(turn_off); |
bwang | 0:5d2320fc9350 | 67 | |
bwang | 0:5d2320fc9350 | 68 | for (;;) {} |
bwang | 0:5d2320fc9350 | 69 | } |