
uctypes.bytearray_at(addr, size)
Capture memory at the given address and size as
bytearray
object. Unlike
bytes_at()
function above, memory is captured by reference, so it can be both written too, and you will
access current value at the given memory address.
Structure Descriptors and Instantiating Structure Objects
Given a structure descriptor dictionary and its layout type, you can instantiate a specific
structure instance at a given memory address using uctypes.struct() constructor. Memory
address usually comes from following sources:
Predefined address, when accessing hardware registers on a baremetal system.
Lookup these addresses in datasheet for a particular MCU/SoC.
As a return value from a call to some FFI (Foreign Function Interface) function.
From uctypes.addressof(), when you want to pass arguments to an FFI function, or
alternatively, to access some data for I/O (for example, data read from a file or network
socket).
Structure objects
Structure objects allow accessing individual fields using standard dot notation:
my_struct.substruct1.field1
. If a field is of scalar type, getting it will produce a primitive
value (Python integer or float) corresponding to the value contained in a field. A scalar field
can also be assigned to.
If a field is an array, its individual elements can be accessed with the standard subscript
operator
[]
- both read and assigned to.
If a field is a pointer, it can be dereferenced using
[0]
syntax (corresponding to C
*
operator, though
[0]
works in C too). Subscripting a pointer with other integer values but 0
are supported too, with the same semantics as in C.
Summing up, accessing structure fields generally follows C syntax, except for pointer
dereference, when you need to use
[0]
operator instead of
*
.
Limitations
Accessing non-scalar fields leads to allocation of intermediate objects to represent them.
This means that special care should be taken to layout a structure which needs to be
accessed when memory allocation is disabled (e.g. from an interrupt). The
recommendations are:
5.3.2 uctypes
351
Содержание FiPy
Страница 9: ...Product Info API Documentation Pybytes Preface 9 ...
Страница 14: ...OEM Module L01 W01 Reference Board Universal Reference Board W01 L01 L04 G01 Pycom Products 14 ...
Страница 18: ...1 1 Hardware Setup 18 ...
Страница 19: ...1 1 Hardware Setup 19 ...
Страница 66: ...1 2 3 Pymakr 66 ...
Страница 68: ...from it 1 3 Programming the modules 68 ...
Страница 77: ...import os os mkfs flash 1 3 3 Your first Pymakr project 77 ...
Страница 102: ...1 4 3 2 Objenious 102 ...
Страница 104: ...2 1 Installation 104 ...
Страница 110: ...2 1 1 Atom 110 ...
Страница 112: ...4 Within a few minutes a reload button should appear Press it to reload VSCode 2 1 2 Visual Studio Code 112 ...
Страница 113: ...5 That s it You ve installed the Pymakr Extension for VSCode 2 1 2 Visual Studio Code 113 ...
Страница 134: ...3 2 2 Installing Drivers Windows 7 134 ...
Страница 162: ...4 2 5 MQTT 162 ...
Страница 171: ...4 2 8 I2C 171 ...
Страница 179: ...4 2 11 RGB LED 179 ...
Страница 211: ...4 3 5 LoPy to LoPy 211 ...
Страница 247: ...4 7 Pysense Examples 247 ...
Страница 253: ...machine WAKEUP_ALL_LOW machine WAKEUP_ANY_HIGH 5 2 1 machine 253 ...
Страница 281: ...For more information on how Pycom s products handle interrupts see notes 5 2 1 10 Timer 281 ...
Страница 315: ...5 2 2 3 Bluetooth 315 ...
Страница 382: ...This method is NOT implemented Use ubinascii hexlify hash digest to achieve a similar effect 5 3 15 uhashlib 382 ...
Страница 384: ...ssl CERT_NONE ssl CERT_OPTIONAL ssl CERT_REQUIRED Supported values in cert_reqs 5 3 16 ussl 384 ...
Страница 392: ...hasattr hash hex id input class int isinstance issubclass iter len class list locals map 5 3 20 Builtin 392 ...
Страница 393: ...max class memoryview min next class object oct open ord pow print property range 5 3 20 Builtin 393 ...
Страница 394: ...repr reversed round class set setattr sorted staticmethod class str sum super class tuple type zip 5 3 20 Builtin 394 ...
Страница 395: ...5 3 20 Builtin 395 ...
Страница 400: ...6 1 1 WiPy 2 0 400 ...
Страница 405: ...LoRaWAN nano gateway BLE 6 1 3 LoPy 405 ...
Страница 410: ...BLE 6 1 5 SiPy 410 ...
Страница 415: ...6 1 7 FiPy 415 ...
Страница 427: ...6 2 5 L01 OEM Baseboard Reference 427 ...
Страница 430: ...6 2 6 Universal OEM Baseboard Reference 430 ...
Страница 435: ...The specsheet of the Pytrack is available as a PDF File 6 3 2 Pytrack 435 ...
Страница 437: ...The specsheet of the Pysense is available as a PDF File 6 3 3 Pysense 437 ...
Страница 440: ...Expansion Board 2 0 Pinout The pinout of the Expansion Board is available as a PDF File 6 3 5 Expansion Board 2 0 440 ...
Страница 443: ...6 3 6 Deep Sleep Shield 443 ...
Страница 449: ...OEM Module Datasheets 7 2 1 W01 7 2 2 L01 7 2 3 L04 7 2 4 G01 7 2 OEM Modules 449 ...
Страница 452: ...Visualise data from your device 8 1 Introduction 452 ...
Страница 455: ...3 Select your shield e g PySense PyTrack PyScan or other 4 Select your network option 8 3 Add a device to Pybytes 455 ...
Страница 461: ...5 The firmware updater will update the device s firmware 8 3 1 Connect to Pybytes Quick Add 461 ...
Страница 476: ...8 4 Visualise data from your device 476 ...