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 when i execute the 'main_debug.omnic_ready() from app.py it does not work:
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:
and here is the Omnic_adrem_debug.py:
and finally here is the OmnicDDE.py code:
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:
Thanks 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)
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:
1 2 3 4 5 |
import main_debug main_debug.omnic_ready() print ( "test successful" ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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 ) |
but i guess it has something to do with the permissions of flask and the DDE server that is used:
main_debug.py:
1 2 3 4 5 6 7 8 9 10 11 |
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) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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" ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# 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]" ) |
The error that i get is:
1 |
dde.error: Request failed |
(what I allready tried, is opening powershell as admin and starting the app.py from powershell but the problem stays the same)