簡體   English   中英

如何在MATLAB中格式化從串行端口讀取的數據?

[英]How do I format this data read from a serial port in MATLAB?

我正在嘗試通過MATLAB將數字傳感器連接到我的計算機。

我首先向傳感器發送數據請求,然后傳感器回復六字節流。

MATLAB讀取傳感器如下:

data1 = fscanf(obj1, '%c', 6);

我確切地知道數據的內容應該是什么,但我不知道如何讀取MATLAB生成的數據包中的數據。

數據包( data1 )只是6個字節,但如何作為整數訪問每個單獨的元素?

我以前從未接觸過MATLAB編程,所以我有點迷失。

附帶問題: MATLAB的數據格式%c%s%c\\n%s\\n是什么意思? 我試着尋找它,但我找不到任何東西。

格式說明符%c表示FSCANF正在讀取六個字符。 您應該能夠使用DOUBLE函數將這些字符轉換為整數值:

data1 = double(data1);

現在data1應該是一個包含整數值的六元素數組。 您可以通過索引到數組來訪問每個:

a = data1(1);  %# Gets the first value and puts it in a

如果要組合data1的值對,使得一個值表示數字的最高8位,而一個值表示最低的8位,則以下內容應該起作用:

a = int16(data1(1)*2^8+data1(2));

上面使用data1(1)作為高位, data1(2)作為低位,然后將結果轉換為INT16類型。 您也可以不接受對INT16的調用,只將結果保留為DOUBLE類型(它存儲的仍然是整數)。

格式說明符%s用於讀取字符串,直到遇到空格為止。 格式說明符在我上面鏈接的FSCANF文檔中討論。

您可以使用來自MATLAB File Exchange的AJ Johnson的cstruct 這允許您指定與您的字符包對應的C語言數據結構。 然后,一個函數調用將字符(字節)轉換為MATLAB數據類型。 如果數據格式發生變化,這是快速且可維護的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM