0

I'm trying to read the status of a PushButton with python via pyserial.

In the loop function of Arduino Uno I have this:

void loop() {
if(digitalRead(BUTTON) == HIGH){
Serial.print("E\n");
while(1){}
}

So, if my pushbutton is pressed, it will send this message "E" via serial and then it will enter in an infinite loop so that nothing else happens.

But I want to detect this message in the python code. So this is my python code:

import serial
import time
try:
 arduino = serial.Serial('/dev/ttyACM0', 9600)
except:
 print "Failed to connect on /dev/ttyACM0"
try:
 print arduino.readline()
 while True:
 if arduino.readline() == 'E':
 print("Detected!\n")
except:
 print ("Failed to read!")

The first print before the infinite While is working: it is printing in the ubuntu terminal "Program Initiated", which is a message that I'm sending in the void Setup function of Arduino.

Then, it gets stucked in the line:

 if arduino.readline() == 'E':

I mean, I press several times my pushbutton, and nothing is happening.

Any help? Thanks!

asked Feb 12, 2017 at 20:51
2
  • Use arduino.read instead of arduino.readline Commented Feb 12, 2017 at 21:23
  • Isn't more secure to use readline() once I will end up my message with \n? Commented Feb 12, 2017 at 23:37

1 Answer 1

0

The string you are sending ("E\n") is not the same one you are checking for: 'E'.

You could, for example, strip newlines from the string:

if arduino.readline().strip() == 'E':
answered Feb 12, 2017 at 21:08
2
  • You're right! I thought that as I was using .readline (which stops reading with \n) it wouldn't be necessary to put it on. Thanks, now it's working - without using that strip thing. What does it do exactly? Commented Feb 12, 2017 at 21:32
  • strip() removes newlines and whitespace from the start and end of strings. I'm slightly surprised that readline() works at all if you're not sending newlines but OK if it does. Please feel free to accept the answer if it was helpful. Commented Feb 12, 2017 at 21:39

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.