2013-10-01 4 views
0

Есть ли способ заставить MATLAB автоматически нажимать конкретную клавишу клавиатуры? Мое подключение к Интернету отключается без каких-либо причин. Я хочу создать сценарий в MATLAB, который периодически проверяет состояние интернет-соединения, и если соединение отключено, программа автоматически запустит соединение. Я хочу написать сценарий в MATLAB, который автоматически запускает соединение (первое изображение). Затем программа автоматически должна нажать клавишу Enter (кнопка «Подключиться» на первом снимке). После этого появится второе окно (второе изображение). Во втором окне, если я нажму кнопку «подключиться», соединение будет подключено к Интернету. Вот мой сценарий:Автоматически нажмите специальную клавишу клавиатуры в MATLAB

function [] = AutoConn() 
tic ; 

cTime = 2 ; 
k = 0 ; 
A = 0 ; 
while(1) 
    nTime = toc ; 
    tic ; 
    C = isnett ; 
    if C == 1 
     A = 1 ; 
    else 
     A = 0 ; 
     system('C:\...\Connection.pbk'); 
     {....} 

    end 
    clc; 
    k = k+1; 
    k 
    A 
    pause(cTime) ; 
end 


function flag = isnett() 
% This function returns a 1 if basic internet connectivity 
% is present and returns a zero if no internet connectivity 
% is detected. 

% define the URL for US Naval Observatory Time page 
url =java.net.URL('http://tycho.usno.navy.mil/cgi-bin/timer.pl'); 

% read the URL 
try 
    link = openStream(url); 
    parse = java.io.InputStreamReader(link); 
    snip = java.io.BufferedReader(parse); 
catch 
    flag = 0; 
    return 
end 
if ~isempty(snip) 
    flag = 1; 
else 
    flag = 0; 
end 

Первое изображение: http://i.stack.imgur.com/OEy6W.png

Второе фото: http://i.stack.imgur.com/TPlEN.png

+0

Я Я не уверен, но я думаю, что Matlab не может этого сделать. вы можете использовать autohotkey для этого (google it). –

+0

Что происходит, когда нажата клавиша «Ввод»? Почему бы вам не обойти ключ ввода полностью и запустить любую функцию, которую он вызывает? Что создает этот диалог в первую очередь? Есть ли какое-либо другое взаимодействие с пользователем перед тем, как «matlab hits enter»? Я не могу понять, что вызывает «и теперь Matlab нажимает клавишу» - так или иначе, что бы это ни было, нужно «делать все, что происходит после нажатия клавиши», и полностью обходить диалог. – Floris

ответ

2

Да, хотя без документов, Matlab может сделать это с помощью java.awt.Robot, see Undocumented Matlab post on this topic.

В нем упоминается очень хороший FEX, который облегчает вам работу: inputEmu.

Используя inputEmu все, что вам нужно сделать, это:

inputemu('key_normal','\ENTER'); 

Примечание: Вам нужно будет проверить, если AWT доступен:

error(javachk('awt')) 

или

if usejava('awt') 
    myFrame = java.awt.Frame; 
else 
    disp('Unable to open a Java Frame.'); 
end 
Смежные вопросы