0
에 나는 위의 코드는 잘 작동 3Pymodbus은 라즈베리 파이 3
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
client = ModbusClient(method = 'rtu', port = '/dev/ttyUSB0', baudrate = 115200)
client.connect()
result = client.read_input_registers(0x3100,6,unit=1)
solarVoltage = float(result.registers[0]/100.0)
solarCurrent = float(result.registers[1]/100.0)
batteryVoltage = float(result.registers[4]/100.0)
chargeCurrent = float(result.registers[5]/100.0)
# Do something with the data
client.close()
라즈베리 파이에 pymodbus를 통해 모드 버스 장치에서 데이터를 얻기 위해 노력하고 있어요. 하지만 난이
result = client.read_input_registers(0x3200,unit=1)
처럼
예를 들어, 내가 노력하고 뭔가 아래에 주어진 정보로부터 비트를하고 싶지만 내가 result.registers
를 호출 할 때 표시 출력은 0 하지만 내가 원하는 D0 ~ D15의 값을 얻습니다. 어떻게 할 수 있습니까? 감사합니다
안녕하십니까, 답장을 보내 주셔서 감사합니다. 당신이 언급 한 명령은 오직 3200과 3201을 별도로 호출하여 얻을 수있는 동일한 출력 인 [0], [1]을 돌려주었습니다. 제 질문은 D0, D1 .....이 그런 경우 어떻게 액세스 할 수 있는지에 대한 것입니다. 감사합니다. –
나는 당신이 무엇을 요구하고 있는지 이해합니다. 예, 돌아 오는 값은 정수 값입니다. 그들을 비트로 나누어 비트 값을 얻습니다. 귀하의 경우, 3200이 0을 읽으면 D0-D15는 0이고 3201이 1이면 D0 = 1이고 나머지는 D1-D15가 0입니다. – Pal
정수를 바이너리로 변환 한 다음 사양에 따라 개별 비트 범위에 액세스 할 수 있습니다. "
"batt_temp = int (결과 [4 : 7]) "
"batt_resistance (결과 : [0 : 0] = int (결과 [8])'
' 오류 = int (결과 [15]) ' – Sanju