2017-11-20 3 views
0

내 네트워크의 esp32에서 mqtt를 통해 내 RPi로 값을 보내려고합니다. 그러면이 값을 평가하고 그 값을 사용합니다.int/float 변환 문자열이 나무 딸기 파이 파이썬에서 작동하지 않습니다

나는 코드를 작성하고 아무런 문제없이 내 PC에서 시험해 보았지만 정확히 동일한 코드를 RPi에 실행하면 ValueError이 출력되기 시작합니다. 이 같은 코드를 실행하면

payload = str(message.payload) 
payload = float(payload[2:-1]) 

, 그것은 말한다 :

ValueError: could not convert string to float: 

먼저 또한 정수로 변환 할 때 오류가 반환

ValueError: invalid literal for int() with base 10: '' 

합니다 ([2 : - 1]은 변환 될 페이로드/스트링이 항상 b '페이로드'로 수신되기 때문에 필요합니다.

PC에서 사용하면 오류가 발생하지 않습니다. 또한 변환하기 전에 문자열을 인쇄 해 보았습니다.이 문자열은 숫자로만 구성되었음을 보여줍니다. 모두 내 PC와 RPI에

임 실행 Python3.4 (뿐만 아니라 2.7 시도가 작동하지 않았다.)

나는 누군가가 나에게 이상한 행동을 설명 할 수 있기를 바랍니다, 감사합니다 사전에.

답변

1
  1. 바이트 배열을 str으로 변환하는 올바른 방법은 슬라이스가 아닙니다.

  2. string[2:-1]string 3 자 미만의 빈 문자열을 반환합니다. 사실

, 모두 intfloat 숫자를 표현 바이트 배열을 받아, 그래서 당신이 귀찮게하지 않아야합니다.

float(message.payload)이 작동해야합니다 (비어 있지 않으며 코스 번호를 나타내는 경우).

관련 문제