<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto cercando di scrivere uno script per calcolare correttamente la potenza per i progetti a unità divise in Custom Designer e Design Evaluator.Il problema è che non vengono utilizzati i gradi di libertà corretti e sebbene ora possano essere modificati, ogni volta che i gradi di libertà o il rapporto segnale/rumore vengono modificati, le caselle di contorno per l'analisi della potenza collassano e si fanno molti clic inutili sui pulsanti SU.Inoltre, non riesco a determinare come calcolare il parametro di non centralità per i progetti a unità divise, quindi non posso semplicemente scrivere uno script per eseguire i calcoli da zero.In JMP 10 il parametro di non centralità è una colonna nascosta nell'analisi della potenza che posso ottenere come matrice.
Quello che voglio essere in grado di fare è scrivere uno script che un utente possa eseguire mentre si trova in Custom Designer o Design Evaluator e fargli calcolare la potenza utilizzando diversi rapporti segnale/rumore contemporaneamente.Per fare ciò, il mio script deve essere in grado di modificare il rapporto segnale/rumore nella piattaforma JMP e fare in modo che CD o DE ricalcolino l'NCP.
Posso modificare il valore NumberColEditBox, ma non riesco a fare in modo che la piattaforma ricalcoli NCP.
win = Window("DOE - Design personalizzato"); //Si connette alla finestra a scopo di test
vinci[OutlineBox(15)] << Chiudi(0); //Questa è la casella di riepilogo dell'analisi della potenza
vinci[NumeroColBox(9)] << Nascondi(0); //Questa è la colonna NCP
ncp1 = win[NumberColBox(9)] << Ottieni come matrice; //Salva la colonna NCP
win[NumeroColModificaBox(4)] <
Come posso simulare la pressione del tasto Invio per far ricalcolare la piattaforma?
Noterò che quando cambio il valore nella casella dallo script e faccio semplicemente clic nella casella e premo Invio, non succede nulla.Quando digito il numero che ho appena modificato e premo Invio, non succede nulla.Se poi digito qualsiasi altro numero, funziona correttamente.(quella sequenza sarebbe come, win[NumberColEditBox(4)] << SetValues([4]); premi invio, niente -> Digita 4 nella casella, premi invio, niente -> Digita 3 nella casella, premi invio, lavori)
Alcuni esempi di tagliatelle con la funzione di pressione dei tasti: funzione Windoze keybd_event con VK_RETURN
Spero che questo ti aiuti.
Migliore,
-Opaco
// keypress_example.jsl
// Matt Flynn -
// attenzione quando si sperimenta con le chiavi: può diventare interessante
// http://msdn.microsoft.com/en-us/library/ms646301(VS.85).aspx
//http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx
//http://msdn.microsoft.com/en-us/library/ms646304(VS.85).aspx
//http://msdn.microsoft.com/en-us/library/ms645540(VS.85).aspx
// http://msdn.microsoft.com/en-us/library/ms646301(VS.85).aspx
VK_ESCAPE = Numero esadecimale ("0000001B");
VK_H = Numero esadecimale ("00000048");
VK_E = Numero esadecimale ("00000045");
VK_L = Numero esadecimale ("0000004C");
VK_O = Numero esadecimale ("0000004F");
VK_F = Numero esadecimale ("00000046");
VK_R = Numero esadecimale ("00000052");
VK_M = Numero esadecimale ("0000004D");
VK_J = Numero esadecimale ("0000004A");
VK_M = Numero esadecimale ("0000004D");
VK_P = Numero esadecimale ("00000050");
VK_SPACE = Numero esadecimale ("00000020");
VK_SHIFT = Numero esadecimale ("00000010");
VK_RETURN = Numero esadecimale ("0000000D");
VK_1 = Numero esadecimale ("00000031");
KEYEVENTF_EXTENDEDKEY = Numero esadecimale ("00000001"); //&H1
KEYEVENTTF_KEYDOWN = 0;
KEYEVENTF_KEYUP = Numero esadecimale ("00000002"); //&H2
kernel32 = Carica Dll("kernel32");
kernel32 << DeclareFunction( "Sleep", Convenzione( STDCALL ), Alias( "Sleep" ),
Arg( Int32, "dwMillisecondi" ),
Resi (Vuoti)); //Se la funzione ha successo, il valore che restituisce è diverso da zero.
utente32 = Carica Dll("Utente32");
utente32 << DeclareFunction( "FindWindowA", Convenzione( STDCALL ), Alias( "FindWindow2" ),
Arg( UInt32, input, "lpClassName" ),
Arg( AnsiString( 200 ), input, "lpCaption" ),
Restituisce (UIntPtr)
); // hWnd
utente32 << DeclareFunction( "SetForegroundWindow", Convenzione( STDCALL ), Alias( "SetForegroundWindow" ),
Arg(UIntPtr, "hWnd" ),
Restituisce (UInt32)
);
utente32 << DeclareFunction( "keybd_event", Convenzione( STDCALL ), Alias( "keybd_event" ),
Arg( UInt8, "bVk" ), //[in] Specifica un codice di chiave virtuale. Il codice deve essere un valore compreso tra 1 e 254. Per un elenco completo, vedere Codici chiave virtuali.
Arg(UInt8, "bScan" ),
Arg(UInt32, "dwFlags" ),
Arg(UIntPtr, "dwExtraInfo" ),
Resi (Vuoti));
utente32 << DeclareFunction( "GetKeyState", Convenzione( STDCALL ), Alias( "GetKeyState" ),
Arg( Int32, "nVirtKey" ), //[in] Specifica una chiave virtuale. Se la chiave virtuale desiderata è una lettera o un numero (da A a Z, da a a z o da 0 a 9), nVirtKey deve essere impostato sul valore ASCII di quel carattere. Per le altre chiavi, deve essere un codice di chiave virtuale.
Restituisce( Int32 ) ); //Il valore restituito specifica lo stato della chiave virtuale specificata, come segue:
//Se il bit di ordine superiore è 1, la chiave è abbassata; altrimenti è tutto finito.
//Se il bit di ordine inferiore è 1, la chiave viene attivata/disattivata. Un tasto, ad esempio il tasto BLOC MAIUSC, viene attivato o disattivato se è attivato. La chiave è disattivata e non attivata se il bit di ordine inferiore è 0. L'indicatore luminoso di un tasto di attivazione/disattivazione (se presente) sulla tastiera sarà acceso quando il tasto viene attivato e spento quando il tasto viene disattivato.
shell32 = Carica Dll("shell32");
shell32 << DeclareFunction( "ShellExecuteA", Convenzione( STDCALL ), Alias( "ShellExecute" ),
Arg(UIntPtr, input, "hWnd" ),
Arg( AnsiString( 20 ), "lpOperation" ),
Arg( AnsiString( 256 ), "lpFile" ),
Arg( AnsiString( 256 ), "lpParameters" ),
/* Arg( UInt32, "lpParameters" ), */
Arg(UInt32, "lpDirectory" ),
Arg(UInt32, "nShowCmd" ),
Restituisce (UInt32)
); //Se la funzione ha esito positivo, restituisce un valore maggiore di 32.
Salva file di testo ("C:\temp\deleteme.txt", "'Hello World' da JMP");
nomedir = "C:\temp";
nomef = "C:\temp\deleteme.txt";
// aperto nel Blocco note
rc = shell32 << ShellExecute( 0, "Apri", "notepad.exe", " ", 0, 1 );
lpCaption = "Senza titolo - Blocco note";
rc = kernel32 <
// apri in Excel
//rc = shell32 << ShellExecute( 0, "Apri", "Excel.exe", " ", 0, 1 );
//lpCaption = "Microsoft Excel - Libro1";
// aspetta l'apertura
rc = kernel32 <
hWnd = utente32 << FindWindow2( 0, lpCaption );
rc = utente32 << SetForegroundWindow( hWnd );
tasto = funzione( { l_tasto },
utente32 << keybd_event( l_key, 0, 0, 0 ); // premi il tasto
utente32 << keybd_event( l_key, 0, KEYEVENTF_KEYUP, 0 ); // rilascia la chiave
);
utente32 << keybd_event( VK_SHIFT, 0, 0, 0 ); // premi il tasto
chiave(VK_H);
utente32 << keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ); // rilascia la chiave
chiave(VK_E);
chiave(VK_L);
chiave(VK_L);
chiave(VK_O);
chiave(VK_SPACE);
chiave(VK_F);
chiave(VK_R);
chiave(VK_O);
chiave(VK_M);
chiave(VK_SPACE);
utente32 << keybd_event( VK_SHIFT, 0, 0, 0 ); // premi il tasto
chiave(VK_J);
chiave(VK_M);
chiave(VK_P);
chiave(VK_1);
utente32 << keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ); // rilascia la chiave
chiave(VK_RETURN);
utente32 << ScaricaDll( );
shell32 << ScaricaDll( );
kernel32 << ScaricaDll( );