Jul-14-2023, 06:52 AM
Hi all!
To start I have to say i am new to Python...
But i mannaged to do nice things allready. But now have a problem that i just dont know how to fix:
when i execute this code it works:
debug.py:
but i guess it has something to do with the permissions of flask and the DDE server that is used:
main_debug.py:
The error that i get is:
(what I allready tried, is opening powershell as admin and starting the app.py from powershell but the problem stays the same)
To start I have to say i am new to Python...
But i mannaged to do nice things allready. But now have a problem that i just dont know how to fix:
when i execute this code it works:
debug.py:
import main_debug
main_debug.omnic_ready()
print("test successful")but when i execute the 'main_debug.omnic_ready() from app.py it does not work:from flask import Flask, render_template, request, Response, url_for, flash, get_flashed_messages, redirect
import main_debug
app = Flask(__name__)
app.secret_key = "Secret_key"
@app.route('/FTIR_status', methods=['POST', 'GET'])
def FTIR_status():
main_debug.omnic_ready()
return render_template("index_wbase.html", graph=False)
# Get the batch name from the form data
if __name__ == "__main__":
app.run(debug=True, port=5005)I have been able to execute functions from the app.py flask application, but never this one.. I will show the rest of the code so you see what is hapening.but i guess it has something to do with the permissions of flask and the DDE server that is used:
main_debug.py:
from Omnic_adrem_debug import Omnic
def omnic_ready():
global omnic
omnic = Omnic()
try:
omnic.initialize_omnic()
print("Omnic ready for analyzing")
except Exception as e:
print("Something went wrong:", e)and here is the Omnic_adrem_debug.py:from OmnicDDE import OmnicDDE
MyOmnic = OmnicDDE()
class Omnic:
def __init__(self): # , gantry
try:
MyOmnic.GetExperimentalSettings()
except NameError:
print("OmnicDDE object not instantiated")
def initialize_omnic(self):
self.OMNIC_ready = False
if not self.OMNIC_ready:
print("Get Omnic ready")
MyOmnic.GetExperimentalSettings()
print("Set scan numbers to 10")
MyOmnic.SetNumScans(10)
print("Clear Window")
MyOmnic.ClearWindow()
print("collect background")
MyOmnic.CollectBackground("Background")
self.OMNIC_ready = True
print("Omnic Is ready for sampling")and finally here is the OmnicDDE.py code:# For Python 3.XX, use pywin32 (pip install --upgrade pywin32)
import win32ui
import dde
import time
from OmnicExperimentalSettings import ExperimentalSettings
class OmnicDDE():
Application = "Omnic"
Thread = "Spectra"
def __init__(self):
self.server = dde.CreateServer()
self.server.Create("MyOmnic_server")
self.MyOmnicConversation = dde.CreateConversation(self.server)
self.MyOmnicConversation.ConnectTo(self.Application, self.Thread)
print(time.asctime() + "\t" + "Connection With Omnic Established")
# Minimize the Omnic window
self.MyOmnicConversation.Exec('[MinimizeWindow]')
def CollectBackground(self, title=""):
# title = kwargs.get('title','')
cmd = '[Invoke CollectBackground """' + title + '""" Auto Polling]'
self.MyOmnicConversation.Exec(cmd)
print(time.asctime() + "\t" + "Collecting Background ...")
CurrentWindow = self.MyOmnicConversation.Request('Window Title')
self.MyOmnicConversation.Exec('[MaximizeWindow """' + CurrentWindow + '"""]')
self.MyOmnicConversation.Exec('[MinimizeWindow]')
MS = self.MyOmnicConversation.Request('MenuStatus CollectBackground')
while MS == "Disabled":
time.sleep(1)
MS = self.MyOmnicConversation.Request('MenuStatus CollectBackground')
self.MyOmnicConversation.Exec('[MinimizeWindow]')
print(time.asctime() + "\t" + "Background Collection Finished")
# If the user does not specify the title, he probably doesn't want to save it
if title == "":
time.sleep(0.5)
self.MyOmnicConversation.Exec("[DeleteSelectedSpectra]")So I only have problems when the code gets executed from the app.py (flask web interface) and not from the debug.py.The error that i get is:
dde.error: Request failedThanks a lot for the help
(what I allready tried, is opening powershell as admin and starting the app.py from powershell but the problem stays the same)
