将值从SPI编码器转换/读取到整数

时间:2017-07-27 01:12:02

标签: python raspberry-pi spi

我目前正在做一个项目,包括从使用SPI的绝对编码器读取值。取这些值修改它们并将它们发送到电机。我已经能够读取编码器中的值,但它们的出现是我所理解的' List'我无法修改并发回的变量。我需要将它们转换为整数。当我尝试

int(temp[1])

我收到此错误:" TypeError:int()参数必须是字符串或数字,而不是' list'" 这是我的代码:

#Import Librarys
import RPi.GPIO as GPIO
import time
import spidev

#Setup GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(24,GPIO.OUT)

#Declare variables and librarys
temp = [1,2]
spi = spidev.SpiDev()

#Recieving Values from Absolute Encoder

while True:

spi.open(0,0)                       #Opens the SPI Slave State Port for communication

spi.xfer([0x10])                    #Transfers the read position command [0x10]
while spi.xfer([0x10])!=[0x10]:     #Waits for the response
    spi.xfer([0x00])                #Sends a blank command while waiting
    time.sleep(.1)

temp[0] = spi.xfer([0x00])          #Pulls first Byte
temp[1] = spi.xfer([0x00])          #Pulls second Byte



print(temp[0])
print(temp[1])

以下是我的输出示例:

[10]   
[125]
[10]
[125]
[10]
[125]
[10]
[125]
[10]
[125]
[10]
[125]
[10]
[125]

1 个答案:

答案 0 :(得分:0)

spi.xfer始终返回一个列表。如果您知道只返回一个字节,则可以通过索引检索它:

temp[0] = spi.xfer([0x00])[0]
temp[1] = spi.xfer([0x00])[0]