파이썬 측 int()의 데이터가 예상과 같이 기본 10 자릿수가 아님을 의미하는 잘못된 리터럴 오류가 발생했습니다. 나는 것을 얻을 수 있지만, 아두 이노 측면에 나는 시리얼을 통해 보내 :이 그것을 집어arduino에서 python (raspberryPi)으로 오는 데이터가 유효하지 않습니다. 리터럴 오류
void loop()
{
temperature = bmp085GetTemperature(bmp085ReadUT());
pressure = bmp085GetPressure(bmp085ReadUP());
Serial.println(temperature, DEC); //fails on python side, outputs a 240 usually
delay(50);
Serial.println(pressure, DEC); //pa
delay(1000);
}
및 파이썬 측 :
이while True:
if(serialFromArduino.inWaiting() > 0):
input = serialFromArduino.readline().rstrip()
print(input)
inputAsInteger =int(input) #FAILS
print("done")
심지어 rstrip가 확인 않았다 내가 어떤 \의 t \ r에 \를 제거 N 등
그래서 나는 왜 일정
[email protected] ~/pythoncode $ python serialtest.py
Running
240
Traceback (most recent call last):
File "serialtest.py", line 18, in <module>
inputAsInteger =int(input)
ValueError: invalid literal for int() with base 10: ''
그냥 있는지 여부에 의아해입니다 얻을 내가 실종 됐어? 파이썬에 익숙하다. 그렇기 때문에 내가 할 수있는 일은 믿기지 않을 정도로 어리 석다.
디버그 프린트에서 정확히 무엇을 처리하는지 알기 때문에 다음을 시도해보십시오 :'print (input.encode ('hex'))' –
awesome! 좋아, 내가 그 옵션을 가지고 있었는지, 다시 bazillion 0을 가지고 도망 간다는 것을 알지 못한다. 0323430은 아스키 값인가? 이전 숫자가 2951의 수인 0s – Codejoy
예, '00 32 34 30'은 (널 바이트)'2 ''4 ''0 '입니다. 그래서 당신의 데이터는 널 문자들로 가득 차 있습니다. 그들을 제거하는 방법에 대한 내 대답을 참조하십시오. 나는 왜 그것이 일어나고 있는지 확실하지 않다. 'serialFromArduino' 란 무엇입니까? –