如果我用二進制的方式接收串口數據,要如何將這些數據轉化成float型並存儲到數組中並繪制成 曲線? |
答題得分者是:st33chen
|
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
上位機是delphi,下位機為dsp,我要發送命令如“c”給下位機,表示要下位機發送電流采樣的數據給上 位機,該數據下位機已經采集了5000個存儲在dsp的緩衝區,現在,我要將從串口接收的這些數據提取出 來,轉化成float型來存儲到數組裏,再將這些數據顯示(用tchart中的fastline顯示曲線),且從dsp傳 過來的數據是電流采樣值6.7898這樣的數據。
請問: 如果我用二進制的方式接收串口數據,要如何將這些數據轉化成float型並存儲到數組中並繪制成 曲線?(另一種方式是用文本的形式提取串口數據。) |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
您的問題應可細分為二個子問題 1. 如何從 dsp 抓資料 2. 抓來的資料如何繪圖 我的想法是, 把資料 從 dsp 抓下來存成一個 database 的 table, 再用 tdbchart 抓 table 的資料繪圖 會是比較簡單的做法 所以本問題的重點應是如何從 dsp 抓資料 要請問一下, dsp 如何存放資料? (資料是否是固定長度? 若不固定, 一筆一筆間如何分隔?) 如果您已有辦法 "用文本的形式提取串口數據" 那不就用 strtofloat function 將每筆數據轉為 float 後再存在 table 就好了嗎? ===================引 用 blue36sea 文 章=================== 上位機是delphi,下位機為dsp,我要發送命令如“c”給下位機,表示要下位機發送電流采樣的數據給上 位機,該數據下位機已經采集了5000個存儲在dsp的緩衝區,現在,我要將從串口接收的這些數據提取出 來,轉化成float型來存儲到數組裏,再將這些數據顯示(用tchart中的fastline顯示曲線),且從dsp傳 過來的數據是電流采樣值6.7898這樣的數據。 請問: 如果我用二進制的方式接收串口數據,要如何將這些數據轉化成float型並存儲到數組中並繪制成 曲線?(另一種方式是用文本的形式提取串口數據。)
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
因為采用文本接受的方式,下位機dsp太占資源,所以只能用二進制的方式接收dsp傳來的數據,不過dsp傳送的數據是整數,是以十六位的方式先發送低八位,再發送高八位,上位機接收到數據將其轉化為十六進制再轉化為十進制。
現在就剩編程實現了,有興趣的可以將實現程序發上來,謝謝! ===================引 用 blue36sea 文 章=================== 上位機是delphi,下位機為dsp,我要發送命令如“c”給下位機,表示要下位機發送電流采樣的數據給上 位機,該數據下位機已經采集了5000個存儲在dsp的緩衝區,現在,我要將從串口接收的這些數據提取出 來,轉化成float型來存儲到數組裏,再將這些數據顯示(用tchart中的fastline顯示曲線),且從dsp傳 過來的數據是電流采樣值6.7898這樣的數據。 請問: 如果我用二進制的方式接收串口數據,要如何將這些數據轉化成float型並存儲到數組中並繪制成 曲線?(另一種方式是用文本的形式提取串口數據。) |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
假設
1. var astr, bstr : string; ii : integer; 2. 收到的低八位放在 astr, 高八位放在 bstr 試一下 ii := ord(astr[1]) 256*ord(bstr[1]); 得一個數據. 如果 ok 請自行寫一個 loop 去處理所有數據. ===================引 用 blue36sea 文 章=================== 因為采用文本接受的方式,下位機dsp太占資源,所以只能用二進制的方式接收dsp傳來的數據,不過dsp傳送的數據是整數,是以十六位的方式先發送低八位,再發送高八位,上位機接收到數據將其轉化為十六進制再轉化為十進制。 現在就剩編程實現了,有興趣的可以將實現程序發上來,謝謝! ===================引 用 blue36sea 文 章=================== 上位機是delphi,下位機為dsp,我要發送命令如“c”給下位機,表示要下位機發送電流采樣的數據給上 位機,該數據下位機已經采集了5000個存儲在dsp的緩衝區,現在,我要將從串口接收的這些數據提取出 來,轉化成float型來存儲到數組裏,再將這些數據顯示(用tchart中的fastline顯示曲線),且從dsp傳 過來的數據是電流采樣值6.7898這樣的數據。 請問: 如果我用二進制的方式接收串口數據,要如何將這些數據轉化成float型並存儲到數組中並繪制成 曲線?(另一種方式是用文本的形式提取串口數據。)
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
没人回答的話, 可否想一下我的想法, 我曾用 java 繪圖, 不曾用 delphi 去繪圖, 所以不知 delphi 有無其他元件可做動態曲線. 如果您的 動態曲線 是畫一個點後等數秒後再畫第二點並形成一條線段, 再等數秒後再畫第三點形成第二條線段, 以此類推... 那可不可以用 timer 元件, 故定隔數秒餵入一個數据到 繪圖元件並 refresh 該繪圖元件? ===================引 用 blue36sea 文 章=================== 數據轉化成十進制後存在數組中,我要將這些數據繪制成實時曲線,用tchart中的fastline繪制,要看到它的動態效果,請問要怎麽編程實現啊?或者還有更好的方法實現動態曲線?謝謝!
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-10-18 09:00:48, 註解 無‧
|
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |