我正在嘗試將讀取 MAX13865 傳感器的一段 Python 代碼轉(zhuǎn)換為 Java。Python 代碼運(yùn)行良好并返回預(yù)期的數(shù)字 (1238),而 Java 版本始終返回 32767。為了簡(jiǎn)化閱讀,我將 Python 代碼和 Java 代碼減少到最小。下面的 Python 代碼仍然運(yùn)行得很好。我缺少什么?看起來(lái)很簡(jiǎn)單,但是還是不行……#!/usr/bin/python -ttimport RPi.GPIO as GPIOimport timeimport datetimeimport mathclass MAX31865(object): def __init__(self, cs_pin, clock_pin, data_in_pin, data_out_pin, board = GPIO.BCM): self.cs_pin = cs_pin self.clock_pin = clock_pin self.data_in_pin = data_in_pin self.data_out_pin = data_out_pin self.board = board # Initialize needed GPIO GPIO.setmode(self.board) GPIO.setup(self.cs_pin, GPIO.OUT) GPIO.setup(self.clock_pin, GPIO.OUT) GPIO.setup(self.data_in_pin, GPIO.IN) GPIO.setup(self.data_out_pin, GPIO.OUT) # Pull chip select high to make chip inactive GPIO.output(self.cs_pin, GPIO.HIGH) def get_data(self): '''Acqures raw RDT data.''' self.address = int(0x01) #RTD MSBs MSB = self.read() self.address = int(0x02) #RTD LSBs LSB = self.read() MSB = MSB<<8 raw = MSB+LSB raw = raw>>1 return raw def read(self): '''Reads 16 bits of the SPI bus from a self.address register & stores as an integer in self.data.''' bytesin = 0 # Select the chip GPIO.output(self.cs_pin, GPIO.LOW) # Assert clock bit GPIO.output(self.clock_pin, GPIO.LOW) # Write to address for i in range(8): bit = self.address>>(7 - i) bit = bit & 1 GPIO.output(self.data_out_pin, bit) GPIO.output(self.clock_pin, GPIO.HIGH) GPIO.output(self.clock_pin, GPIO.LOW) # Read in 8 bits for i in range(8): GPIO.output(self.clock_pin, GPIO.HIGH) bytesin = bytesin << 1 if (GPIO.input(self.data_in_pin)): bytesin = bytesin | 1 GPIO.output(self.clock_pin, GPIO.LOW)
1 回答

天涯盡頭無(wú)女友
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
問(wèn)題與 Pi4J 映射 GPIO 引腳號(hào)與 Python 版本的方式有關(guān)。
https://www.pi4j.com/1.2/pins/model-3b-rev1.html
Python版本:
MAX31865(8, 11, 9, 10)
以及 java 的等價(jià)物:
MAX31865 max = new MAX31865(RaspiPin.GPIO_10, RaspiPin.GPIO_14, RaspiPin.GPIO_13, RaspiPin.GPIO_12);
請(qǐng)注意,引腳編號(hào)不同。但現(xiàn)在兩者給出了完全相同的結(jié)果。其他一切都很好。
實(shí)時(shí)調(diào)頻:(
添加回答
舉報(bào)
0/150
提交
取消