这是我的代码
import wiringpi2 as wiringpi
# Ä
cap_umlaut_a = [
int('0b01010', 2),
int('0b00100', 2),
int('0b01010', 2),
int('0b10001', 2),
int('0b11111', 2),
int('0b10001', 2),
int('0b10001', 2),
int('0b00000', 2)
]
print(cap_umlaut_a) # [10, 4, 10, 17, 31, 17, 17, 0]
wiringpi.lcdCharDef(lcd_handle, 0, cap_umlaut_a)
当我运行此代码时,我收到以下错误:
TypeError:在方法'lcdCharDef'中,类型为'unsigned char [8]'的参数3
我希望这些ints
与unsigned chars
[编辑]
在代码的不同部分,我使用ord(char)
仅将一个字符转换为unsigned int。这可以导致正确的anser吗?
如何将数组转换/转换为可以接受的类型?
P.S。 (注意(据我所知)python wiringPi库只包含wiringPi的C函数。
[编辑]
我在github上打开了一个问题:https://github.com/WiringPi/WiringPi2-Python/issues/20
答案 0 :(得分:1)
我做了一些研究,发现了相关python绑定的来源at this github repo。
有问题的行是
res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_unsigned_char, 0 | 0 );
正如您所看到的,您必须将指向python的指针传递给unsigned char。根据{{3}},等价物是一个字节串。这意味着正确的呼叫将是
import struct
wiringpi.lcdCharDef(lcd_handle, 0, struct.pack('8B', *cap_umlaut_a))
应该等同于
wiringpi.lcdCharDef(lcd_handle, 0, b'\x0A\x04\x0A\x11\x1F\x11\x11\x00')