エレキジャック Web版 マイコン・カーを製作してみよう<21> マイコンカー制御プログラムです。http://www.eleki-jack.com/arm/2012/10/21.html  このプログラムは次回の記事でアップされるパソコン用プログラムを使ってマイコンカーを制御するプログラムです。マイコンカーとパソコンの通信はXbeeを使っています。

Dependencies:   TextLCD mbed

Committer:
sunifu
Date:
Mon May 07 05:57:12 2012 +0000
Revision:
4:887ced27d5d6
Parent:
SerialBuffered.h@0:6eaa311b9d3b
Child:
5:7f85cf99d0f6
0.0.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:6eaa311b9d3b 1 #ifndef _SERIAL_BUFFERED_H_
sunifu 0:6eaa311b9d3b 2 #define _SERIAL_BUFFERED_H_
sunifu 0:6eaa311b9d3b 3
sunifu 0:6eaa311b9d3b 4 /**
sunifu 0:6eaa311b9d3b 5 * Buffered serial class.
sunifu 0:6eaa311b9d3b 6 */
sunifu 0:6eaa311b9d3b 7 class SerialBuffered : public Serial {
sunifu 0:6eaa311b9d3b 8 public:
sunifu 0:6eaa311b9d3b 9 /**
sunifu 0:6eaa311b9d3b 10 * Create a buffered serial class.
sunifu 0:6eaa311b9d3b 11 *
sunifu 0:6eaa311b9d3b 12 * @param tx A pin for transmit.
sunifu 0:6eaa311b9d3b 13 * @param rx A pin for receive.
sunifu 0:6eaa311b9d3b 14 */
sunifu 0:6eaa311b9d3b 15 SerialBuffered(PinName tx, PinName rx);
sunifu 0:6eaa311b9d3b 16
sunifu 0:6eaa311b9d3b 17 /**
sunifu 0:6eaa311b9d3b 18 * Destroy.
sunifu 0:6eaa311b9d3b 19 */
sunifu 0:6eaa311b9d3b 20 virtual ~SerialBuffered();
sunifu 0:6eaa311b9d3b 21
sunifu 0:6eaa311b9d3b 22 /**
sunifu 0:6eaa311b9d3b 23 * Get a character.
sunifu 0:6eaa311b9d3b 24 *
sunifu 0:6eaa311b9d3b 25 * @return A character. (-1:timeout)
sunifu 0:6eaa311b9d3b 26 */
sunifu 0:6eaa311b9d3b 27 int getc();
sunifu 0:6eaa311b9d3b 28
sunifu 0:6eaa311b9d3b 29 /**
sunifu 0:6eaa311b9d3b 30 * Returns 1 if there is a character available to read, 0 otherwise.
sunifu 0:6eaa311b9d3b 31 */
sunifu 0:6eaa311b9d3b 32 int readable();
sunifu 0:6eaa311b9d3b 33
sunifu 0:6eaa311b9d3b 34 /**
sunifu 0:6eaa311b9d3b 35 * Set timeout for getc().
sunifu 0:6eaa311b9d3b 36 *
sunifu 0:6eaa311b9d3b 37 * @param ms milliseconds. (-1:Disable timeout)
sunifu 0:6eaa311b9d3b 38 */
sunifu 0:6eaa311b9d3b 39 void setTimeout(int ms);
sunifu 0:6eaa311b9d3b 40
sunifu 0:6eaa311b9d3b 41 /**
sunifu 0:6eaa311b9d3b 42 * Read requested bytes.
sunifu 0:6eaa311b9d3b 43 *
sunifu 0:6eaa311b9d3b 44 * @param bytes A pointer to a buffer.
sunifu 0:6eaa311b9d3b 45 * @param requested Length.
sunifu 0:6eaa311b9d3b 46 *
sunifu 0:6eaa311b9d3b 47 * @return Readed byte length.
sunifu 0:6eaa311b9d3b 48 */
sunifu 0:6eaa311b9d3b 49 size_t readBytes(uint8_t *bytes, size_t requested);
sunifu 0:6eaa311b9d3b 50
sunifu 0:6eaa311b9d3b 51 private:
sunifu 0:6eaa311b9d3b 52 void handleInterrupt();
sunifu 0:6eaa311b9d3b 53 static const int BUFFERSIZE = 4096;
sunifu 0:6eaa311b9d3b 54 uint8_t buffer[BUFFERSIZE]; // points at a circular buffer, containing data from m_contentStart, for m_contentSize bytes, wrapping when you get to the end
sunifu 0:6eaa311b9d3b 55 uint16_t indexContentStart; // index of first bytes of content
sunifu 0:6eaa311b9d3b 56 uint16_t indexContentEnd; // index of bytes after last byte of content
sunifu 0:6eaa311b9d3b 57 int timeout;
sunifu 0:6eaa311b9d3b 58 Timer timer;
sunifu 0:6eaa311b9d3b 59 };
sunifu 0:6eaa311b9d3b 60
sunifu 0:6eaa311b9d3b 61 #endif