Lassen Sie uns vorerst eine einfache Funktion implementieren.
Alles kann mit Micropython ausgeführt werden, sodass es nicht erforderlich ist, es in C zu implementieren. Minimale Bestätigung für den Fall, dass Sie in Zukunft etwas in C implementieren müssen.
Ich konnte die Dokumentation nicht finden und habe den auf git veröffentlichten Micropython-Code befolgt und implementiert, sodass es möglicherweise einen anderen Weg gibt ... (Ich würde es begrüßen, wenn Sie es wissen)
STATIC mp_obj_t return_str(mp_obj_t str_obj)
{
const char *str = mp_obj_str_get_str(str_obj);
return mp_obj_new_str(str, strlen(str));
}
--Erstellen
STATIC mp_obj_t list_new()
{
mp_obj_t list_items[] = {
mp_obj_new_int(123),
mp_obj_new_float(456.789),
mp_obj_new_str("hello", 5),
};
return mp_obj_new_list(3, list_items);
}
//Wenn das Element, das Sie hinzufügen möchten, ein int-Typ ist
STATIC mp_obj_t list_append(mp_obj_t list_obj, mp_obj_t item_int_obj)
{
mp_int_t item_obj = mp_obj_get_int(item_int_obj);
mp_obj_t item = mp_obj_new_int(item_obj);
mp_obj_list_append(list_obj, item);
return list_obj;
}
//Wenn das Element, das Sie löschen möchten, vom Typ int ist
STATIC mp_obj_t list_remove(mp_obj_t list_obj, mp_obj_t item_int_obj)
{
mp_int_t item_obj = mp_obj_get_int(item_int_obj);
mp_obj_t item = mp_obj_new_int(item_obj);
mp_obj_list_remove(list_obj, item);
return list_obj;
}
--Erstellen
STATIC mp_obj_t dict_new()
{
mp_obj_t dict_obj = mp_obj_new_dict(3);
mp_obj_dict_store(dict_obj, mp_obj_new_str("test_key1", 9), mp_obj_new_int(123));
mp_obj_dict_store(dict_obj, mp_obj_new_str("test_key2", 9), mp_obj_new_float(456.789));
mp_obj_dict_store(dict_obj, mp_obj_new_str("test_key3", 9), mp_obj_new_str("hello", 5));
return dict_obj;
}
//Das Element, das Sie hinzufügen möchten['str Typ': 'str Typ']Im Falle von
STATIC mp_obj_t dict_store(mp_obj_t dict_obj, mp_obj_t key_str_obj, mp_obj_t value_str_obj)
{
mp_obj_dict_get_map(dict_obj);
const char *key = mp_obj_str_get_str(key_str_obj);
const char *val = mp_obj_str_get_str(value_str_obj);
mp_obj_dict_store(dict_obj, mp_obj_new_str(key, strlen(key)), mp_obj_new_str(val, strlen(val)));
return dict_obj;
}
//Wenn der Schlüssel, den Sie löschen möchten, str-Typ ist
STATIC mp_obj_t dict_delete(mp_obj_t dict_obj, mp_obj_t key_str_obj)
{
mp_obj_dict_get_map(dict_obj);
const char *del_key = mp_obj_str_get_str(key_str_obj);
mp_obj_dict_delete(dict_obj, mp_obj_new_str(del_key, strlen(del_key)));
return dict_obj;
}
//Funktion zum Aufrufen
STATIC mp_obj_t return_str(mp_obj_t str_obj)
{
const char *str = mp_obj_str_get_str(str_obj);
return mp_obj_new_str(str, strlen(str));
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(return_str_obj, return_str);
//Als Modul definiert
STATIC const mp_rom_map_elem_t example_module_globals_table[] = {
//Name beim Import mit Micropython
{MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_example)},
//Name beim Aufrufen einer Funktion aus Micropython
{MP_ROM_QSTR(MP_QSTR_return_str), MP_ROM_PTR(&return_str_obj)},
};
STATIC MP_DEFINE_CONST_DICT(example_module_globals, example_module_globals_table);
const mp_obj_module_t example_cmodule = {
.base = {&mp_type_module},
.globals = (mp_obj_dict_t *)&example_module_globals,
};
Erstellen Sie .C wie oben und fügen Sie es der zu erstellenden Micropython-Quelle hinzu. Aus Mikropython
import example
example.return_str()
Verwenden Sie es so.
Recommended Posts