→ wxtab019: 目前是去找一些手機app 像bluetooth terminal 來用 06/06 17:31
→ wxtab019: 用手機傳 這個感覺是傳ASCII碼的 所以才又做處理 06/06 17:32
→ wxtab019: 本來用RS232傳是直接傳float數值 可是HC-06是傳char 06/06 17:33
→ wxtab019: float可以傳小數 一長串數字 不過char 1個就只能存1個 06/06 17:33
→ wxtab019: 所以現在才在想怎麼弄 謝謝你的回答 06/06 17:34
→ wxtab019: 最後還是希望能轉回float 不是char或str 06/06 17:35
把float拆成char[4]
傳4個char就是你要的效果了阿
※ 編輯: chuegou (36.230.107.225), 06/06/2016 17:40:53
→ wxtab019: 是這樣沒錯 只是有時候像只傳 2 就只有1個char 06/06 17:49
→ wxtab019: 或是要傳12345 12.34之類的 就超過4個char了 06/06 17:50
→ wxtab019: 直接用float傳沒這問題 用char傳就不知道空的或多的怎麼 06/06 17:50
推 IKAFIRE: 我想你誤會用char傳的意思了 06/06 17:53
對...
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
→ chuegou: 慘...我現在覺得我還沒完全理解原PO的問題(苦笑) 06/06 18:45
→ wxtab019: 因為目前是要傳的值存在Quarter[0] Quarter[1]...[2][3] 06/06 19:20
→ wxtab019: 只是例如傳3的話 他就只存在Quarter[0] 後面就沒東西 06/06 19:21
→ wxtab019: 像我在手機輸入3(ASCII) 從藍芽傳到HC-06 再傳到晶片 06/06 19:25
→ wxtab019: 因為HC-06一次傳只傳1個char 8bits 所以只會存在[0] 06/06 19:26
→ wxtab019: 設中斷flag接收到4個char中斷一次的話 只收到一個就還不 06/06 19:27
→ wxtab019: 會中斷 所以會還沒辦法收到值 06/06 19:27
→ wxtab019: 目前大概先暫時放下這邊了...之後弄懂怎麼用再繼續 謝謝 06/06 19:29
→ wxtab019: 這幾天都在弄這個 一開始不知道藍芽的傳輸資料型態 06/06 19:31
理解了
現在問題是發送端沒辦法做到float拆成char[4]
他不會辨識char以外的格式
對吧?
※ 編輯: chuegou (36.230.107.225), 06/06/2016 19:35:32
→ wxtab019: 一直抓不到資料 還要去找baudrate設定 06/06 19:32
→ wxtab019: 然後突然抓的到資料 可是是錯的 才發現是ASCII 用char傳 06/06 19:33
→ wxtab019: 以後不懂的東西還是不要這樣趕工好了... 06/06 19:33
→ wxtab019: 發送端目前試是只能送char而已 本來用RS232的話可以 06/06 19:37
→ wxtab019: 要找到懂C又懂dsPIC 還懂藍芽傳輸+通訊協定 串列式傳輸 06/06 19:49
→ wxtab019: 等等的 好像也不太容易阿XD 06/06 19:49
推 ogisun: 系列文有一篇指標是普遍的拆法 不然就自己寫IEE754轉換 06/08 01:26
→ ogisun: 所以wxtab的問題是3沒辦法拆成40 40 00 00這樣嗎? 06/08 01:28
→ wxtab019: 雖然可能因為是我用的app關係 只是去google找一些來用 06/08 17:30