Akifumi Takahashi
/
DistanceSensor_BaseUnit
Sample program for LPC1768. This works with LPC1114 DisatnceSensorUnitProgram.
main.cpp
- Committer:
- aktk
- Date:
- 2016-06-08
- Revision:
- 0:0cbd0489395a
File content as of revision 0:0cbd0489395a:
#include "mbed.h" #include <cmath> DigitalOut myled(LED1); Serial pc(USBTX, USBRX); Serial com_lpc1114(p13, p14); LocalFileSystem local("local"); // define Mount Point(which becomes Direcory Path) void echoback() { char str[6] = "HELLO"; com_lpc1114.putc(0x11); //Functional com_lpc1114.putc(6); //size of echo pc.printf("echoback: "); for(char ch = 0; ch < 6; ch++) { com_lpc1114.putc(str[ch]); pc.printf("%c",com_lpc1114.getc()); } pc.putc('\n'); } int main() { FILE* fp; char cfp; unsigned short dtc; char ctmp; unsigned short dtmp; pc.printf("\nPROGRAM BEGIN\n"); pc.printf("\nselect ch.0\n"); com_lpc1114.putc(0); cfp = pc.getc(); if(cfp == 'l') { fp = fopen("/local/SENSOR00.SAV", "rb"); if (fp == NULL) pc.printf("\nfopen failured\n"); pc.printf("\nload save data to lpc1114\n"); com_lpc1114.putc('l'); pc.printf("ACK recieved :"); //for(int i = 0; i < 9 * 256 + 3 + 6 * 5; i++) { int i = 0; while(1) { fread(&cfp, sizeof(char), 1, fp); com_lpc1114.putc(cfp); if(i % 3 == 2) { cfp = com_lpc1114.getc(); if (cfp == 0x06) { for(double j = 0.0; j < log10(static_cast<double>(i / 3 + 1)); j += 1.0) pc.putc(0x08); pc.printf("%d", i / 3 + 1); //pc.getc(); }// else if (cfp == 0x04) { //cfp = com_lpc1114.getc(); //if (cfp == 0x04) { pc.printf("\nSUCCESSED"); break; //} } } i++; } fclose(fp); } else if (cfp == 'c') { fp = fopen("/local/SENSOR00.SAV", "wb"); if (fp == NULL) pc.printf("\nfopen failured\n"); com_lpc1114.putc('c'); pc.printf("sampling:0"); for(int i = 0; i < 5; i++){ pc.putc(0x08); pc.printf("%d", com_lpc1114.getc()); } pc.putc('\n'); pc.printf("\nsave data from lpc1114\n"); while(1) { ctmp = com_lpc1114.getc(); if(ctmp == 0x04)break; dtmp = (static_cast<unsigned short>(ctmp) << 8); ctmp = com_lpc1114.getc(); dtmp = dtmp | ctmp; ctmp = com_lpc1114.getc(); com_lpc1114.putc(0x06); fwrite(&dtmp, sizeof(unsigned short), 1, fp); fwrite(&ctmp, sizeof(char), 1, fp); } pc.printf("\nSUCCESSED"); fclose(fp); } pc.printf("\nLOOP\n"); echoback(); printf("dtc: 000"); while(1) { myled = 1; wait(0.2); com_lpc1114.putc(0x12);//Functional dtc = com_lpc1114.getc(); dtc = ((dtc << 8) | com_lpc1114.getc()); for(int j = 0; j < 3; j++) pc.putc(0x08); printf("%3d", dtc); myled = 0; wait(0.2); if(pc.readable()) { pc.getc(); pc.putc('\n'); break; } } }