https://yq.aliyun.com/users/article?spm=a2c4e.11155435.0.0.34723312MRbahT
先把源碼和資料連結放到這裡
連結:
https://pan.baidu.com/s/10MxI8-Q33-M_R2WEHqEi1A密碼:j1sz
先說一下那天的bug
所有的任務在啟動時都是建立

否則就會有問題
但是每次建立可能會産生有好幾個同樣的任務
列如上面的連接配接任務
咱們用一個全局的變量去記錄咱的連接配接任務
try {
mthreadConnectService.interrupt();
} catch (Exception e) {
}
發送資料的任務也是用一個全局變亮記錄
出現問題需要銷毀的時候
因為有好幾個地方要添加這幾句話,本來想.....算了,後期再說
現在做顯示部分,先給自己說一下,,,,下一篇一定要用Handle,如果還是這樣寫..都感覺無人子弟....唉......寫的有點害怕了,,,,應該先介紹
通常怎麼操作控件的....這樣操作控件懂行的人不知道會不會....唉
現在界面再拖一個TextView用來顯示溫濕度資料
再看一下規定的
然後其實就是在接收資料裡面
/**
* 接收資料的任務
* @author yang
*
*/
class ThreadReadData extends Thread
{
public void run()
{
while (threadReadDataFlage)
{
try
{
ReadBufferLengh = inputStream.read(ReadBuffer);//伺服器斷開會傳回-1
if (ReadBufferLengh == -1)
{
threadSendDataFlage = false;//關掉發送任務,預防産生多的任務
threadReadDataFlage = false;//關掉接收任務,預防産生多的任務
try {mthreadReadData.interrupt();} catch (Exception e) {}
try {mthreadSendData.interrupt();} catch (Exception e) {}
SendDataCnt = 0;//清零發送的個數
ConnectFlage = true;
buttonConnect.post(new Runnable() {
@Override
public void run() {
buttonConnect.setText("連接配接");
Toast.makeText(getApplicationContext(), "與伺服器斷開連接配接", 500).show();
}
});
}
try //防止資料有其它錯誤
{
if ((ReadBuffer[0]&0xff) == 0xaa && (ReadBuffer[1]&0xff) == 0x55)
{
if ((ReadBuffer[2]&0xff) == 0x01) {
textViewShowData.post(new Runnable() {//稍微寫一個靠譜點的操作UI控件
public void run() {
textViewShowData.setText("溫度:"+(ReadBuffer[3]&0xff)+"濕度"+(ReadBuffer[4]&0xff));
}
});
}
}
} catch (Exception e) {
// TODO: handle exception
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
Log.e("error", ReadBufferLengh+"");
e.printStackTrace();
runOnUiThread(new Runnable() {//修改界面的UI最好用Handle,這裡力求簡單,下幾節再用
public void run() {
buttonConnect.setText("連接配接");
Toast.makeText(getApplicationContext(), "與伺服器斷開連接配接", 500).show();
}
});
ConnectFlage = true;
threadSendDataFlage = false;//關掉發送任務,預防産生多的任務
threadReadDataFlage = false;//關掉接收任務,預防産生多的任務
try {mthreadReadData.interrupt();} catch (Exception e1) {}
try {mthreadSendData.interrupt();} catch (Exception e2) {}
SendDataCnt = 0;//清零發送的個數
}
}
}
}
其實就一點有用的,其餘的大多數是重複的程式,下一篇優化一下....
現在咱先用調試助手測試
APP可在百度手機助手,安卓市場,91助手,下載下傳安裝(搜尋"小五物聯")
我是用的兩個手機哈,因為我做的那個調試助手,一關閉就會全都關閉了,,後期再優化下哈,,,,
親們可以用電腦的調試助手,資料裡面有
好現在咱們用闆子試一下
不對不對...咱是做的先發給闆子指令然後闆子收到指令再回複.....忘了,現在做每隔1S發送一次0xaa,0x55,0x01
這樣闆子收到資訊就回咱
實作定時器呢有多種實作方法,說一種最簡單的
/**
* 每間隔1S發送一次采集資料的指令
*/
private CountDownTimer editDeleteTimer = new CountDownTimer(1000,100) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish()
{
SendBuffer[0] = (byte) 0xaa;
SendBuffer[1] = 0x55;
SendBuffer[2] = 0x01;
SendDataCnt = 3;//控制發送資料的個數
editDeleteTimer.start();
}
};
啟動和停止呢
現在試一下
闆子上電正常運作哈...
剛才闆子放在了我電腦的散熱口附近,是以才會30度哈,我沒有在非洲和赤道哈....,,電腦兩天沒有關機了,,有點小熱.....
現在控制一下燈
下一篇一定要優化程式,不能這樣子了,,,,,,額嗯,做TCP服務的時候再優化也行,重新寫一切按照正常寫
單片機程式還是上一篇的...
對了
資料&0xff
參考連結
https://blog.csdn.net/wwzuizz/article/details/77649358親們自己百度哈