<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'essaie d'écrire un script pour calculer correctement la puissance des conceptions à unités divisées dans Custom Designer et Design Evaluator.Le problème est que les degrés de liberté corrects ne sont pas utilisés et bien qu'ils puissent désormais être modifiés, chaque fois que les degrés de liberté ou le rapport signal/bruit sont modifiés, les zones de contour de l'analyse de puissance s'effondrent et il y a beaucoup de clics inutiles sur les boutons. sur.De plus, je ne peux pas déterminer comment calculer le paramètre de non-centralité pour les conceptions à unités divisées, je ne peux donc pas simplement écrire un script pour faire le calcul à partir de zéro.Dans JMP 10, le paramètre de non-centralité est une colonne cachée dans l'analyse de puissance que je peux obtenir sous forme de matrice.
Ce que je veux pouvoir faire, c'est écrire un script qu'un utilisateur peut exécuter dans Custom Designer ou Design Evaluator et lui faire calculer la puissance pour lui en utilisant plusieurs rapports signal/bruit en même temps.Pour ce faire, mon script doit pouvoir modifier le rapport signal/bruit dans la plate-forme JMP et demander à CD ou DE de recalculer le NCP.
Je peux modifier la valeur NumberColEditBox, mais je n'arrive pas à faire en sorte que la plateforme recalcule NCP.
win = Window("DOE - Conception personnalisée"); //Se connecte à la fenêtre à des fins de test
gagner[OutlineBox(15)] << Fermer(0); // Ceci est la boîte de présentation de l'analyse de puissance
gagner[NumberColBox(9)] << Cacher(0); //Voici la colonne NCP
ncp1 = win[NumberColBox(9)] << Obtenir en tant que matrice ; //Enregistre la colonne NCP
win[NumberColEditBox(4)] << SetValues([4]); // Cela change la valeur du rapport signal/bruit dans la case à 4
Comment puis-je simuler une frappe sur la touche Entrée pour que la plateforme recalcule ?
Je noterai que lorsque je modifie la valeur dans la case à partir du script et que je clique simplement dans la case et que j'appuie sur Entrée, rien ne se passe.Lorsque je tape ensuite le numéro que je viens de modifier et que j'appuie sur Entrée, rien ne se passe.Si je tape ensuite un autre numéro, cela fonctionne correctement.(cette séquence serait comme, win[NumberColEditBox(4)] << SetValues([4]); appuyez sur Entrée, rien -> Tapez 4 dans la case, appuyez sur Entrée, rien -> Tapez 3 dans la case, appuyez sur Entrée, travaux)
Quelques exemples de nouilles avec fonction d'appui sur une touche - Fonction Windoze keybd_event avec VK_RETURN
J'espère que cela t'aides.
Meilleur,
-Mat
// keypress_example.jsl
//Matt Flynn -
// prudence lors de l'expérimentation avec des clés - peut devenir intéressant
// 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 = Hex vers Nombre( "0000001B" );
VK_H = Hex vers Nombre( "00000048" );
VK_E = Hex en Nombre( "00000045" );
VK_L = Hex vers Nombre( "0000004C" );
VK_O = Hex vers Nombre( "0000004F" );
VK_F = Hex vers Nombre( "00000046" );
VK_R = Hex vers Nombre( "00000052" );
VK_M = Hex en Nombre( "0000004D" );
VK_J = Hex vers Nombre( "0000004A" );
VK_M = Hex en Nombre( "0000004D" );
VK_P = Hex en Nombre( "00000050" );
VK_SPACE = Hex vers Nombre( "00000020" );
VK_SHIFT = Hex vers Nombre( "00000010" );
VK_RETURN = Hex vers Nombre( "0000000D" );
VK_1 = Hex vers Nombre( "00000031" );
KEYEVENTF_EXTENDEDKEY = Hex vers Nombre( "00000001" ); //&H1
KEYEVENTTF_KEYDOWN = 0 ;
KEYEVENTF_KEYUP = Hex vers Nombre( "00000002" ); //&H2
kernel32 = Charger la DLL( "kernel32" );
kernel32 << DeclareFunction( "Sleep", Convention( STDCALL ), Alias( "Sleep" ),
Arg( Int32, "dwMillisecondes" ),
Renvoie (Void) ); //Si la fonction réussit, la valeur de retour est différente de zéro.
user32 = Charger la DLL( "User32" );
user32 << DeclareFunction( "FindWindowA", Convention( STDCALL ), Alias( "FindWindow2" ),
Arg( UInt32, entrée, "lpClassName" ),
Arg( AnsiString( 200 ), entrée, "lpCaption" ),
Renvoie( UIntPtr )
); // hWnd
user32 << DeclareFunction( "SetForegroundWindow", Convention( STDCALL ), Alias( "SetForegroundWindow" ),
Arg(UIntPtr, "hWnd" ),
Retours ( UInt32 )
);
user32 << DeclareFunction( "keybd_event", Convention( STDCALL ), Alias( "keybd_event" ),
Arg( UInt8, "bVk" ), //[in] Spécifie un code de clé virtuelle. Le code doit être une valeur comprise entre 1 et 254. Pour une liste complète, voir Codes de clé virtuelle.
Arg( UInt8, "bScan" ),
Arg( UInt32, "dwFlags" ),
Arg(UIntPtr, "dwExtraInfo" ),
Renvoie (Void) );
user32 << DeclareFunction( "GetKeyState", Convention( STDCALL ), Alias( "GetKeyState" ),
Arg( Int32, "nVirtKey" ), //[in] Spécifie une clé virtuelle. Si la clé virtuelle souhaitée est une lettre ou un chiffre (A à Z, a à z ou 0 à 9), nVirtKey doit être défini sur la valeur ASCII de ce caractère. Pour les autres clés, il doit s'agir d'un code de clé virtuelle.
Renvoie( Int32 ) ); //La valeur de retour spécifie l'état de la clé virtuelle spécifiée, comme suit :
//Si le bit de poids fort est 1, la clé est en panne ; sinon, c'est fini.
//Si le bit de poids faible est 1, la clé est basculée. Une touche, telle que la touche CAPS LOCK, est activée si elle est activée. La clé est désactivée et non basculée si le bit de poids faible est 0. Le voyant d'une touche à bascule (le cas échéant) sur le clavier sera allumé lorsque la touche est basculée et s'éteindra lorsque la touche est désactivée.
shell32 = Charger la Dll( "shell32" );
shell32 << DeclareFunction( "ShellExecuteA", Convention( STDCALL ), Alias( "ShellExecute" ),
Arg( UIntPtr, entrée, "hWnd" ),
Arg( AnsiString( 20 ), "lpOperation" ),
Arg(AnsiString( 256 ), "lpFile" ),
Arg( AnsiString( 256 ), "lpParameters" ),
/* Arg( UInt32, "lpParameters" ), */
Arg( UInt32, "lpDirectory" ),
Arg(UInt32, "nShowCmd" ),
Retours ( UInt32 )
); //Si la fonction réussit, elle renvoie une valeur supérieure à 32.
Enregistrer le fichier texte( "C:\temp\deleteme.txt", "'Hello World' from JMP" );
nom_répertoire = "C:\temp" ;
fname = "C:\temp\deleteme.txt";
// ouvre dans le Bloc-notes
rc = shell32 << ShellExecute( 0, "Ouvrir", "notepad.exe", " ", 0, 1 );
lpCaption = "Sans titre - Bloc-notes" ;
rc = kernel32 << Sommeil( 2 ); // pause pour laisser le bloc-notes s'ouvrir
// ouvre dans Excel
//rc = shell32 << ShellExecute( 0, "Ouvrir", "Excel.exe", " ", 0, 1 );
//lpCaption = "Microsoft Excel - Livre1" ;
// attend l'ouverture
rc = kernel32 << Sommeil ( 200 ); // pause pour laisser le bloc-notes s'ouvrir
hWnd = user32 << FindWindow2( 0, lpCaption );
rc = user32 << SetForegroundWindow( hWnd );
clé = fonction( { l_key },
user32 << keybd_event( l_key, 0, 0, 0 ); // appuyez sur la touche
user32 << keybd_event( l_key, 0, KEYEVENTF_KEYUP, 0 ); // clé de libération
);
user32 << keybd_event( VK_SHIFT, 0, 0, 0 ); // appuyez sur la touche
clé( VK_H );
user32 << keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ); // clé de libération
clé( VK_E );
clé( VK_L );
clé( VK_L );
clé( VK_O );
clé( VK_SPACE );
clé( VK_F );
clé( VK_R );
clé( VK_O );
clé( VK_M );
clé( VK_SPACE );
user32 << keybd_event( VK_SHIFT, 0, 0, 0 ); // appuyez sur la touche
clé( VK_J );
clé( VK_M );
clé( VK_P );
clé( VK_1 );
user32 << keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ); // clé de libération
clé( VK_RETURN );
user32 << UnloadDll( );
shell32 << UnloadDll( );
kernel32 << UnloadDll( );