141 lines
4.4 KiB
Python
141 lines
4.4 KiB
Python
"""
|
|
Author: Tyrel Souza
|
|
<tyrel@tyrelsouza.com>
|
|
TO DO:
|
|
Watch for "Stop Button Pressed"
|
|
if test is pass, show colors red and green
|
|
If index of combo box is changed,
|
|
change all visible combo boxes.
|
|
Box for Name
|
|
Map Button
|
|
(have defaults saved)
|
|
pop up page to enter in Progra Number, Test Number, Set target sccm
|
|
Sync button on bottom
|
|
ex: write " asdfjasdf jsadf js #2\r\n"
|
|
write " asdfsadjf askjdf kasf 3.0"
|
|
deferreds
|
|
"""
|
|
import wx
|
|
import sqlite3 as sqlite
|
|
import logic
|
|
import serial
|
|
import scanports
|
|
import os
|
|
import io
|
|
import ConfigParser
|
|
import pdb
|
|
import sys
|
|
from threading import *
|
|
from frmMain import frmMain
|
|
|
|
EXITMETHOD = ["Unknown","Completed","Stop Button","Severe Leak"]
|
|
global DEBUG
|
|
DEBUG = True
|
|
APPNAME = "TorchTester"
|
|
|
|
class settings():
|
|
COMPORT = "COM3" # This is the default comport.
|
|
BAUDRATE = 115200
|
|
BYTESIZE = serial.EIGHTBITS
|
|
PARITY = serial.PARITY_NONE
|
|
STOPBITS = serial.STOPBITS_ONE
|
|
DIR = os.path.join(os.environ['APPDATA'], APPNAME)
|
|
CONFIG_FILE = os.path.join(os.environ['APPDATA'], APPNAME) + '\\config.ini'
|
|
DB_FILE = os.path.join(os.environ['APPDATA'], APPNAME) + '\\Torch.sqlite'
|
|
ICON_FILE = os.path.join(os.environ['APPDATA'], APPNAME) + "\HyperTherm.ico"
|
|
|
|
def __init__(self):
|
|
if not os.path.exists(self.DIR):
|
|
os.makedirs(self.DIR)
|
|
with open(self.CONFIG_FILE,'w') as f:
|
|
inifile = """[LEAK]
|
|
LEAKA = 2.0
|
|
LEAKB = 2.0
|
|
LEAKC = 2.0
|
|
LEAKD = 2.0
|
|
[FLOW]
|
|
FLOWA = 28000
|
|
FLOWB = 28000
|
|
FLOWC = 28000
|
|
FLOWD = 78000"""
|
|
f.write(inifile)
|
|
f.close
|
|
|
|
|
|
def get_limits(self,runno=None,settings=None):
|
|
try:
|
|
parser = ConfigParser.ConfigParser()
|
|
parser.read(settings.CONFIG_FILE)
|
|
limits = []
|
|
limits.append([None,parser.get('LEAK','LEAKA')])
|
|
limits.append([None,parser.get('LEAK','LEAKB')])
|
|
limits.append([None,parser.get('LEAK','LEAKC')])
|
|
limits.append([None,parser.get('LEAK','LEAKD')])
|
|
limits.append([None,parser.get('FLOW','FLOWA')])
|
|
limits.append([None,parser.get('FLOW','FLOWB')])
|
|
limits.append([None,parser.get('FLOW','FLOWC')])
|
|
limits.append([None,parser.get('FLOW','FLOWD')])
|
|
except:
|
|
limits = []
|
|
limits.append(['LEAKA','2.0'])
|
|
limits.append(['LEAKB','2.0'])
|
|
limits.append(['LEAKC','2.0'])
|
|
limits.append(['LEAKD','2.0'])
|
|
limits.append(['FLOWA','28000'])
|
|
limits.append(['FLOWB','28000'])
|
|
limits.append(['FLOWC','28000'])
|
|
limits.append(['FLOWD','78000'])
|
|
|
|
limit = limits[runno][1]
|
|
|
|
|
|
return limit
|
|
|
|
def main(settings):
|
|
app = wx.App()
|
|
frame = frmMain(None,settings)
|
|
frame.Show()
|
|
app.SetTopWindow(frame)
|
|
app.MainLoop()
|
|
|
|
def check_db(s):
|
|
"""
|
|
This function will select the LAST set comport in the database.
|
|
If there is no last set comport, it will prompt you for your comports,
|
|
then it will accept the comport and save it to the database.
|
|
"""
|
|
conn = sqlite.connect(s.DB_FILE,detect_types=sqlite.PARSE_DECLTYPES)
|
|
c = conn.cursor()
|
|
try:
|
|
c.execute('SELECT CASE WHEN tbl_name = "torch_record" THEN 1 ELSE 0 END FROM sqlite_master WHERE tbl_name = "torch_record" AND type = "table"')
|
|
table_exists = c.fetchone()
|
|
if not table_exists:
|
|
|
|
c.execute("CREATE TABLE torch_record (id INTEGER PRIMARY KEY AUTOINCREMENT, port_number TEXT, program_number TEXT, test_date DATE, test_time TEXT, measurement REAL,result TEXT)");
|
|
c.execute('SELECT CASE WHEN tbl_name = "torch_record" THEN 1 ELSE 0 END FROM sqlite_master WHERE tbl_name = "torch_record" AND type = "table"')
|
|
table_exists = c.fetchone()
|
|
|
|
except sqlite.OperationalError, e:
|
|
print e
|
|
c.close()
|
|
return s
|
|
|
|
def run_test(settings):
|
|
ser = logic.connect_serial_and_open(settings)
|
|
try:
|
|
# listen to what's happeneing on the serial port.
|
|
EM,out = logic.read_serial(ser)
|
|
except Exception, ex:
|
|
ser.close()
|
|
try:
|
|
ser.close()
|
|
except:
|
|
pass
|
|
return EM,out
|
|
|
|
if __name__ == "__main__":
|
|
settings = settings()
|
|
settings = check_db(settings)
|
|
main(settings)
|
|
|