• Specification
    • 1. Introduction
    • 2. Basic concepts
    • 3. Data structure description language
    • 4.1 CAN bus transport layer
    • 4.2 UDP bus transport layer
    • 4.3 MAVLink bus transport layer
    • 4.4 CANFD bus transport layer
    • 5. Application level conventions
    • 6. Application level functions
    • 7. List of standard data types
    • 8. Hardware design recommendations
    • dsdl
      • ardupilot
      • uavcan
  • Implementations
    • Libuavcan
      • Platforms
      • Tutorials
        • 1. Library build configuration
        • 2. Node initialization and startup
        • 3. Publishers and subscribers
        • 4. Services
        • 5. Timers
        • 6. Time synchronization
        • 7. Remote node reconfiguration
        • 8. Custom data types
        • 9. Node discovery
        • 10. Dynamic node ID allocation
        • 11. Firmware update
        • 12. Multithreading
        • 13. CAN acceptance filters
      • FAQ
    • Pydronecan
      • Examples
        • Automated ESC enumeration
        • Dump All Messages
        • ESC throttle control
      • Tutorials
        • 1. Setup
        • 2. Basic usage
        • 3. Advanced usage
        • 4. Parsing DSDL definitions
    • AP Periph
    • Libcanard
    • dronecan dsdlc
  • GUI Tool
    • Overview
    • Examples
    • User guide
  • Examples
    • Simple sensor node
  • Discussions
Implementations /  Pydronecan /  Examples /  Dump All Messages

Dump All Messages

This example script shows how to dump all messages in human readable form

Writing the script

One code sample is worth 1024 words:

#!/usr/bin/env python3
'''
dump all messages in YAML format
'''

import dronecan, time, math

# get command line arguments
from argparse import ArgumentParser
parser = ArgumentParser(description='dump all DroneCAN messages')
parser.add_argument("--bitrate", default=1000000, type=int, help="CAN bit rate")
parser.add_argument("--node-id", default=100, type=int, help="CAN node ID")
parser.add_argument("--dna-server", action='store_true', default=False, help="run DNA server")
parser.add_argument("port", default=None, type=str, help="serial port")
args = parser.parse_args()
    
# Initializing a DroneCAN node instance.
node = dronecan.make_node(args.port, node_id=args.node_id, bitrate=args.bitrate)

# Initializing a node monitor, so we can see what nodes are online
node_monitor = dronecan.app.node_monitor.NodeMonitor(node)

if args.dna_server:
    # optionally start a DNA server
    dynamic_node_id_allocator = dronecan.app.dynamic_node_id.CentralizedServer(node, node_monitor)

# callback for printing all messages in human-readable YAML format.
node.add_handler(None, lambda msg: print(dronecan.to_yaml(msg)))

# Running the node until the application is terminated or until first error.
try:
    node.spin()
except KeyboardInterrupt:
    pass

Running the script

Save the above code somewhere and run it. It will print all messages on the bus in YAML format


Pydronecan

  • Examples
    • Automated ESC enumeration
    • Dump All Messages
    • ESC throttle control
  • Tutorials
    • 1. Setup
    • 2. Basic usage
    • 3. Advanced usage
    • 4. Parsing DSDL definitions

Contents

  • Dump All Messages
    • Writing the script
    • Running the script

License

This work is licensed under a Creative Commons Attribution 4.0 International License.
Much of the content of this site is based upon prior work by Pavel Kirienko and the UAVCAN Development Team.
  • https://dronecan.org/discord
  • https://github.com/DroneCAN
  • Report a problem with this website

Generated Sun, 02 Jun 2024 21:47:21 +0000 © DroneCAN development team

  • 1. Introduction
  • 2. Basic concepts
  • 3. Data structure description language
  • 4.1 CAN bus transport layer
  • 4.2 UDP bus transport layer
  • 4.3 MAVLink bus transport layer
  • 4.4 CANFD bus transport layer
  • 5. Application level conventions
  • 6. Application level functions
  • 7. List of standard data types
  • 8. Hardware design recommendations
  • dsdl
    • ardupilot
    • uavcan
  • Libuavcan
    • Platforms
    • Tutorials
      • 1. Library build configuration
      • 2. Node initialization and startup
      • 3. Publishers and subscribers
      • 4. Services
      • 5. Timers
      • 6. Time synchronization
      • 7. Remote node reconfiguration
      • 8. Custom data types
      • 9. Node discovery
      • 10. Dynamic node ID allocation
      • 11. Firmware update
      • 12. Multithreading
      • 13. CAN acceptance filters
    • FAQ
  • Pydronecan
    • Examples
      • Automated ESC enumeration
      • Dump All Messages
      • ESC throttle control
    • Tutorials
      • 1. Setup
      • 2. Basic usage
      • 3. Advanced usage
      • 4. Parsing DSDL definitions
  • AP Periph
  • Libcanard
  • dronecan dsdlc
  • Overview
  • Examples
  • User guide
  • Simple sensor node
Specification1. Introduction2. Basic concepts3. Data structure description language4.1 CAN bus transport layer4.2 UDP bus transport layer4.3 MAVLink bus transport layer4.4 CANFD bus transport layer5. Application level conventions6. Application level functions7. List of standard data types8. Hardware design recommendationsdsdlardupilotuavcanImplementationsLibuavcanPlatformsTutorials1. Library build configuration2. Node initialization and startup3. Publishers and subscribers4. Services5. Timers6. Time synchronization7. Remote node reconfiguration8. Custom data types9. Node discovery10. Dynamic node ID allocation11. Firmware update12. Multithreading13. CAN acceptance filtersFAQPydronecanExamplesAutomated ESC enumerationDump All MessagesESC throttle controlTutorials1. Setup2. Basic usage3. Advanced usage4. Parsing DSDL definitionsAP PeriphLibcanarddronecan dsdlcGUI ToolOverviewExamplesUser guideExamplesSimple sensor nodeDiscussions