SoftwareSerial Class

SoftwareSerial Class

Description
Defines a class of software serial implementation for Ameba.

Syntax
class SoftwareSerial

Members

Public Constructors 
SoftwareSerial::SoftwareSerialConstructs a SoftwareSerial object
Public Methods 
SoftwareSerial::beginSets the speed (baud rate) for the serial communication
SoftwareSerial::listenEnables the selected software serial port to listen
SoftwareSerial::endSame as stopListening
SoftwareSerial::stopListeningStop listening on the port
SoftwareSerial::peekReturn a character that was received on the RX pin of the software serial port
SoftwareSerial::writePrints data to the transmit pin of the software serial port as raw bytes
SoftwareSerial::readReturn a character that was received on the RX pin of the software serial port
SoftwareSerial::availableGet the number of bytes (characters) available for reading from a software serial port
SoftwareSerial::flushFlush the received buffer
SoftwareSerial::setBufferSizeSet buffer size
SoftwareSerial::setAvailableCallbackSet available callback
SoftwareSerial::handle_interruptPrivate methods handles interrupt

SoftwareSerial::SoftwareSerial

Description
Constructs a SoftwareSerial object and sets RX and TX pin, and inverse logic.

Syntax
SoftwareSerial::SoftwareSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic /* = false */)

Parameters
receivePin: the pin on which to receive serial data
transmitPin: the pin on which to transmit serial data
inverse_logic: is used to invert the sense of incoming bits

Returns
The function returns nothing.

Example Code
Example: SoftwareSerialExample
The example demonstrates a software serial test, it receives from serial RX and sends it to serial TX.

/* 
 The circuit: (BOARD RTL8195A) 
 * RX is digital pin 0 (connect to TX of other devices) 
 * TX is digital pin 1 (connect to RX of other devices) 
 */  
#include <SoftwareSerial.h>   
  
#if defined(BOARD_RTL8195A)  
SoftwareSerial mySerial(0, 1); // RX, TX  
#elif defined(BOARD_RTL8710)  
SoftwareSerial mySerial(17, 5); // RX, TX  
#else  
SoftwareSerial mySerial(0, 1); // RX, TX  
#endif  
  
void setup() {  
  // Open serial communications and wait for port to open:  
  Serial.begin(57600);  
  while (!Serial) {  
    ; // wait for serial port to connect. Needed for native USB port only  
  }  
  
  
  Serial.println("Goodnight moon!");  
  
  // set the data rate for the SoftwareSerial port  
  mySerial.begin(4800);  
  mySerial.println("Hello, world?");  
}  
  
void loop() { // run over and over  
  if (mySerial.available()) {  
    mySerial.write(mySerial.read());  
  }  
}  

Notes and Warnings
Software Serial is using hardware serial thus DO NOT change the default pins
 

SoftwareSerial::begin

Description
Sets the speed (baud rate) for the serial communication

Syntax
void SoftwareSerial::begin(long speed)
void SoftwareSerial::begin(long speed, int data_bits, int parity, int stop_bits)
void SoftwareSerial::begin(long speed, int data_bits, int parity, int stop_bits, int flowctrl, int rtsPin, int ctsPin)

Parameters
speed: the baud rate
data_bits: number of data bits, 8 bits(default) or 7 bits
stop_bits: number of stop bits, 1 bit(default), 1.5 bits or 2 bits
flowctrl: flow control pin
rtsPin: request to send pin
ctsPin: clear to send pin

Returns
The function returns nothing.

Example Code
Example: SoftwareSerialExample
The example demonstrates a software serial test, it receives from serial RX and sends it to serial TX. Details of the code can be found in the previous section of SoftwareSerial_Basic:: SoftwareSerial.

Notes and Warnings
NA
 

SoftwareSerial::listen

Description
Enables the selected software serial port to listen

Syntax
bool SoftwareSerial::listen(void)

Parameters
The function requires no input parameter.

Returns
Returns true if it replaces another

Example Code
NA

Notes and Warnings
NA
 

SoftwareSerial::end

Description
Same as stopListening

Syntax
void SoftwareSerial::end(void)

Parameters
The function requires no input parameter.

Returns
The function returns nothing.

Example Code
NA

Notes and Warnings
NA
 

SoftwareSerial::isListening

Description
Tests to see if requested software serial port is actively listening

Syntax
bool SoftwareSerial::isListening(void)

Parameters
The function requires no input parameter.

Returns
The function returns “True” if the port is listening.

Example Code
NA

Notes and Warnings
NA
 

SoftwareSerial::stopListening

Description
Stop listening on the port

Syntax
bool SoftwareSerial::stopListening(void)

Parameters
The function requires no input parameter.

Returns
The function returns “True” if listening on the port is stopped.

Example Code
NA

Notes and Warnings
NA
 

SoftwareSerial::peek

Description
Return a character that was received on the RX pin of the software serial port

Syntax
int SoftwareSerial::peek(void)

Parameters
The function requires no input parameter.

Returns
The function returns the character read, or returns “-1” if none is available.

Example Code
NA

Notes and Warnings
NA
 

SoftwareSerial::write

Description
Prints data to the transmit pin of the software serial port as raw bytes

Syntax
size_t SoftwareSerial::write(uint8_t b)

Parameters
b: byte to be written

Returns
The function returns the number of bytes written.

Example Code
Example: SoftwareSerialExample
The example demonstrates a software serial test, it receives from serial RX and sends it to serial TX. Details of the code can be found in the previous section of SoftwareSerial:: SoftwareSerial.

Notes and Warnings
NA
 

SoftwareSerial::read

Description
Return a character that was received on the RX pin of the software serial port

Syntax
int SoftwareSerial::read(void)

Parameters
The function requires no input parameter.

Returns
The function returns the character read, or -1 if none is available.

Example Code
Example: SoftwareSerialExample
The example demonstrates a software serial test, it receives from serial RX and sends it to serial TX. Details of the code can be found in the previous section of SoftwareSerial:: SoftwareSerial.

Notes and Warnings
NA
 

SoftwareSerial::available

Description
Get the number of bytes available for reading from a software serial port

Syntax
int SoftwareSerial::available(void)

Parameters
The function requires no input parameter.

Returns
The function returns the number of bytes available to read.

Example Code
Example: SoftwareSerialExample
The example demonstrates a software serial test, it receives from serial RX and sends it to serial TX. Details of the code can be found in the previous section of SoftwareSerial:: SoftwareSerial.

Notes and Warnings
NA
 

SoftwareSerial::flush

Description
Flush the received buffer

Syntax
void SoftwareSerial::flush(void)

Parameters
The function requires no input parameter.

Returns
The function returns nothing.

Example Code
NA

Notes and Warnings
NA
 

SoftwareSerial::setBufferSize

Description
Set buffer size

Syntax
void SoftwareSerial::setBufferSize(uint32_t buffer_size)

Parameters
buffer_size: the size of the serial buffer

Returns
The function returns nothing.

Example Code
NA

Notes and Warnings
NA
 

SoftwareSerial::setAvailableCallback

Description
Set available callback

Syntax
void SoftwareSerial::setAvailableCallback(void (*callback)(char c))

Parameters
*callback: user-defined serial callback function

Returns
The function returns nothing.

Example Code
Example: SoftwareSerialIrqCallback
This example demonstrates the software serial testing using IRQ callback and semaphore. Set callback function “mySerialCalback” to software serial. Whenever there is data comes in, “mySerialCallback” is invoked. In this sketch, it does nothing until the end of the line. And then it sends a semaphore. The loop() uses a non-busy loop to wait for the semaphore. To test this sketch, you need to type something on software serial and then press Enter.

/* 
 The circuit: (BOARD RTL8195A) 
 RX is digital pin 0 (connect to TX of other devices) 
 TX is digital pin 1 (connect to RX of other devices) 
*/  
#include <SoftwareSerial.h>   
  
#if defined(BOARD_RTL8195A)  
SoftwareSerial mySerial(0, 1); // RX, TX  
#elif defined(BOARD_RTL8710)  
SoftwareSerial mySerial(17, 5); // RX, TX  
#else  
SoftwareSerial mySerial(0, 1); // RX, TX  
#endif  
  
uint32_t semaID;  
  
// The callback is hooking at UART IRQ handler and please don't do heavy task here.
void mySerialCallback(char c)  
{  
  /*  The parameter c is only for peeking. The actual data is 
   *  still in the buffer of SoftwareSerial. 
   */  
  if (c == '\r' || c == '\n') {  
    os_semaphore_release(semaID);  
  }  
}  
  
void setup() {  
  // use 1 count for binary semaphore  
  semaID = os_semaphore_create(1);  
  
  // There is a token in the semaphore, clear it.  
  os_semaphore_wait(semaID, 0xFFFFFFFF);  
  
  // set the data rate for the SoftwareSerial port  
  mySerial.begin(38400);  
  mySerial.setAvailableCallback(mySerialCallback);  
}  
  
void loop() { // run over and over  
  // wait semaphore for 5s timeout  
  if (os_semaphore_wait(semaID, 5 * 1000)) {  
    // we got data before timeout  
    while(mySerial.available()) {  
      mySerial.print((char)mySerial.read());  
    }  
    mySerial.println();  
  } else {  
    mySerial.println("No data comes in.");  
  }  
}  

Notes and Warnings
NA
 

SoftwareSerial::handle_interrupt

Description
A private method handles the interrupt

Syntax
void handle_interrupt(uint32_t id, uint32_t event)

Parameters
id: the interupt id
event: interrupt event

Returns
The function returns nothing.

Example Code
NA

Notes and Warnings
NA

请先确认已安装QQ通讯软体