2015-11-16 6 views
10

से मैटलैब को डेटा भेजें, मैंने एंड्रॉइड एप्लिकेशन से डेटा को मैटलैब में भेजने के लिए कुछ समय बिताया - बिना किसी दृष्टिकोण के। मैं एक सुरक्षित webservice के माध्यम से JSON के साथ ऐसा करना पसंद करेंगे।एंड्रॉइड/जावा

मुझे शायद यह गलत अवधारणा है कि यह कैसे काम करेगा।

मैटलैब डेटा प्राप्त करने के लिए मेरे एंड्रॉइड डिवाइस से POST अनुरोधों के लिए चल रहा/इंतजार करना चाहिए, इसे जेसन से मैटलैब फॉर्म में लाएं, इसे प्रगति करें और इसे वापस भेजें - नए अनुरोधों के लिए फिर से प्रतीक्षा करें।

"वेब्रेड" जैसी "रीस्टफुल वेब सेवा" आने वाले डेटा की प्रतीक्षा नहीं करती है और उनके लिए सक्रिय नहीं होती है।


मैटलैब को जेसन के साथ आने वाले डेटा के लिए कैसे सुनना है? या मैटलैब को एंड्रॉइड/जावा आधारित प्रोग्राम से डेटा कैसे प्राप्त करने दें? क्या मुझे ऐसा करने के लिए डेटाबेस के साथ एक और ढांचे, एपीआई या यहां तक ​​कि एक सर्वर की आवश्यकता है?

क्या कोई मुझे कुछ संकेत दे सकता है?

+1

वेब्रेड एक क्लाइंट है, सर्वर नहीं। आपको वास्तव में matlab पर एक आराम सर्वर जोड़ने की जरूरत है। लेकिन आपकी सामान्य समस्या क्या है? शायद एक बेहतर दृष्टिकोण है। – zapl

+0

किसी सर्वर के साथ आपकी जानकारी के लिए धन्यवाद, मैं एक जावा स्प्रिंग सर्वर चलाने की कोशिश करूंगा जो मैटलैब को कॉल करेगा। – Ghalion

+0

https://www.mathworks.com/matlabcentral/answers/326764-how-can-i-read-a-json-file?requestedDomain=www.mathworks.com – Ibrahim

उत्तर

5

दृष्टिकोण 1:

मैटलैब भी मैटलैब मोबाइल https://de.mathworks.com/products/matlab-mobile.html, जो आपके उपकरण पर मैटलैब कोड को क्रियान्वित करने के लिए सक्षम है प्रदान करता है, लेकिन यह मैटलैब के लिए छवियों को भेजने के लिए संभव नहीं है।

हालांकि, आप वेबकैम https://play.google.com/store/apps/details?id=com.pas.webcam&hl=en का उपयोग कर सकते हैं और एक सर्वर खोल सकते हैं, जो कि काफी सीधे है। आप मैटलैब मोबाइल के माध्यम से मैटलैब को conencto पृष्ठभूमि में अनुप्रयोग चलाने के लिए और फिर कर सकते हैं और आपके आईपी पते पोर्ट 8080 के माध्यम से पहुंच यह और आमतौर पर

दृष्टिकोण 2:

आप उपयोग कर सकते हैं एक WebSocket -Server यहां कार्यान्वित किया जाता है जो:

https://de.mathworks.com/matlabcentral/fileexchange/50040-jebej-matlabwebsocket

कैसे यह आप GitHub रीडमी पर दिए गए निर्देशों का पालन कर सकते हैं, यहां चलाने के लिए प्राप्त करने के लिए अधिक जानकारी के लिए: https://github.com/jebej/MatlabWebSocket

एक वेबस्केट सर्वर ओएसआई मॉडल https://en.wikipedia.org/wiki/OSI_model की 7 वीं परत (एप्लिकेशन परत) की उच्चतम परत पर है और चौथी परत (टीसीपी) पर सेशन बनाता है। हालांकि, आपको बफर आकार इत्यादि जैसी चीजों को निर्दिष्ट करने की आवश्यकता नहीं है

निम्नलिखित उदाहरण कोड सीधे गीथब प्रोजेक्ट से उदाहरण कोड से लिया गया है। एंड्रॉइड एप्लिकेशन में वांछित परिणाम को पूरा करने के लिए एंड्रॉइड पर क्लाइंट एप्लिकेशन को पुनर्निर्माण करने का यह सबसे अच्छा तरीका है।

इको सर्वर:

classdef EchoServer < WebSocketServer 
    %ECHOSERVER Summary of this class goes here 
    % Detailed explanation goes here 

    properties 
    end 

    methods 
     function obj = EchoServer(varargin) 
      %Constructor 
      [email protected](varargin{:}); 
     end 
    end 

    methods (Access = protected) 
     function onOpen(obj,conn,message) 
      fprintf('%s\n',message) 
     end 

     function onTextMessage(obj,conn,message) 
      % This function sends an echo back to the client 
      conn.send(message); % Echo 
     end 

     function onBinaryMessage(obj,conn,bytearray) 
      % This function sends an echo back to the client 
      conn.send(bytearray); % Echo 
     end 

     function onError(obj,conn,message) 
      fprintf('%s\n',message) 
     end 

     function onClose(obj,conn,message) 
      fprintf('%s\n',message) 
     end 
    end 
end 

MATLAB प्रकार में इसे चलाने के लिए:

s = EchoServer(30000); 

यह तो अपने स्थानीय मशीन पर पोर्ट 30000 का उपयोग करेंगे।

एंड्रॉयड पर बस एक WebSocket ग्राहक बना सकते हैं और जो आप ipconfig (Windows) या ifconig (लिनक्स) का उपयोग करके पता कर सकते हैं अपने यूआरआई, का उपयोग करें। Android में uri निम्नलिखित की तरह करना चाहिए:

ws://192.168.1.102:30000 

कहाँ आईपी पता आपके आईपी पते

4

यहाँ के अनुसार बदल सकते हैं मेरी 2 सेंट है।

आपका दृष्टिकोण सही लगता है।

चरण 1: आपको अपने डिवाइस पर MATLAB का उपयोग करके एक वेब सर्वर चलाने की आवश्यकता है। Web Server माध्यम से जा रहा करके, यह है जैसे आप webserver को चलाने के लिए उपयोग कर सकते हैं, और एक .m फ़ाइल जब एक पोस्ट निष्पादित या GET अनुरोध अपने सर्वर पर किया जाता है लग रहा है।

चरण 2: कहते हैं कि चलो कि आपके सर्वर पोर्ट 8080 पर अनुरोध स्वीकार कर रहा है अपने Android उपकरण से, अगर आप एक ही नेटवर्क पर कर रहे हैं तो आप http://your.ip.address:8080 को HTTP पोस्ट अनुरोध बनाने के लिए और डेटा निकालने और अपने कोड निष्पादित कर सकते हैं .m फ़ाइल में।

नोट: ngrok उपयोगिता का उपयोग कर डिवाइस पर चल रहे अपने स्थानीय सर्वर के लिए आप एक सार्वजनिक यूआरएल भी प्राप्त कर सकते हैं। फिर उस सार्वजनिक यूआरएल के लिए एक POST अनुरोध करें। अनुरोध करने के लिए आपको उसी नेटवर्क पर नहीं होना चाहिए। यहां कुछ स्पष्टीकरण दिया गया है: Accessing localhost from android over wifi


संपादित करें: अतिरिक्त प्रश्न का कहना है:

मैटलैब टीसीपी/आईपी ग्राहक के माध्यम से डेटा प्राप्त करने के लिए संभव है, लेकिन कैसे एंड्रॉयड साइट पोस्ट/एल्गोरिथ्म पाने और कैसे क्या करने की जरूरत है Matlab इसके लिए ज़िम्मेदार प्रतिक्रिया दे सकता है?

मुझे जो समझ में आता है उसे दोबारा दोहराएं। सबसे पहले, आपको पता है कि कैसे एंड्रॉयड कोड से, एक/एक पोस्ट कर सकते हैं अनुरोध प्राप्त करना चाहते हैं और दूसरी बात कैसे मैटलैब अनुरोध का जवाब देगा?

  • एंड्रॉयड में आप या तो AsyncTask (Android HttpURLConnection with AsyncTask Tutorial) का उपयोग कर या यदि आप इसे ठीक तरह से करना चाहते हैं, तो आप पोस्ट करने के लिए रेट्रोफिट पुस्तकालय का उपयोग कर सकते पृष्ठभूमि थ्रेड में पोस्ट अनुरोध कर सकते हैं/कॉल प्राप्त (Using Retrofit 2.x as REST client - Tutorial )।
  • जब WebServer का उपयोग कर के रूप में पहले से कड़ी में उल्लेख किया है, जब .m फ़ाइल पोस्ट कॉल पर निष्पादित हो जाता है, तुम वहाँ से पोस्ट अनुरोध के जवाब भेज सकते हैं। एंड्रॉइड पर, जहां आपने कॉल शुरू की, आप कॉलबैक प्राप्त कर सकते हैं।

आशा है कि यह एक बिट में मदद करता है।

2

आप Android Support Package for MATLAB की कोशिश की है?3-कुल्हाड़ियों

  • कोणीय ऑन-अक्ष 3
  • चुंबकीय क्षेत्र

    • त्वरण पर:

      यह कैमरे के लिए उपयोग की अनुमति नहीं है, जब MATLAB मोबाइल के साथ प्रयोग किया उस तक पहुँच प्रदान करता है 3-कुल्हाड़ियों

    • दिगंश, रोल, पिच
    • अक्षांश, देशांतर, ऊंचाई, क्षैतिज सटीकता, गति, और निश्चित रूप
    पर वेग

    यहां शुरू करने के तरीके पर a link with more detailed information है।