Nobuki HIRAMINE
/
serial_receive
Serial communication. receive.
main.cpp
- Committer:
- nobuki
- Date:
- 2012-06-17
- Revision:
- 0:4ccad4f8fe4c
File content as of revision 0:4ccad4f8fe4c:
#include "mbed.h" #include "TextLCD.h" #define READBUFFERSIZE (32) Serial g_serial(USBTX, USBRX); TextLCD g_lcd(p15, p16, p17, p18, p19, p20); // RS, E, DB4, DB5, DB6, DB7 int ReadLineString( Serial& serial, char szReadBuffer[], const int ciReadBufferSize, int& riIndexChar, char szLineString[], const int ciLineStringSize ) { while( 1 ) { if( !serial.readable() ) { break; } char c = serial.getc(); if( '\r' == c ) { szReadBuffer[riIndexChar] = '\0'; strncpy( szLineString, szReadBuffer, ciLineStringSize - 1 ); szLineString[ciLineStringSize - 1] = '\0'; riIndexChar = 0; return 1; } else if( '\n' == c ) { ; } else { if( (ciReadBufferSize - 1) > riIndexChar ) { szReadBuffer[riIndexChar] = c; riIndexChar++; } } } return 0; } int main() { // setup g_serial.baud(9600); wait(0.001); g_lcd.cls(); wait(0.001); g_lcd.printf( "(ready)" ); // loop char szReadBuffer[READBUFFERSIZE] = ""; int iIndexChar = 0; while(1) { char szLineString[READBUFFERSIZE]; if( !ReadLineString( g_serial, szReadBuffer, READBUFFERSIZE, iIndexChar, szLineString, READBUFFERSIZE ) ) { continue; } g_lcd.cls(); wait(0.001); g_lcd.locate(0, 0); g_lcd.printf( szLineString ); } }