[Python] code wordt niet uitgevoerd vanuit flask app

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • thomke
  • Registratie: November 2011
  • Laatst online: 22:17
Dag iedereen!
eerst en vooral moet ik zeggen dat Python nieuw is voor mij..
maar ik heb al heel wat leuke dingen kunnen doen, maar nu heb ik een probleem die ik maar niet opgelost krijg:

wanneer ik deze code uitvoer werkt alles:

debug.py
code:
1
2
3
4
5
import main_debug
 
 
main_debug.omnic_ready()
print("test successful")


maar wanneer ik de 'main_debug.omnic_ready() functie oproep vanuit app.py werkt het niet:
app.py:
code:
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)


het is mij reeds gelukt om stukken code uit te voeren via de web interface van de flask applicatie, maar nog nooit dit stuk code. Hieronder vinden jullie de rest van de code om een idee te krijgen wat er juist gaande is..
Ik vermoed dat het iets te maken heeft met de rechten van flask en de DDE server..

main_debug.py:
code:
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)


de Omnic_adrem_debug.py:
code:
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")



dit is de OmnicDDE.py code:
code:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# 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):
        print("dde.createServer")
        self.server = dde.CreateServer()
        print('server.Create(Myomnic_server)')
        self.server.Create("MyOmnic_server")
        print("dde.CreateConversation")
        self.MyOmnicConversation = dde.CreateConversation(self.server)
        print("MyOmnicConversation.connectTo..")
        self.MyOmnicConversation.ConnectTo(self.Application, self.Thread)
        print(time.asctime() + "\t" + "Connection With Omnic Established")


        # Minimize the Omnic window
        self.MyOmnicConversation.Exec('[MinimizeWindow]')

    def NewWindow(self, WindowName=""):
        if WindowName == "":
            cmd = '[NewWindow]'
        else:
            cmd = '[NewWindow """' + WindowName + '"""]'
        self.MyOmnicConversation.Exec(cmd)
        CurrentWindow = self.MyOmnicConversation.Request('Window Title')
        print(time.asctime() + "\t" + "Window Created with Name: " + CurrentWindow)

    def ClearWindow(self):
        CurrentWindow = self.MyOmnicConversation.Request('Window Title')
        self.MyOmnicConversation.Exec("[Select All]")
        self.MyOmnicConversation.Exec("[DeleteSelectedSpectra]")
        print(time.asctime() + "\t" + "Window " + CurrentWindow + " Cleared")

    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]")

    def SetNumScans(self, nscans):
        self.MyOmnicConversation.Poke('Collect NumScans', str(nscans).zfill(4))

    def GetExperimentalSettings(self):
        print("set ExperimentalSettings")
        self.ExpSettings = ExperimentalSettings(self.MyOmnicConversation)
        print("Print ExperimentalSettings")
        self.ExpSettings.PrintSettings()
        print("GetExperimentalSettings Done and printed")

    def CloseConnection(self):
        self.server.Destroy()
        print(time.asctime() + "\t" + "DDE Connection with Omnic was Terminated")

    def ExportAs(self, filename):
        cmd = '[Export D:\Projects\R&D\PlasticPicker\FTIR\Test\\' + filename + ']'
        self.MyOmnicConversation.Exec(cmd)


en tenslotte hebben we ook nog de volgende code:
OmnicExperimentalSettings.py:
code:
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
class ExperimentalSettings(object):
    '''
    classdocs
    '''

    def __init__(self, DDEComm):
        '''
        Constructor
        '''
        self.NumScans = DDEComm.Request('Collect NumScans')
        self.Resolution = DDEComm.Request('Collect Resolution')
        self.NumBKGScans = DDEComm.Request('Collect NumScansBKG')
        self.NumIFGPoints = DDEComm.Request('Collect NumDataPts')
        self.Apodisation = DDEComm.Request('Collect ApodizationFunction')
        self.BKG_Handling = DDEComm.Request('Collect BackgroundHandling')
        self.PhaseCorrection = DDEComm.Request('Collect PhaseCor')
        self.FinalFormat = DDEComm.Request('Collect FinalFormat')

        self.Source = DDEComm.Request('Bench Source')
        self.BeamSplitter = DDEComm.Request('Bench Beamsplitter')

        DDEComm.Exec('[GtDetector]')
        self.Detector = DDEComm.Request('Result Current').strip()
        self.SSP = DDEComm.Request('Bench SSP')
        self.Gain = DDEComm.Request('Bench Gain')
        self.Source = DDEComm.Request('Bench Source')
        self.MirroVelocity = DDEComm.Request('Bench Velocity')

    def PrintSettings(self):
        attrs = vars(self)
        print(''.join("%s: %s \n" % item for item in attrs.items()))


dus ik heb enkel problemen wanneer ik de app.py (flask web interface) uitvoer en niet als ik het test vanuit de debug.py code, de foutcode die ik krijg is de volgende:
code:
1
dde.error: Request failed


Bedankt voor de hulp!
(wat ik reeds geprobeerd had is om powershell als admin te openen en dan app.py uit te voeren vanuit deze powershell, maar dit helpt dus niet)

[ Voor 44% gewijzigd door thomke op 19-07-2023 07:57 . Reden: OmnicExperimentalSettings.py toegevoegd ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • thomke
  • Registratie: November 2011
  • Laatst online: 22:17
hmm, nog geen reactie..

Is er wat meer informatie die ik zou kunnen geven om tot een oplossing voor mijn probleem te komen?
zoals ik al zei, denk ik, dat het iets te maken heeft met de rechten tussen de flask app en de DDE server die aangemaakt wordt..

wat extra info:
'OMNIC' is software voor een bepaald toestel uit te lezen. deze software kunnen we van python aansturen via DDE. nu is het de bedoeling dat er bepaalde zaken/sequenties automatisch uitgevoerd worden in deze software (door een sequentie van verschillende DDE commando's te sturen naar de 'OMNIC' software)
hiervoor wordt een nieuwe web applicatie gemaakt (in FLASK) voor een simpele gebruiksinterface die de sequentie van verschillend DDE commando's start.

Acties:
  • 0 Henk 'm!

  • remyz
  • Registratie: Februari 2010
  • Laatst online: 06-06 20:26
Ziet er uit als een leuk project om aan te werken! Er ontbreken een hoop checks of bepaalde functies wel succesvol worden uitgevoerd. Om te beginnen zal je moeten achterhalen op welk punt in de code de ‘dde.error: Request failed’ foutmelding gegenereerd wordt.

Zonder enige kennis van OMNIC en DDE te hebben zou ik zeggen dat regels 13 en 15 van OmincDDE.py een goede kandidaat zijn. Bouw daar error checking omheen of begin desnoods met het printen van een melding, voor en na de aanroep van de functies. Van daaruit verder werken.

Ook zou ik beginnen zonder Flask gelijk in te zetten. Maak eerst eens wat Python code die een paar DDE commando’s stuurt. Als je dat betrouwbaar werkend hebt, bouw het dan om naar Flask. Je bent een beginner met Python, dus dan moet je het zo gestructureerd mogelijk aanpakken en je problemen in kleine stukjes proberen te hakken. Op die manier kan je ons ook veel beter vertellen wat je precies hebt gedaan (je bent nu nog redelijk vaag) en dan kunnen we je misschien beter helpen. Succes!

Acties:
  • 0 Henk 'm!

  • thomke
  • Registratie: November 2011
  • Laatst online: 22:17
@remyz betankt voor uw reactie!
het is inderdaad een leuk projectje waarmee ik bezig ben.

Ik heb al redelijk wat kunnen doen zonder het gebruik van Flask
(verschillende sequenties van DDE commando's doorsturen naar de OMNIC software via de terminal)
vandaar dat ik ook het eerste scriptje 'debug.py' toegevoegd had, om aan te tonen dat dit wel werkt zonder gebruik te maken van Flask (reeds complexere dingen kunnen doen ook zonder Flask, maar heb de code wat ingekort / simpeler gemaakt om gewoon de basic van het probleem te kunnen aantonen)

ik heb reeds wat extra code toegevoegd voor te 'debuggen' (print statements die extra info in de terminal geven)

wat mij opvalt is dit:
bij het runnen van de 'debug.py' code krijg ik mooi dit:
code:
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
C:\Users\TDE\.virtualenv\plastic_sampler\Scripts\python.exe C:\Users\TDE\PycharmProjects\plastic_sampler\debug.py 
dde.createServer
server.Create(Myomnic_server)
dde.CreateConversation
MyOmnicConversation.connectTo..
Tue Jul 18 13:34:46 2023    Connection With Omnic Established
set ExperimentalSettings
Print ExperimentalSettings
NumScans: 10 

[code].. extra info dat hier niet relevant is... [/code]

GetExperimentalSettings Done and printed
omnic() created
Get Omnic ready
set ExperimentalSettings
Print ExperimentalSettings
NumScans: 10 
[code].. extra info dat hier niet relevant is... [/code]

GetExperimentalSettings Done and printed
Set scan numbers to 10
Clear Window
Tue Jul 18 13:34:46 2023    Window Window1 Cleared
collect background
Tue Jul 18 13:34:46 2023    Collecting Background ...
Tue Jul 18 13:35:03 2023    Background Collection Finished
Omnic Is ready for sampling
Omnic ready for analyzing
test successful

Process finished with exit code 0


maar als ik de 'app.py' code activeer dan krijg ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
C:\Users\TDE\.virtualenv\plastic_sampler\Scripts\python.exe C:\Users\TDE\PycharmProjects\plastic_sampler\app_debug.py 
dde.createServer
server.Create(Myomnic_server)
dde.CreateConversation
MyOmnicConversation.connectTo..
Tue Jul 18 13:39:11 2023    Connection With Omnic Established
 * Serving Flask app 'app_debug'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5005
Press CTRL+C to quit
 * Restarting with stat
dde.createServer
server.Create(Myomnic_server)
dde.CreateConversation
MyOmnicConversation.connectTo..


en dan duurt het even voordat ik dit te zien krijg (terwijl vanuit de debug.py is dit 'instant' )
code:
1
2
3
Tue Jul 18 13:39:41 2023    Connection With Omnic Established
 * Debugger is active!
 * Debugger PIN: 395-060-750


en als ik dan de webbrowser open en naar: http://127.0.0.1:5005/FTIR_status browse dan krijg ik dit:
code:
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
set ExperimentalSettings
127.0.0.1 - - [18/Jul/2023 13:42:11] "GET /FTIR_status HTTP/1.1" 500 -
Traceback (most recent call last):
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2213, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2193, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\app_debug.py", line 11, in FTIR_status
    main_debug.omnic_ready()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\main_debug.py", line 6, in omnic_ready
    omnic = Omnic()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\Omnic_adrem_debug.py", line 8, in __init__
    MyOmnic.GetExperimentalSettings()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\OmnicDDE.py", line 92, in GetExperimentalSettings
    self.ExpSettings = ExperimentalSettings(self.MyOmnicConversation)
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\OmnicExperimentalSettings.py", line 17, in __init__
    self.NumScans = DDEComm.Request('Collect NumScans')
dde.error: Request failed
127.0.0.1 - - [18/Jul/2023 13:42:11] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 304 -
127.0.0.1 - - [18/Jul/2023 13:42:11] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1" 304 -
127.0.0.1 - - [18/Jul/2023 13:42:11] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 304 -



ik heb in de startpost de extra 'print' statements toegevoegd zodat het overzichtelijk blijft, zeker aangezien er geen functionele code aanpassingen gedaan geweest zijn sindsdien


Hopelijk kan er mij iemand verder helpen met deze extra info...

Acties:
  • 0 Henk 'm!

  • remyz
  • Registratie: Februari 2010
  • Laatst online: 06-06 20:26
In het laatste stukje code dat je post zie je dat het misgaat op regel 17 van het bestand “OmnicExperimentalSettings.py”. De code in dat bestand laat je niet zien (dat is de code van de leverancier denk ik?) en dat maakt het voor ons moeilijk om te zeggen wat er precies mis gaat.

Je toont in ieder geval al veel meer informatie dan in je openingspost en dat is goed!

Acties:
  • 0 Henk 'm!

  • thomke
  • Registratie: November 2011
  • Laatst online: 22:17
remyz schreef op dinsdag 18 juli 2023 @ 17:01:
In het laatste stukje code dat je post zie je dat het misgaat op regel 17 van het bestand “OmnicExperimentalSettings.py”. De code in dat bestand laat je niet zien (dat is de code van de leverancier denk ik?) en dat maakt het voor ons moeilijk om te zeggen wat er precies mis gaat.

Je toont in ieder geval al veel meer informatie dan in je openingspost en dat is goed!
Bedankt voor de hulp!
Ik heb de OmnicExperimentalSettings.py toegevoegd aan de startpost (laatste stuk code)

maar het klopt inderdaad, dat ik zelf niets aangepast heb aan de OmnicExperimentalSettings.py code.

Acties:
  • 0 Henk 'm!

  • remyz
  • Registratie: Februari 2010
  • Laatst online: 06-06 20:26
Je schrijft dat toen je de Flask-app opstartte, er een vertraging zat in het verbinden met Omnic. Als je naar de output kijkt zie je regel 12, "* Restarting with stat". Dat betekent dat terwijl de Flask-server draaide, er een bestand gewijzigd geworden is (wellicht doordat je een bestand gesaved hebt). Dat is voor de Flask development server een reden om een reload te doen. Dat zie je ook gebeuren omdat "dde.createServer" weer voorbij komt. Je zou de Flask-app even opnieuw kunnen starten terwijl je niets aan bestanden verandert, misschien is de vertraging dan weg. Ik schrijf dit omdat je anders misschien achter iets gaat aanjagen dat helemaal geen probleem is.

Je kan het reloaden uitzetten door de app.run regel te veranderen in
code:
1
app.run(debug=True, port=5005, use_reloader=False)
, maar op zich is het wel fijn, dat live reloading.

Overigens is het advies van Flask dat je de development server opstart met iets als
code:
1
flask --app app run --debug
. Zie https://flask.palletsprojects.com/en/2.3.x/server/. In jouw "app.py" kan je dan de laatste twee regels weglaten.

Is er een reden waarom je poort 5005 gebruikt? De standaard poort van Flask is namelijk 5000, vandaar mijn vraag.

Mag ik vragen op welke documentatie jij je baseert? Want ik vermoed dat je al die code niet allemaal zelf bedacht en geschreven hebt. Heeft de leverancier (ThermoFisher toevallig?) iets van API-documentatie publiek beschikbaar gemaakt?


Bedankt voor het toevoegen van de OmnicExperimentalSettings.py code. Op dit moment zou ik niet weten waarom de request van regel 17 faalt. Wat mij nu pas opvalt is dat je in openingspost twee keer "OmnicDDE.py" hebt staan, maar met een verschillende inhoud. Je hebt niet toevallig "debug.py" met de ene versie gedraait en nu de Flask-app met de andere versie van "debug.py"?

Acties:
  • 0 Henk 'm!

  • thomke
  • Registratie: November 2011
  • Laatst online: 22:17
remyz schreef op dinsdag 18 juli 2023 @ 20:43:
Je schrijft dat toen je de Flask-app opstartte, er een vertraging zat in het verbinden met Omnic. Als je naar de output kijkt zie je regel 12, "* Restarting with stat". Dat betekent dat terwijl de Flask-server draaide, er een bestand gewijzigd geworden is (wellicht doordat je een bestand gesaved hebt). Dat is voor de Flask development server een reden om een reload te doen. Dat zie je ook gebeuren omdat "dde.createServer" weer voorbij komt. Je zou de Flask-app even opnieuw kunnen starten terwijl je niets aan bestanden verandert, misschien is de vertraging dan weg. Ik schrijf dit omdat je anders misschien achter iets gaat aanjagen dat helemaal geen probleem is.


Je kan het reloaden uitzetten door de app.run regel te veranderen in
code:
1
app.run(debug=True, port=5005, use_reloader=False)
, maar op zich is het wel fijn, dat live reloading.
ik kan bevestigen door die live reloading uit te zetten dat de connectie instant opgebouwd wordt zonder vertraging:

code:
1
2
3
4
5
6
7
8
9
10
11
C:\Users\TDE\.virtualenv\plastic_sampler\Scripts\python.exe C:\Users\TDE\PycharmProjects\plastic_sampler\app_debug.py 
dde.createServer
server.Create(Myomnic_server)
dde.CreateConversation
MyOmnicConversation.connectTo..
Wed Jul 19 08:43:44 2023    Connection With Omnic Established
 * Serving Flask app 'app_debug'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit
remyz schreef op dinsdag 18 juli 2023 @ 20:43:
Overigens is het advies van Flask dat je de development server opstart met iets als
code:
1
flask --app app run --debug
. Zie https://flask.palletsprojects.com/en/2.3.x/server/. In jouw "app.py" kan je dan de laatste twee regels weglaten.
ik heb dit ook zo eens uitgevoerd en dit heeft hetzelfde resultaat als het python script laten runnen met de laatste 2 regels code er in
remyz schreef op dinsdag 18 juli 2023 @ 20:43:
Is er een reden waarom je poort 5005 gebruikt? De standaard poort van Flask is namelijk 5000, vandaar mijn vraag.
neen, hier was niet echt een reden voor (was om te debuggen oorspronkelijk, heb ik ondertussen weer aangepast naar 5000
remyz schreef op dinsdag 18 juli 2023 @ 20:43:
Mag ik vragen op welke documentatie jij je baseert? Want ik vermoed dat je al die code niet allemaal zelf bedacht en geschreven hebt. Heeft de leverancier (ThermoFisher toevallig?) iets van API-documentatie publiek beschikbaar gemaakt?
dit is gebaseerd op deze code:
https://mmrc.caltech.edu/...ands%20&%20Parameters.pdf

de OmnicExperimentalSettigns.py alsook een deel van OmnicDDE.py (vooral opbouw DDE server communicatie) is code die de fabrikant voorzien heeft als aanzet om via python met de OMNIC te communiceren, waarop dan verder gebouwd geweest is. (het hele Flask gebeuren is los van de fabrikant en is hoe ik het zou willen integreren/ gebruikersinterface maken voor een eenvoudigere bediening)
remyz schreef op dinsdag 18 juli 2023 @ 20:43:
Bedankt voor het toevoegen van de OmnicExperimentalSettings.py code. Op dit moment zou ik niet weten waarom de request van regel 17 faalt. Wat mij nu pas opvalt is dat je in openingspost twee keer "OmnicDDE.py" hebt staan, maar met een verschillende inhoud. Je hebt niet toevallig "debug.py" met de ene versie gedraait en nu de Flask-app met de andere versie van "debug.py"?
dit is(was) foutief in de openings post, ik had enkele regels toegevoegd ('print' statements, om debuggen wat handiger te maken). vandaar dat het er 2 keer in beland is, maar zit er dus wel maar degelijk 1 keer in, is ondertussen aangepast)


maar nu is het dus nog altijd zo vanaf ik de pagina http://127.0.0.1:5000/FTIR_status ga inladen
ik de volgende foutmelding krijg:

code:
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
set ExperimentalSettings
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status HTTP/1.1" 500 -
Traceback (most recent call last):
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2213, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2193, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\app_debug.py", line 12, in FTIR_status
    main_debug.omnic_ready()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\main_debug.py", line 6, in omnic_ready
    omnic = Omnic()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\Omnic_adrem_debug.py", line 8, in __init__
    MyOmnic.GetExperimentalSettings()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\OmnicDDE.py", line 92, in GetExperimentalSettings
    self.ExpSettings = ExperimentalSettings(self.MyOmnicConversation)
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\OmnicExperimentalSettings.py", line 11, in __init__
    self.NumScans = DDEComm.Request('Collect NumScans')
dde.error: Request failed
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1" 304 -
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 304 -
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 304 -
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 304 -

Acties:
  • 0 Henk 'm!

  • remyz
  • Registratie: Februari 2010
  • Laatst online: 06-06 20:26
ik kan bevestigen door die live reloading uit te zetten dat de connectie instant opgebouwd wordt zonder vertraging:
Mooi zo, dan hoef je je daar niet meer druk om te maken.
dit is gebaseerd op deze code:
https://mmrc.caltech.edu/...ands%20&%20Parameters.pdf

de OmnicExperimentalSettigns.py alsook een deel van OmnicDDE.py (vooral opbouw DDE server communicatie) is code die de fabrikant voorzien heeft als aanzet om via python met de OMNIC te communiceren, waarop dan verder gebouwd geweest is. (het hele Flask gebeuren is los van de fabrikant en is hoe ik het zou willen integreren/ gebruikersinterface maken voor een eenvoudigere bediening)
Ik denk dat ik niet duidelijk genoeg was met mijn vraag. Wat ik bedoelde te vragen is of de leverancier ergens documentatie heeft waarin zij schrijven hoe je precies hun Python code kan (moet) gebruiken om met de DDE-server te praten. Het maakt bijvoorbeeld verschil of hun code ervoor zorgt dat de connectie met de DDE-server geopend blijft of dat je daar zelf voor moet zorgdragen. Hebben ze geen voorbeeld code gegeven hoe je wat DDE-comando's verstuurt? Mijn ervaring is helaas dat duidelijke en complete documentatie vaak niet aanwezig is en dat maakt het wel complex en lastig om iets werkends te krijgen. En dan heb je ook nog de kwaliteit van de geleverde code, die soms het predicaat "kwaliteit" niet mag dragen.
maar nu is het dus nog altijd zo vanaf ik de pagina http://127.0.0.1:5000/FTIR_status ga inladen
ik de volgende foutmelding krijg:

code:
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
set ExperimentalSettings
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status HTTP/1.1" 500 -
Traceback (most recent call last):
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2213, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2193, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 2190, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1486, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1484, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\TDE\.virtualenv\plastic_sampler\lib\site-packages\flask\app.py", line 1469, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\app_debug.py", line 12, in FTIR_status
    main_debug.omnic_ready()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\main_debug.py", line 6, in omnic_ready
    omnic = Omnic()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\Omnic_adrem_debug.py", line 8, in __init__
    MyOmnic.GetExperimentalSettings()
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\OmnicDDE.py", line 92, in GetExperimentalSettings
    self.ExpSettings = ExperimentalSettings(self.MyOmnicConversation)
  File "C:\Users\TDE\PycharmProjects\plastic_sampler\OmnicExperimentalSettings.py", line 11, in __init__
    self.NumScans = DDEComm.Request('Collect NumScans')
dde.error: Request failed
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1" 304 -
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 304 -
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 304 -
127.0.0.1 - - [19/Jul/2023 09:00:31] "GET /FTIR_status?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 304 -
Voor mij houdt het een beetje op; zonder documentatie en zonder de beschikking te hebben over de DDE-server is dit (voor mij althans) niet te debuggen. Het enige wat ik op dit moment nog aan je kan meegeven is: probeer het eens met het uitcommentarieren van de regel
code:
1
self.NumScans = DDEComm.Request('Collect NumScans')
en kijk eens of je verder komt.
Pagina: 1