我正在使用一些由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