我使用提供的pyA13 0.2.2 SPI驅動程序將數據發送到LCD來編程我的 A13-OLinuXino-MICRO。理想情況下,我想發送一個包含320 * 240 * 2(320 * 240像素,每種顏色16位)字節的列表,以寫入一個連續寫入命令以提高速度。 spi.c和spi_lib.c中的驅動程序有一個8位tx_len,將我限制爲256字節,所以我將它們修改爲32位,但是現在當我嘗試傳遞超過4096個值的列表時收到錯誤spi.write(data [:])函數。下面是我使用,以填補了堅實的顏色,是16位的屏幕代碼:Python IOError:[Errno 90]消息太長,將長列表傳遞給SPI函數
def FillScreen(c):
LCD_SetPos(0, 0, 239, 319)
ch = c>>8 & 0x00FF
cl = c & 0x00FF
d =[]
for x in range (0,76800):
d += [ch, cl]
spi.write(d[:])
這是我的錯誤,當我運行函數:
Traceback (most recent call last):
File "lcd.py", line 205, in <module>
FillScreen(0x00FF)
File "lcd.py", line 200, in FillScreen
spi.write(d[:])
IOError: [Errno 90] Message too long
的一塊這是給我這個錯誤代碼包含在spi.c
/* Send data */
if(spi_write(fd, tx_buffer, tx_len) < 0){
return PyErr_SetFromErrno(PyExc_IOError);
}
有沒有我可以通過一個較長的消息給spi.write功能什麼辦法?我對python非常陌生,但對C很滿意,請在我的代碼上輕鬆一下......另外,我嘗試了循環較小的消息來填充屏幕,但這需要很長時間。任何幫助,將不勝感激。
感謝, 邁克爾
您還可以通過'cat/sys/module/spidev/parameters/bufsiz'找出當前的最大傳輸大小。 –
嗨Alex,非常感謝您提供這個有用的信息!但是我沒有名爲/etc/modprobe.d/local.conf的文件=(我的modprobe.d文件夾包含: fbdev-blacklist.conf alsa-base-blacklist.conf alsa-base.conf 8192cu。 conf 8188eu.conf cat/sys/module/spidev/parameters/bufsiz確實返回4092 ... 你能建議我做什麼來添加該選項?我試着用你建議的選項創建一個local.conf文件,但是什麼也沒做。 再次感謝 –
我發現了一個解決方案,現在似乎適用於我,因爲我無法弄清楚如何添加Alex Haim描述的'options'方法。相反,我寫道,編輯/ SYS /模塊/ spidev /參數/ BUFSIZ文件bash腳本 '#!/斌/慶典 #靈寶BUFSIZ腳本 CD/SYS /模塊/ spidev /參數 搭配chmod 666 BUFSIZ 回聲65534> bufsiz' –