shalab shalab / Mbed 2 deprecated Tutorial02_BinarySerialCom

Dependencies:   mbed

readme.txt

Committer:
shalab
Date:
2014-02-28
Revision:
1:8c34bb700858
Parent:
0:d80410b1dfec

File content as of revision 1:8c34bb700858:

Use the following python program to test
depends on pySerial pkg

pyTerm.py
------------
#!/usr/bin/python

import time
import serial
import sys
import thread
import struct
import getopt


def hex_to_float(h):
    return struct.unpack('f', h)

def float_to_hex(f):
    return struct.pack('f', f)

def double_to_hex(d):
    return struct.pack('d', d)

def printHex(h):
    #print raw hex data
    hexData = ':'.join(x.encode('hex') for x in h)
    print hexData

def sendHex(h):
    serial.write(h)
    serial.write("\r") 

def logd(log, newline=True):
    tag = "sys"
    if (not newline):
        sys.stdout.write("[%.5f] %s" % (time.time() - t0 , log))
    else:
        print "[%.5f] %s" % (time.time() - t0 , log)

def welcomeMsg(): 
    print
    print 'Python-mbed Test Interface Program'
    print '[Tutorial_BinarySerialCom]'
    print 'Press Ctrl+c to quit'
    print

def initSerial(port, baudrate):
    # Serial port Configuration
    serial.port = port
    serial.baudrate = baudrate
    serial.timeout = 1
    serial.writeTimeout = 1
    serial.open()
    serial.flush()

    logd( 'Opening port %s - %s' %(port, baudrate) )
    if serial.isOpen(): 
        logd('Success')
    else:
        logd('Failed')
        exit(2)


# Thread for printing data from serial
def readSerial(threadName, delay):
    s = ""
    while not Quit:
        if serial.inWaiting() != 0:
            c = serial.read()
            if (c == '\n'):
                print "[%7s] %s" % (threadName, s)
                s =""
            else:
                s += c
        else:
            time.sleep(0.01)

Quit= False;
if __name__ == '__main__':
    welcomeMsg();
    t0 = time.time()
    serial = serial.Serial()
    port = "COM3" #/dev/ttyACM0
    baudrate = 9600
    try:
        opts, args = getopt.getopt(sys.argv[1:],"hp:b:",["port=","baudrate="])
    except getopt.GetoptError:
        print 'pyTerm.py -p <port> -b <baudrate>'
        sys.exit(2)
    for opt, arg in opts:
        if opt == '-h':
            print 'pyTerm.py -p <port> -b <baudrate>'
            sys.exit()
        elif opt in ("-p", "--port"):
            port = arg
        elif opt in ("-b", "--baudrate"):
            baudrate = int(arg)
    initSerial(port, baudrate)

    thread.start_new_thread( readSerial , ("Mbed", 2, ))
 

    while 1 :
        try:
            logd("Enter a number: ", False)
            inStr = raw_input() 
            try:
                inFloat = float(inStr)
                inHex = double_to_hex(inFloat)
                #printHex(inHex)
                sendHex(inHex) 

            except ValueError:
               logd("Enter a proper number!")

            time.sleep(1)

        except KeyboardInterrupt:
            print
            logd("Keyboard interrupt")
            Quit = True
            serial.close()
            break
        except Exception, err:
            logd("Exception")
            print sys.exc_info()[0]
            print err
            break