Python 2.7 code

Tussen een Raspberry Pi en een Arduino is serieele communicatie.
Dit is de Python code van de Pi.

code:


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import serial
from time import sleep
port = '/dev/ttyAMA0'
baud = 19200
comment=""
ser = serial.Serial(port=port, baudrate=baud, timeout=0.05)
sleep(0.2)
while True:
    ser.write('$M?')
    comment = ser.read(1)
    while ser.inWaiting():
        comment += ser.read(ser.inWaiting())
    if comment=="H":
    	try:
           myfile = open('/home/pi/server/cgi-bin/m.dat','w')
           myfile.write(comment)
           myfile.close()           
    	except:
           pass

    ser.write('$F?')
    comment = ser.read(1)
    while ser.inWaiting():
        comment += ser.read(ser.inWaiting())
    if comment=="H":
    	try:
           myfile = open('/home/pi/server/cgi-bin/f.dat','w')
           myfile.write(comment)
           myfile.close()
    	except:
           pass

    try:
        myfile = open('/home/pi/server/cgi-bin/l.dat','r')
        comment=myfile.read(2)
	ser.write('$')
	ser.write(comment)
	myfile.close()
    except:
        pass

    ser.write('$S?')
    comment = ser.read(1)
    while ser.inWaiting():
        comment += ser.read(ser.inWaiting())
        try:
            myfile = open('/home/pi/server/cgi-bin/s.dat','w')
            myfile.write(comment)
            myfile.close()
        except:
            pass  

ser.close()

Deze code werkt. De Pi en de Arduino babbelen vlot met elkaar.
Het is de Pi die begint met ser.write('$M?')
De Arduino wacht tot hij dit ontvangt.

Ik wil echter dat het de Arduino is die begint. De Arduino stuurt het startteken "!" en de Pi wacht op dit teken, na ontvangst hiervan doet de Pi verder met ser.write('$M?') en de rest van de code. Deze code moet maar 1 maal uitgevoerd worden. Daarna wacht de Pi opnieuw op het startteken "!".

Het lukt mij niet om met mijn beperkte ervaring met Python 2.7 iets te verzinnen. Wie kan het wel?