Re: [問題]Float的資料用Char的Buffer傳輸
: 我目前也是類似要送資料到嵌入式晶片裡,
: 本來是用RS232送 是char 8bits合成一個float
: union DataSpace
: {
: unsigned char Quarter[4];
: float Full;
: }Float_Data;
: 後面是用 Float_Data.Quarter[k]= (char) 接收到的值
: 不過現在想改成用藍芽 不過發送的好像是ASCII
電腦 藍芽 嵌入式
3 -------> --------> '3'
0x03 0x33
所以現在的情況是像這樣嗎?
我怎麼覺得是藍芽模組的問題...
感覺他把你所有訊息都 +'0' 傳出去
我不確定你是想傳 0x03 還是 0x40400000
(char)3 (float)3
我假設是前者
: 所以像是本來送1
: 改成藍芽發送接收到的就會變成像是 Quarter[0]的 value是"1" decimal是49
: 可是這樣出來的full就會變成錯誤的 雖然decimal還是49
: 不過因為是float 所以value就變了
: =======================================
: 大概像是之前是一個float分成4個char的儲存位置存
: 送3進去Float_Data.Full收到的就是3
: 不過現在因為直接送的是char 送進去只是存到Float_Data.Quarter[0]="3"的字串
: Float_Data.Full出來的就不會是要的float 3這個值
: 本來想說單獨抓Float_Data.Quarter[0]出來轉換之類
: 試過什麼float直接強制轉換 或是atof等等的好像也都沒用
: 不知道這種問題要怎麼處理 謝謝
如果確定是藍芽把你 +'0'
那接收端收進來就先 -'0'
實際上你也有做啊
mm = (float)Float_Data.Quarter[0] - 48;
不過因為這個"屍塊"是要拿去"組合"成float
屍塊沒有任何的數字意義
他只是float的一部分
你不能幫他轉型
要維持原本的樣子
char mm;
mm = Float_Data.Quarter[0] - 48;
收集四個屍塊在陣列裡擺好
float格式的資料就組好了~
站內信失敗XD
發到版上了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.230.107.225
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1465204017.A.D29.html
※ 編輯: chuegou (36.230.107.225), 06/06/2016 17:09:07
→
06/06 17:31, , 1F
06/06 17:31, 1F
→
06/06 17:32, , 2F
06/06 17:32, 2F
→
06/06 17:33, , 3F
06/06 17:33, 3F
→
06/06 17:33, , 4F
06/06 17:33, 4F
→
06/06 17:34, , 5F
06/06 17:34, 5F
→
06/06 17:35, , 6F
06/06 17:35, 6F
把float拆成char[4]
傳4個char就是你要的效果了阿
※ 編輯: chuegou (36.230.107.225), 06/06/2016 17:40:53
→
06/06 17:49, , 7F
06/06 17:49, 7F
→
06/06 17:50, , 8F
06/06 17:50, 8F
→
06/06 17:50, , 9F
06/06 17:50, 9F
推
06/06 17:53, , 10F
06/06 17:53, 10F
對...
wx你有點誤會這個union的用法
union DataSpace
{
unsigned char Quarter[4];
float Full;
}Float_Data;
你要傳3
Float_Data.Full = (float)3;
然後把 Float_Data.Quarter[0]
Float_Data.Quarter[1]
Float_Data.Quarter[2]
Float_Data.Quarter[3]
傳到接收端
接收端再把4個組合起來
這4個資料看起來會是
0x40
0x40
0x00
0x00
組合起來是
0x40400000
以float格式來說
就是3.00000
就是你要傳的3
所以不管你數字是多少都是固定大小喔
※ 編輯: chuegou (36.230.107.225), 06/06/2016 18:11:16
→
06/06 18:45, , 11F
06/06 18:45, 11F
→
06/06 19:20, , 12F
06/06 19:20, 12F
→
06/06 19:21, , 13F
06/06 19:21, 13F
→
06/06 19:25, , 14F
06/06 19:25, 14F
→
06/06 19:26, , 15F
06/06 19:26, 15F
→
06/06 19:27, , 16F
06/06 19:27, 16F
→
06/06 19:27, , 17F
06/06 19:27, 17F
→
06/06 19:29, , 18F
06/06 19:29, 18F
→
06/06 19:31, , 19F
06/06 19:31, 19F
理解了
現在問題是發送端沒辦法做到float拆成char[4]
他不會辨識char以外的格式
對吧?
※ 編輯: chuegou (36.230.107.225), 06/06/2016 19:35:32
→
06/06 19:32, , 20F
06/06 19:32, 20F
→
06/06 19:33, , 21F
06/06 19:33, 21F
→
06/06 19:33, , 22F
06/06 19:33, 22F
→
06/06 19:37, , 23F
06/06 19:37, 23F
→
06/06 19:49, , 24F
06/06 19:49, 24F
→
06/06 19:49, , 25F
06/06 19:49, 25F
推
06/08 01:26, , 26F
06/08 01:26, 26F
→
06/08 01:28, , 27F
06/08 01:28, 27F
→
06/08 17:30, , 28F
06/08 17:30, 28F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 5 篇):