在哪里可以找到 uctypes micropython 模块
Where to find uctypes micropython module
我正在使用 circuitpython,需要访问 micropython uctypes 模块。我已经从 github 下载了 micropython 文件,但似乎找不到模块。有人可以帮忙吗?
看到这个 CircuitPython issue:这是一个已知的事情,看起来 none 个端口实际上启用了 uctypes 模块:为此,MICROPY_PY_UCTYPES
预处理器定义必须构建时非零,这通常在端口的 mpconfigport.h 中设置,但这里不是这种情况。
所以要么你必须自己构建(参见 https://learn.adafruit.com/building-circuitpython/)并将所述定义添加到 mpconfigport.h 或在命令行上传递它,要么找到替代解决方案(相同 link 提到可以使用 struct
模块,这可能确实取决于确切的用例)。
要在 CircuitPython 7.0 中启用 uctypes,请尝试以下补丁。它对我有用。
--- extmod/moductypes.c.orig 2021-11-27 00:07:08.000000000 +0900
+++ extmod/moductypes.c 2021-11-27 00:11:13.000000000 +0900
@@ -544,7 +544,7 @@
}
} else if (agg_type == PTR) {
- byte *p = *(void **)self->addr;
+ byte *p = *(void **)((void *)self->addr);
if (mp_obj_is_small_int(t->items[1])) {
uint val_type = GET_TYPE(MP_OBJ_SMALL_INT_VALUE(t->items[1]), VAL_TYPE_BITS);
return get_aligned(val_type, p, index);
@@ -574,7 +574,7 @@
mp_int_t offset = MP_OBJ_SMALL_INT_VALUE(t->items[0]);
uint agg_type = GET_TYPE(offset, AGG_TYPE_BITS);
if (agg_type == PTR) {
- byte *p = *(void **)self->addr;
+ byte *p = *(void **)((void *)self->addr);
return mp_obj_new_int((mp_int_t)(uintptr_t)p);
}
}
我正在使用 circuitpython,需要访问 micropython uctypes 模块。我已经从 github 下载了 micropython 文件,但似乎找不到模块。有人可以帮忙吗?
看到这个 CircuitPython issue:这是一个已知的事情,看起来 none 个端口实际上启用了 uctypes 模块:为此,MICROPY_PY_UCTYPES
预处理器定义必须构建时非零,这通常在端口的 mpconfigport.h 中设置,但这里不是这种情况。
所以要么你必须自己构建(参见 https://learn.adafruit.com/building-circuitpython/)并将所述定义添加到 mpconfigport.h 或在命令行上传递它,要么找到替代解决方案(相同 link 提到可以使用 struct
模块,这可能确实取决于确切的用例)。
要在 CircuitPython 7.0 中启用 uctypes,请尝试以下补丁。它对我有用。
--- extmod/moductypes.c.orig 2021-11-27 00:07:08.000000000 +0900
+++ extmod/moductypes.c 2021-11-27 00:11:13.000000000 +0900
@@ -544,7 +544,7 @@
}
} else if (agg_type == PTR) {
- byte *p = *(void **)self->addr;
+ byte *p = *(void **)((void *)self->addr);
if (mp_obj_is_small_int(t->items[1])) {
uint val_type = GET_TYPE(MP_OBJ_SMALL_INT_VALUE(t->items[1]), VAL_TYPE_BITS);
return get_aligned(val_type, p, index);
@@ -574,7 +574,7 @@
mp_int_t offset = MP_OBJ_SMALL_INT_VALUE(t->items[0]);
uint agg_type = GET_TYPE(offset, AGG_TYPE_BITS);
if (agg_type == PTR) {
- byte *p = *(void **)self->addr;
+ byte *p = *(void **)((void *)self->addr);
return mp_obj_new_int((mp_int_t)(uintptr_t)p);
}
}