#!/usr/bin/env python from numpy import * from math import * import serial, time import sys #interface with pn6100A scale #http://www.awscales.com/images/stories/scales/PN-6100A/main/PN-Series_manual_v2.pdf try: ser_scale = serial.Serial( port='/dev/tty.usbserial', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, #xonxoff=True, bytesize=serial.EIGHTBITS) print(ser_scale.name) except(OSError): print "Couldn't find the serial port" sys.exit(0) def write(cmd): #print "sending: ",map(hex,cmd) ser_scale.write(cmd) def read(): msg = ['\x11'] while( ser_scale.read(1) != '\x11'): print ser_scale.inWaiting() while( msg[-1] != '\x13' and len(msg)<100): msg += [ ser_scale.read(1) ] return msg def request_weight(): write( bytearray([1,ord('s')]) ) time.sleep(.03) weight = read() if (weight[9] != 'g'): print 'units are not grams!' sys.exit(0) return float(''.join(weight[1:8])) def tare(): write( bytearray([1,ord('t')]) ) time.sleep(.1) print read() tare() for i in range(100): time.sleep(.1) print request_weight() ser_scale.close()