導航:首頁 > 操作系統 > android發送字元串

android發送字元串

發布時間:2025-01-15 22:57:28

android 藍牙如何發送十六進制數據

與藍牙模塊通信最重要的地方就是數據的發送和接收,因為是底層的操作,所以更多是發送16進制數據。
進制轉換是我們程序員的必修課,屬於基本素質。這里需要的是將位元組數組轉化為16進制字元串,方法都是通用的:

[java] view plain
public static String bytesToHexString(byte[] bytes) {
String result = "";
for (int i = 0; i < bytes.length; i++) {
String hexString = Integer.toHexString(bytes[i] & 0xFF);
if (hexString.length() == 1) {
hexString = '0' + hexString;
}
result += hexString.toUpperCase();
}
return result;
}

接下來就是發送數據。
發送數據非常簡單,之前有關於藍牙編程的博文已經講到了,http://www.cnblogs.com/wenjiang/p/3200138.html,這里只講重要的一點:大容量位元組數組的發送。
我們需要發送64個位元組的數組,如果一次性發送過去,單片機那裡可能無法及時處理以致沒有任何回應,因為單片機那裡是設置了數據接收的延時時間。要想暢通的與藍牙模塊通信,考慮這個時間差非常重要。調整位元組的發送速率,就成為非常關鍵的一步。值得注意的是,數據的發送是非常快的,就是因為這樣才會導致單片機那裡無法及時處理,所以,每次發送後的延時是非常重要的。我們單片機那裡的延時是10毫秒,所以我們選擇發送完每個位元組後就延時10毫秒再發下個位元組。
[java] view plain
for (byte b : bytes) {
out.write(b);
Thread.sleep(10);
}

具體的延時時間和位元組發送速率得看單片機那裡程序的設置。
在使用InputStream的時候,必須注意,InputStream的讀取是阻塞的。這點在一般的情況下是不會影響到我們的程序,但是記住這個情況對於代碼的設計是非常重要的,尤其是在考慮用戶體驗的時候。
無參數的read()是每次只從流中讀取一個位元組,這種做法效率非常低,但是簡單,像是讀取整數值這種情況,使用read()就非常好,但如果是16進制字元串呢?使用InputStream.read(byte[] b)或者InputStream.read(byte[] b,int off,int len)方法,這樣一次就能讀取多個位元組。
如果是讀取多個位元組,我們常常使用InputStream.available()方法來獲取數據流中可讀位元組的個數。讀取本地數據的時候,該方法發揮得非常好,但如果是讀取非本地數據,就可能出現位元組遺漏的問題,像是要讀取100個位元組,可能就是90個,甚至是0個。
出現0個的情況就是單片機那邊沒有響應或者位元組還沒發送過來,這時我們就需要一個循環來保證我們能夠拿到數據:
[java] view plain
int count = 0;
while (count == 0) {
count = in.available();
}
byte[] bytes = new byte[count];
in.read(bytes);

但像是上面的90個位元組的情況就是位元組遺漏。對於這種情況,解決方法也很簡單:

[java] view plain
byte[] bytes = new byte[count];
int readCount = 0; // 已經成功讀取的位元組的個數
while (readCount < count) {
readCount += in.read(bytes, readCount, count - readCount);
}

閱讀全文

與android發送字元串相關的資料

熱點內容
頭部按摩器可以緩解壓力嗎 瀏覽:648
格式工廠壓縮圖片大小 瀏覽:889
程序員的黑科技視頻 瀏覽:294
加密欄位表格顯示 瀏覽:401
pdf列印缺字 瀏覽:515
安卓手機鎖住圖標用什麼app 瀏覽:288
程序員牧師 瀏覽:456
影音伺服器是什麼意思 瀏覽:856
安卓如何合入補丁 瀏覽:929
文件夾中的應用隱藏怎麼辦 瀏覽:468
伺服器如何調用全部cpu計算 瀏覽:84
如何搜索AppID 瀏覽:792
組裝電腦水冷解壓 瀏覽:280
珠海存儲伺服器地址怎麼找 瀏覽:416
md5演算法字元串長度 瀏覽:8
可以二次虛化的雲伺服器 瀏覽:783
思科2500編程器固件 瀏覽:239
php開發桌面應用程序 瀏覽:908
支付寶app哪裡可以加油 瀏覽:74
路由器ttl刷編程器固件 瀏覽:722