Myserial Library extends RawSerial

Committer:
naao
Date:
Thu Jul 03 03:21:33 2014 +0000
Revision:
13:8cf9a9d7d44d
Parent:
12:02b3877b48c6
Child:
14:8bd054a87ac5
fixed sample code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
naao 0:5b0b84a10bba 1 /** mbed Serial Library extend RawSerial
naao 0:5b0b84a10bba 2 * Copyright (c) 2014 Naoki Okino
naao 0:5b0b84a10bba 3 *
naao 0:5b0b84a10bba 4 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
naao 0:5b0b84a10bba 5 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
naao 0:5b0b84a10bba 6 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
naao 0:5b0b84a10bba 7 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
naao 0:5b0b84a10bba 8 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
naao 0:5b0b84a10bba 9 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
naao 0:5b0b84a10bba 10 * THE SOFTWARE.
naao 0:5b0b84a10bba 11 */
naao 0:5b0b84a10bba 12 #ifndef MBED_MYSERIAL_H
naao 0:5b0b84a10bba 13 #define MBED_MYSERIAL_H
naao 0:5b0b84a10bba 14
naao 0:5b0b84a10bba 15 #include "mbed.h"
naao 10:930d325f3d31 16
naao 0:5b0b84a10bba 17 /** MySerial control class, based on a RawSerial
naao 0:5b0b84a10bba 18 *
naao 0:5b0b84a10bba 19 * Example:
naao 0:5b0b84a10bba 20 * @code
naao 0:5b0b84a10bba 21 * #include "mbed.h"
naao 0:5b0b84a10bba 22 * #include "MySerial.h"
naao 0:5b0b84a10bba 23 *
naao 13:8cf9a9d7d44d 24 * MySerial pc(USBTX,USBRX); //instance of MySerial Class
naao 0:5b0b84a10bba 25 * char cWord[16]; //receive chars or cWord[256], cWord[1024] etc..
naao 0:5b0b84a10bba 26 *
naao 0:5b0b84a10bba 27 * void readbuf()
naao 0:5b0b84a10bba 28 * {
naao 5:72514f93cba9 29 * // int iRtn = pc.GetString(6,&cWord); //Serial received chars by pointer cWord
naao 6:7853f8641372 30 * int iRtn = pc.GetString(6,cWord); //Serial received chars byref of cWord
naao 0:5b0b84a10bba 31 * }
naao 0:5b0b84a10bba 32 * int main() {
naao 9:981384455445 33 * pc.baud(9600); //set baud rate
naao 9:981384455445 34 * pc.format(8, MySerial::None, 1);//set bits for a byte, parity bit, stop bit
naao 9:981384455445 35 * pc.SetRxWait(0.01, 0.001); //set wait getting chars after interrupted, each char
naao 0:5b0b84a10bba 36 * pc.attach( readbuf, MySerial::RxIrq ); //Set Interrupt by Serial receive
naao 0:5b0b84a10bba 37 * }
naao 0:5b0b84a10bba 38 * @endcode
naao 0:5b0b84a10bba 39 */
naao 12:02b3877b48c6 40 class MySerial : public SerialBase{
naao 0:5b0b84a10bba 41
naao 0:5b0b84a10bba 42 public:
naao 12:02b3877b48c6 43
naao 12:02b3877b48c6 44 /** constructor to get chars received by serial
naao 0:5b0b84a10bba 45 *
naao 3:e4c443ce0fbe 46 * @param PinName tx
naao 3:e4c443ce0fbe 47 * @param PinName rx
naao 0:5b0b84a10bba 48 */
naao 12:02b3877b48c6 49 MySerial(PinName tx, PinName rx);
naao 12:02b3877b48c6 50
naao 12:02b3877b48c6 51 /** Write a char to the serial port
naao 12:02b3877b48c6 52 *
naao 12:02b3877b48c6 53 * @param c The char to write
naao 12:02b3877b48c6 54 *
naao 12:02b3877b48c6 55 * @returns The written char or -1 if an error occured
naao 12:02b3877b48c6 56 */
naao 12:02b3877b48c6 57 int putc(int c);
naao 12:02b3877b48c6 58
naao 12:02b3877b48c6 59 /** Read a char from the serial port
naao 12:02b3877b48c6 60 *
naao 12:02b3877b48c6 61 * @returns The char read from the serial port
naao 12:02b3877b48c6 62 */
naao 12:02b3877b48c6 63 int getc();
naao 12:02b3877b48c6 64
naao 12:02b3877b48c6 65 /** Write a string to the serial port
naao 12:02b3877b48c6 66 *
naao 12:02b3877b48c6 67 * @param str The string to write
naao 12:02b3877b48c6 68 *
naao 12:02b3877b48c6 69 * @returns 0 if the write succeeds, EOF for error
naao 12:02b3877b48c6 70 */
naao 12:02b3877b48c6 71 int puts(const char *str);
naao 12:02b3877b48c6 72
naao 12:02b3877b48c6 73 /** set wait getting chars after interrupted
naao 9:981384455445 74 *
naao 9:981384455445 75 * @param float _fRxStartWait wait getting a 1st char after interrupted
naao 9:981384455445 76 * @param float _fRxEachWait wait getting each char
naao 9:981384455445 77 */
naao 9:981384455445 78 void SetRxWait(float _fRxStartWait, float _fRxEachWait);
naao 9:981384455445 79
naao 10:930d325f3d31 80 /** function to get chars after received chars by serial
naao 0:5b0b84a10bba 81 *
naao 0:5b0b84a10bba 82 * @param int size for get chars
naao 0:5b0b84a10bba 83 * @param *cWord returns got chars by pointer
naao 0:5b0b84a10bba 84 * @param returns success by 0
naao 0:5b0b84a10bba 85 */
naao 0:5b0b84a10bba 86 virtual int GetString(int size, char *cWord);
naao 0:5b0b84a10bba 87
naao 10:930d325f3d31 88 /** overload function to get chars after received chars by serial
naao 0:5b0b84a10bba 89 *
naao 0:5b0b84a10bba 90 * @param int size for get chars
naao 10:930d325f3d31 91 * @param cWord returns got chars by ref
naao 0:5b0b84a10bba 92 * @param returns success by 0
naao 0:5b0b84a10bba 93 */
naao 6:7853f8641372 94 template <class X> int GetString(int size, X cWord)
naao 6:7853f8641372 95 {
naao 7:d5fe75a0a885 96 return GetString(size, &cWord);
naao 6:7853f8641372 97 }
naao 0:5b0b84a10bba 98
naao 0:5b0b84a10bba 99 protected:
naao 9:981384455445 100 float fRxStartWait;
naao 9:981384455445 101 float fRxEachWait;
naao 10:930d325f3d31 102
naao 10:930d325f3d31 103 }; /* class MySerial */
naao 0:5b0b84a10bba 104
naao 0:5b0b84a10bba 105 #endif