實現的功能
Android TCP客戶端連接8266的TCP服務器,網絡控制開發板繼電器
1.控制繼電器吸合
2.控制繼電器斷開
前言
1.用戶在看這一節之前請先學習
https://www.cnblogs.com/yangfengwu/p/12543923.html Android TCP客戶端
https://www.cnblogs.com/yangfengwu/p/12543847.html 8266 TCP服務器
2.控制繼電器引腳
協議規定
Android TCP客戶端發送給ESP8266TCP服務器控制繼電器吸合指令:
0xaa 0x55 0x01 0x01
ESP8266執行以后回復給C#TCP客戶端:
0x55 0xaa 0x01 0x01
Android TCP客戶端發送給ESP8266TCP服務器控制繼電器斷開指令:
0xaa 0x55 0x01 0x00
ESP8266執行以后回復給C#TCP客戶端:
0x55 0xaa 0x01 0x00
ESP8266程序編寫
1.處理程序在這節的基礎上修改添加
https://www.cnblogs.com/yangfengwu/p/12543847.html
2.配置GPIO5為普通引腳
/*設置GPIO5為普通引腳*/ PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO5_U , FUNC_GPIO5);
3.定義用於返回繼電器狀態的數組
/*用於返回繼電器的狀態*/ u8 RelayOn[4]={0x55,0xaa,0x01,0x01};//繼電器吸合 u8 RelayOff[4]={0x55,0xaa,0x01,0x00};//繼電器斷開
4.編寫TCP接收處理程序
if(length>= 4 && pusrdata[0] == 0xaa && pusrdata[1] == 0x55){ if(pusrdata[2] == 0x01){ if(pusrdata[3] == 0x01){ GPIO_OUTPUT_SET(5, 1);//設置GPIO5輸出高電平 espconn_send(TCPSendDate,RelayOn,4); } else if(pusrdata[3] == 0x00){ GPIO_OUTPUT_SET(5, 0);//設置GPIO5輸出低電平 espconn_send(TCPSendDate,RelayOff,4); } } }
5.先用 TCP調試助手測試(手機連接Wi-Fi模塊的無線)
Android APP程序編寫
1.處理程序在這節的基礎上修改添加
https://www.cnblogs.com/yangfengwu/p/12543923.html
2.頁面修改如下:
頁面用了一個ImageButton
ImageButton imageButtonControl; imageButtonControl = findViewById(R.id.imageButtonControl); imageButtonControl.setTag(false);//默認是關閉
3.點擊按鈕發送相應的數據,同時切換圖片
imageButtonControl.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final byte[] bytes = new byte[4]; bytes[0] = (byte) 0xaa; bytes[1] = (byte) 0x55; bytes[2] = (byte) 0x01; if ((boolean) (imageButtonControl.getTag()) == false) { imageButtonControl.setImageResource(R.mipmap.switch_button_on);//吸合圖片 imageButtonControl.setTag(true); bytes[3] = 0x01; } else { imageButtonControl.setImageResource(R.mipmap.switch_button_off);//斷開圖片 imageButtonControl.setTag(false); bytes[3] = 0x00; } new Thread(new Runnable() { @Override public void run() { try{ outputStream.write(bytes,0,4);//發送數據 }catch (Exception e){} } }).start(); } });
4.處理8266返回的數據
//提示byte范圍是-127 -- 127 &0xFF以后便自動轉為int型 if ( msg.arg1>=4 && Buffer[0] == 0x55 && (Buffer[1]&0xff) == 0xaa ) { if (Buffer[2] == 0x01) { if (Buffer[3] == 0x01)//繼電器吸合 { textViewState.setText("吸合"); imageButtonControl.setImageResource(R.mipmap.switch_button_on);//吸合圖片 imageButtonControl.setTag(true); } else if (Buffer[3] == 0x00)//繼電器斷開 { textViewState.setText("斷開"); imageButtonControl.setImageResource(R.mipmap.switch_button_off);//斷開圖片 imageButtonControl.setTag(false); } } }
測試
請使用手機APP連接Wi-Fi模塊
IP地址:192.168.4.1 端口號:8080
1.控制繼電器吸合
2.控制繼電器斷開