Better Serial C++ class library with interrupt
Dependents: Dumb_box_rev2 mbed_GPSproject
iSerial class library can easy be used just by swapping Serial declarations.
API
| iSerial | |
Examples
#include "mbed.h"
#include "iSerial.h"
char s[] = "12345678901234567890123456789012345678901234567890";
int main() {
iSerial pc(USBTX,USBRX);
char* c = s;
while(1) {
pc.puts(s);
while(pc.readable()){
int ret = pc.getc();
if(ret)
*c++ = ret;
if(c >= s+sizeof(s)-1)
c = s;
}
wait(1);
}
}
Example 2
Comparing speed of ordinary Serial functions
#include "mbed.h"
#include "iSerial.h"
char s[] = "12345678901234567890123456789012345678901234567890"; // 50 bytes
int main() {
Timer t;
Serial pc(USBTX,USBRX);
pc.baud(921600);
t.reset();
t.start();
for(int i=0; i<30; i++) {
pc.printf(s);
wait(0.001);
}
t.stop();
int t1 = t.read_us();
pc.puts("\n\n\n");
iSerial ipc(USBTX,USBRX,NULL,1000,100); // try NOT to set the buffer over flowed
// iSerial ipc(USBTX,USBRX); // set as default = 100, 100
ipc.baud(921600);
t.reset();
t.start();
for(int i=0; i<30; i++) {
ipc.printf(s);
wait(0.001);
}
t.stop();
int t2 = t.read_us();
ipc.printf("\n\n\nThe time %d, %d [us] was taken.\n", t1, t2);
ipc.puts("End.");
ipc.flush();
}
Revisions of iSerial.cpp
| Revision | Date | Message | Actions |
|---|---|---|---|
| 8:20759f992d48 | 2012-09-03 | bugfix of rx interrupt | File Diff Annotate |
| 7:5a25789c3b55 | 2012-09-03 | bugfix of tx interrupt | File Diff Annotate |
| 6:8d4b95b90c3b | 2012-09-03 | flush added | File Diff Annotate |
| 5:d83fc550ccbc | 2012-09-03 | Now support both LPC1768 and LPC11U24. But it can be used for USBTX/USBRX. Others are unchecked.; | File Diff Annotate |
| 4:b38ef9675d39 | 2012-09-03 | printf using interrupt is implemented | File Diff Annotate |
| 3:d5353b68105f | 2012-09-01 | name change | File Diff Annotate |
| 2:3fc74f4d685a | 2012-08-31 | Name change | File Diff Annotate | base |
Yoji KURODA