An example Program for the SimpleSerialProtocol Library, This program will receive a packet, then echo it back to the client

Dependencies:   mbed SimpleSerialProtocol MODSERIAL

A simple example program that receives a packet over serial and echos it back.

I include this java program to show an example client application, all this program does is send packets as fast as it can without filling up its output buffer, the mbed will echo these packets back.

This is a good benchmark of the serial connection, and should show about 11KB/s at 115200baud

/media/uploads/p3p/serialecho.zip

example command: java -jar SerialEcho.jar com3 115200

Committer:
p3p
Date:
Wed Aug 27 18:05:51 2014 +0000
Revision:
11:a051c3f9ca6d
Parent:
10:f6862abba2d5
Simplified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
p3p 2:8799090c0fe4 1 #ifndef _TEST_PROTOCOL_H
p3p 2:8799090c0fe4 2 #define _TEST_PROTOCOL_H
p3p 2:8799090c0fe4 3
p3p 2:8799090c0fe4 4 #include <mbed.h>
p3p 2:8799090c0fe4 5 #include <SimpleSerialProtocol/Protocol.h>
p3p 2:8799090c0fe4 6
p3p 2:8799090c0fe4 7 //class will receive a packet and echo it back out
p3p 11:a051c3f9ca6d 8 class TestProtocol {
p3p 2:8799090c0fe4 9 public:
p3p 11:a051c3f9ca6d 10 TestProtocol() {
p3p 11:a051c3f9ca6d 11 temp = 0;
p3p 11:a051c3f9ca6d 12 temp1 = 0;
p3p 11:a051c3f9ca6d 13 temp2 = 0;
p3p 11:a051c3f9ca6d 14 temp3 = 0.0f;
p3p 2:8799090c0fe4 15 }
p3p 2:8799090c0fe4 16 virtual ~TestProtocol() {};
p3p 11:a051c3f9ca6d 17 void onEchoPacket(SimpleSerialProtocol::Protocol* comms, SimpleSerialProtocol::Packet* packet);
p3p 2:8799090c0fe4 18
p3p 2:8799090c0fe4 19 class EchoPacket : public SimpleSerialProtocol::Packet {
p3p 2:8799090c0fe4 20 public:
p3p 2:8799090c0fe4 21 EchoPacket() {}
p3p 2:8799090c0fe4 22 virtual ~EchoPacket() {}
p3p 2:8799090c0fe4 23
p3p 2:8799090c0fe4 24 #pragma pack(push, 1) //must pack the structure to byte boundary for raw recast to work reliably
p3p 11:a051c3f9ca6d 25 //this is used in Packet::interpretData and used to validate the packet
p3p 2:8799090c0fe4 26 struct Interface {
p3p 2:8799090c0fe4 27 Interface() {
p3p 2:8799090c0fe4 28 type = 1; // initialise the type
p3p 2:8799090c0fe4 29 }
p3p 2:8799090c0fe4 30 uint8_t type;
p3p 2:8799090c0fe4 31 uint8_t data;
p3p 2:8799090c0fe4 32 uint16_t datashort;
p3p 2:8799090c0fe4 33 uint32_t dataint;
p3p 2:8799090c0fe4 34 float datafloat;
p3p 2:8799090c0fe4 35 } interface;
p3p 2:8799090c0fe4 36 #pragma pack(pop)
p3p 2:8799090c0fe4 37
p3p 2:8799090c0fe4 38 };
p3p 2:8799090c0fe4 39
p3p 2:8799090c0fe4 40 uint8_t temp;
p3p 11:a051c3f9ca6d 41 uint16_t temp1;
p3p 11:a051c3f9ca6d 42 uint32_t temp2;
p3p 2:8799090c0fe4 43 float temp3;
p3p 2:8799090c0fe4 44 };
p3p 2:8799090c0fe4 45
p3p 2:8799090c0fe4 46 #endif