This section refers to the following sample application(s):
|
This application is new to OCSDK 1.2.0 |
In addition to the using the UART with hardware HDLC framing, the UART serial port can be used raw (not HDLC) encoded - this allows an external microcontroller or sensor with a UART interface to communicate with your application.
Your application can set up the UART device to trigger a notification whenever valid bytes are received over the serial port. Similarly, your application can send bytes over UART. In raw mode, you can configure the baud rate, number of stop bits, parity, and inter-byte delay settings.
02-uart_raw
Sample ApplicationThe 02-uart_raw
sample application creates two tasks, and defines three CLI commands - len
(gth), delay
, and tx
. A companion Python script uart_raw_app.py
runs on your computer and connects to the API UART port of your device.
To test bidirectional UART messaging:
02_uart_raw
sample applicationuart_raw_app.py
Python script (available in the onchipsdk/
src
/app/02-uart_raw/
directory)You need to know the API and CLI serial ports corresponding to your mote. You will connect the Refer to the SmartMesh IP Tools Guide for information about how to identify the different serial ports. |
02-uart_raw
sample application defines one CLI command:tx
<num_packets> <length> <delay> - transmit num_packets
packets of length
bytes, with an interpacket delay of delay
ms.uart_raw_app.py
Python script connects to the API port of your mote. It defines a number of commands allowing you to transmit UART frames to the mote. It also prints the UART frames it receives. Start the uart_raw_app.py
Python script by double-clicking on its file.Before you run this application, make sure you have Python and Refer to the SmartMesh IP Tools Guide for installation instructions. |
uart_raw_app.py
Python script defines the same CLI commands are the 02-uart_raw
sample application, i.e. len
, delay
and tx
. On top of those, the uart_raw_app.py
Python script defines the connect
command to connect it to the API serial port of your mote.help
on both the 02-uart_raw
sample application and the uart_raw_app.py
Python script to obtain the list of available commands.An example of the help text in the uart_rawapp.py
Python script is shown below:
uart_app OCFDK Sample application > help Commands: connect <comPort> baudrate <bps> stopbits <stopbits> len <numBytes> delay <numMs> tx <numPackets> exit > |
The 02-uart_raw
sample application creates two tasks:
uartTxTask
task opens the UART with a default set of connection parameters used in the dn_open()
call - the rate
, stopBits
, parity
, and ibTimeout
(inter-byte timeout). When the tx CLI command is called, the task transmits a number of UART "packets" from your mote to the uart_raw_app.py
Python script, and prints them on the CLI.uartRxTask
task listens for incoming UART bytes and prints them to the CLI. The uart_raw_app.py
Python script can be used to test reception. The mote uses the inter-byte timeout provided in the dn_open()
call to "frame" the incoming bytes.First, connect the uart_raw_app.py
Python script to the API port of your mote (here on COM28
).
> connect COM28 > |
On the mote, type the following command to send 5 packets of 10 bytes each, with an inter-packet delay of 100 ms to the uart_raw_app.py
Python script.
uart_raw app, ver 1.2.0.1 SmartMeshIP stack, ver 1.4.1.8 Connecting to UART: Rate=115200, SB=0, Parity=0, IBT=100 > tx 5 10 100 > Sending 5 UART packets, 10 bytes, delay 100 ms uart TX ( 5): 00 01 02 03 04 05 06 07 08 09 uart TX ( 4): 00 01 02 03 04 05 06 07 08 09 uart TX ( 3): 00 01 02 03 04 05 06 07 08 09 uart TX ( 2): 00 01 02 03 04 05 06 07 08 09 uart TX ( 1): 00 01 02 03 04 05 06 07 08 09 done. |
The following is printed by the uart_raw_app.py
Python script. Note that the uart_raw_app.py
uses the 00 as a break between packets - there is no data framing in the raw UART (other than the interpacket delay).
uart RX: 00 01 02 03 04 05 06 07 08 09 uart RX: 00 01 02 03 04 05 06 07 08 09 uart RX: 00 01 02 03 04 05 06 07 08 09 uart RX: 00 01 02 03 04 05 06 07 08 09 uart RX: 00 01 02 03 04 05 06 07 08 09 |
On the uart_raw_app.py
Python script, type the following command to send 5 packets of 10 bytes each, with an inter-packet delay of 100 ms to the :
> tx 5 10 100 Sending 5 UART packets, 10 bytes, delay 100 ms uart TX ( 5): 00 01 02 03 04 05 06 07 08 09 uart TX ( 4): 00 01 02 03 04 05 06 07 08 09 uart TX ( 3): 00 01 02 03 04 05 06 07 08 09 uart TX ( 2): 00 01 02 03 04 05 06 07 08 09 uart TX ( 1): 00 01 02 03 04 05 06 07 08 09 done. > |
The following is printed at the :
uart RX (10 bytes) 00 01 02 03 04 05 06 07 08 09 uart RX (10 bytes) 00 01 02 03 04 05 06 07 08 09 uart RX (10 bytes) 00 01 02 03 04 05 06 07 08 09 uart RX (10 bytes) 00 01 02 03 04 05 06 07 08 09 uart RX (10 bytes) 00 01 02 03 04 05 06 07 08 09 |