Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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.

The 02-uart_raw Sample Application

The 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.

Setup

To test bidirectional UART messaging:

...

Tip

You need to know the API and CLI serial ports corresponding to your

Include Page
_def_mote
_def_mote
. You will connect the uart_raw_app.py Python script to the API port, and the terminal client to the CLI port.

Refer to the SmartMesh IP Tools Guide for information about how to identify the different serial ports.

Overview

The 02-uart_raw sample application creates two tasks.

...


Note

Before you run this application, make sure you have Python and pyserial installed on your computer.

Refer to the SmartMesh IP Tools Guide for installation instructions.

The uart_raw_app.py Python script defines the same CLI commands are the 02-uart_raw sample application, i.e. lendelay 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 
Include Page
_def_mote
_def_mote
.
You can type help on both the 02-uart_raw sample application and the uart_raw_app.py Python script to obtain the list of available commands.
Type help on the your 
Include Page
_def_mote
_def_mote
:


No Format
> uart_raw app, ver 1.2.0.1
SmartMeshIP stack, ver 1.4.0.5
> help
help <command>
Commands:
   mtrace
   mset
   mget
   mseti
   mgeti
   mxtal
   mfs
   mlog
   mtrace
   minfo
   mshow
   len
   delay
   tx
>

Type help in the uart_rawapp.py Python script:

No Format
uart_app OCFDK Sample application
> help
Commands:
   connect <comPort>
   baudrate <bps>
   stopbits <stopbits>
   len <numBytes>
   delay <numMs>
   tx <numPackets>
   exit
>

Send UART frames from the 
Include Page
_def_mote
_def_mote

First, connect the uart_raw_app.py Python script to the API port of your 

Include Page
_def_mote
_def_mote
 (here on COM28).

No Format
> connect COM28
>

On the 

Include Page
_def_mote
_def_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. 

No Format
> len 10
> delay 100
> tx 5
> 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).

No Format
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

Receive UART frames at the 
Include Page
_def_mote
_def_mote

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 

Include Page
_def_mote
_def_mote
:

No Format
> len 10
> delay 100
> tx 5
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 

Include Page
_def_mote
_def_mote
:

No Format
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

The mote uses the inter-byte timeout provided in the dn_open() call to "frame" the incoming bytes.