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

Dependencies:   TextLCD mbed

Committer:
sunifu
Date:
Thu Oct 11 14:11:54 2012 +0000
Revision:
7:1a0580ace499
ver1.0

Who changed what in which revision?

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