2015-12-23 22 views
0

我想從服務發送浮動值到我的用戶界面(小精度 - 兩位數只有像1204,74)。現在我想把這個float作爲字符串,因爲我只想顯示它,但後來我會用這個float作爲數字。使用處理程序發送浮動值

服務

... 
int A = Integer.parseInt(listBytesAnsw.get(2), 16); 
int B = Integer.parseInt(listBytesAnsw.get(3), 16); 
float rpm = (A*255+B)/4; 
msgBuffer = ByteBuffer.allocate(4).putFloat(rpm).array(); 
mHandler.obtainMessage(Constants.RPM, msgBuffer.length,-1, msgBuffer).sendToTarget(); 
addToQueue("01 0C"); 
... 

UI

switch (msg.what) { 
... 
case Constants.RPM: 
byte[] readRpmBuf = (byte[]) msg.obj; 
String rpm = new String (readRpmBuf,0,msg.arg1); 
mConversationArrayAdapter.add(mConnectedDeviceName + ": " + rpm); 
break; 
... 

我沒有得到從浮動的服務,但只有隨機的跡象。有什麼不對,但我不知道是什麼。我很少使用字節數組,所以我不太瞭解它。

+1

ByteBuffer!= String – njzk2

回答

1

在服務:

var DataToSend = Convert.ToString(rpm); 

發送數據的服務爲一個字符串,然後將其轉換回在UI的浮動。

然後可以使用str.ToCharArray()

這是很多需要數據轉換爲低量,並從一個字符串返回服務的一個很好的做法。

+0

我做了這樣的事情'String sRpm = Float.toString(rpm);在UI中,mHandler.obtainMessage(Constants.RPM,sRpm).sendToTarget();'in Service和'String rpm =(String)msg.obj;'。它的作品,但我得到圓整的結果。 – GarryMoveOut

+0

AH。在服務時間(*)之前,將浮點數乘以100(或者需要多個精度點)。然後在用戶界面中,將其轉換回浮動後,將它除以相同的數量(100)。 –

+0

Gary,如果一切正常,請標記答案,如果您仍然看到意外的行爲,請回復。 –

相關問題