亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Raspberry Pi MAX31865 Python 到 Java 的轉換

Raspberry Pi MAX31865 Python 到 Java 的轉換

翻閱古今 2024-01-05 14:59:19
我正在嘗試將讀取 MAX13865 傳感器的一段 Python 代碼轉換為 Java。Python 代碼運行良好并返回預期的數字 (1238),而 Java 版本始終返回 32767。為了簡化閱讀,我將 Python 代碼和 Java 代碼減少到最小。下面的 Python 代碼仍然運行得很好。我缺少什么?看起來很簡單,但是還是不行……#!/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 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

問題與 Pi4J 映射 GPIO 引腳號與 Python 版本的方式有關。

https://www.pi4j.com/1.2/pins/model-3b-rev1.html

Python版本:

MAX31865(8, 11, 9, 10)

以及 java 的等價物:

MAX31865 max = new MAX31865(RaspiPin.GPIO_10, RaspiPin.GPIO_14, RaspiPin.GPIO_13, RaspiPin.GPIO_12);

請注意,引腳編號不同。但現在兩者給出了完全相同的結果。其他一切都很好。

實時調頻:(


查看完整回答
反對 回復 2024-01-05
  • 1 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號