2015-08-09 44 views
0

我有一個傳感器,將他收集的數據寫入一個txt文件(連續,每秒一次),我唯一關心的數據是傳感器收集的最後一個數據,我想要的是 用Matlab(或Java)分析數據,如何完成? 在此先感謝!同時讀寫matlab

回答

0

這只是的http://www.mathworks.com/help/matlab/ref/fgetl.html

fid = fopen('sensor.txt'); 
tline = fgetl(fid); 
while 1 
    if ischar(tline) 
     disp(tline) 
    else 
     pause(1) 
    end 
    tline = fgetl(fid); 
end 

這不是一個成品的解決方案稍作修改,想想當關閉文件。缺少flose(fid),代碼當前以無限循環運行。使用CTRL + C退出它。

2

您需要能夠觀察文件以獲取更新,然後在檢測到更改時採取一些措施。我相信這之前必須與輪詢機制完成的,但在Java 7,您可以使用一個WatchService

public static void main(String[] args) throws InterruptedException { 

    Path dir = Paths.get("src/main/resources/"); 
    try { 
     WatchService watcher = FileSystems.getDefault().newWatchService(); 
     WatchKey key = dir.register(watcher, StandardWatchEventKinds.ENTRY_MODIFY); 

     while (true){ 
      watcher.take(); 
      List<WatchEvent<?>> events = key.pollEvents(); 
      // Handle update 

      key.reset(); 
     } 
    } catch (IOException x) { 
     System.err.println(x); 
    } 
} 

我建議你仔細想一下線程安全的,你如何處理更新 - 我建議在讀取文件之前將文件複製到安全的「分段」位置,以避免與更新過程發生讀/寫衝突。