2015-12-14 33 views
8

Jak używać MATLAB do wysyłania sygnałów do portu adresu IP?Jak używać MATLAB do wysyłania sygnałów do portu adresu IP?

Faktem jest, że połączyłem samochód robota z PC przez Wi-Fi i zdecydowałem, że sygnał odebrany przez robota będzie napędzał samochód do przodu. Testowałem to przez narzędzia TCP i UDP i było OK. Więc myślę, że powinno być dobrze, używając MATLAB, aby wysłać ten sygnał również.

mojego kodu jest:

t = tcpip('192.168.1.1',2001); 
fopen(t); 
a=dec2hex(1095216922879); %FF000400FF(H) 
fprintf(t,a) 

ale to nie działa. Pracowałem nad tym długo, ale nie udało mi się.

+2

Witamy w przepełnieniu stosu! Należy pamiętać, że "to nie działa" nigdy nie jest wystarczającą informacją. Czy wystąpił błąd? Czy coś się dzieje? Co się dzieje zamiast oczekiwanego zachowania? –

+0

Żaden błąd nie jest zgłaszany przez MATLAB. Ale robot-samochód po prostu się nie porusza. Więc zastanawiam się, czy sygnał został wysłany. I używam narzędzia TCP, aby złapać torbę wysłaną z komputera.Nie złapałem nic. Więc może coś jest nie tak z kodem? lub MATLAB? DZIĘKI! – Yancy

+2

Jakiego typu danych oczekuje twój robot? Czy naprawdę spodziewasz się danych ciągu? – Daniel

Odpowiedz

0

Spróbuj tego:

myhost = java.net.InetSocketAddress('192.168.1.1',2001); 
mysoc = java.net.Socket(); 
mysoc.connect(myhost, 2000); % Two second timeout 
connected=mysoc.isConnected(); 
if connected 
    mystream = mysoc.getOutputStream(); 
    mystream.write(hex2dec('FF000400FF')); 
    mystream.flush(); 
    mystream.close(); 
end 

mysoc.close(); 

Można owinąć to w bloku try catch:

try 
... 
catch ME 
    if (isa(ME, 'matlab.exception.JavaException')) 
     reason = class(ME.ExceptionObject); 
     connected = 0; 
    end 
end 

ten powinien działać na każdej platformie, pulpit lub wdrożone. Jeśli Twój samochód zwróci coś w odpowiedzi na polecenie, możesz go odczytać za pomocą metody inputStream. Najlepszy ze wszystkich, możesz opublikować tekst w uzasadnieniu, jeśli "to nie działa"!