我正在使用一些由Fraser May编写的MCP8004(adc)的代码,我修改了MCP3002连接到Raspberry Pi 1B +,现在正试图将收集的数据发送到sparkfun服务器,只有我发现我尝试抓取数据返回一个空字符串。我是Python的新手,但有一些来自学校(ME)的编码经验。Python:这种格式化工作如何提取正确的数据?
这是我必须收集ADC数据:
def getAdc (channel):
#check valid channel
if ((channel>1)or(channel<0)):
return -1
# Preform SPI transaction and store returned bits in 'r'
r = spi.xfer([1, (4+2+channel) << 4, 0])
#Filter data bits from retruned bits
adcOut = ((r[0]&3) << 8) + r[1]
percent = int(round(adcOut/10.24))
#print out 0-1023 value and percentage
print("ADC Output: {0:4d} Percentage: {1:3}%".format (adcOut,percent))
sleep(1)
return adcOut
在我的脚本将数据发送给我做这个(加修饰phant东西)服务器
现在:
adcOut=[]
while True:
print("collecting data")
adc = [] #sets adc as a list
for i in range(2):
getAdc(i)
adc.append(adcOut)
print adcOut
print("ADC data collected!")
我想我可以拨打adc[0]
或adc[1]
来获得我想要的数据,它显示在getAdc
函数中,但显然不是,我得到一个空列表([]
)。
我认为我的问题是在getAdc
发生了什么,其中{0:4d}
和{1:3}
被使用,但我不确定那些是做什么的。任何人都可以帮助打破这部分?到目前为止,我所能找到的都是解释什么是d
和%
的文档,但在我这里应用时,它们对我没有意义。
在此先感谢!
*备注:adcOut
已在我的getAdc
脚本之前声明为全局。
您应该让'getAdc'返回值而不是仅仅打印它们。 – BrenBarn
'adcOut'在哪里填充值?你为什么不把'getAdc(i)'存储在一个变量中? – Dan
哎呀,编辑纠正。我使用的代码在最后“返回adcOut”......我从我在PC上的文件复制了此文件,而不是我的Pi上的确切版本。我的麻烦似乎在拉我从adcOut中得到的东西。 adcOut在getAdc(顶部代码)中填充,进一步向下调用getAdc(底部代码)来抓取adcOut – gr8flux