2017年7月31日 星期一

「Arduino」Digital HIGH /LOW 定義

HIGH: a voltage greater than 3.0V is present at the pin (5V boards);

Low:  voltage less than 1.5V is present at the pin (5V boards);


導電度轉鹽度

導電度轉換成鹽度的計算方式如下:

首先取得導電度,並將單位轉換成uS/cm

鹽度計算方式如下:






最總計算出來的鹽度為30.855。

請注意,鹽度跟溫度的關連是很明顯的。

參考來源:





2017年7月3日 星期一

[Android] 省電模式偵測

這個方法不適合用在API 21 以下,那時沒有統一的省電模式API,各廠家大顯神通。

public boolean isPowerSaveMode()
    {

        PowerManager powerManager = (PowerManager)
        mContext.getSystemService(Context.POWER_SERVICE);
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
                && powerManager.isPowerSaveMode())
        {
            return true;
        }
        else
        {
            return false;
        }
    }


資料來源:
How to check if Android Lollipop battery saver is onhttps://stackoverflow.com/questions/31896826/how-to-check-if-android-lollipop-battery-saver-is-on

「技術的原理,」mDNS

最近遇到一個問題,7688為什麼可以mylinkit.local 就連上呢,而不用先知道IP。

週邊有一些Device,也是用類似的方法,網域都是xxxx.local  。 

研究了一下,發現原來有一個東西叫做mDNS (Multicast DNS )。

一般我們在一個WiFi的區網內,需要先探知對方的IP,才能夠和對方進行溝通,

不然就必須使用broadcast  或是  Multicast 的方式,使對方收到封包後主動回應。


以下是mDNS的簡介

mDNS協議適用於區域網內沒有DNS伺服器時的域名解析,設備間通過群播(Multicast)

的方式交互DNS記錄來完成域名解析,約定的組播地址是:224.0.0.251,

埠號是5353,mdns協議使用DNS協議一樣的封包格式。

mDNS協議和DNS協議還有些不同,mDNS只能用於區域網內部,並且它只接受

解析主機名前綴為.local的域名
,因此mDNS也是可以和DNS在同一台設備上共存的,

以及它們存儲記錄的區域是分開的。

windows和android預設是不支援mDNS的,windows額外安裝軟體才能支援,

Android暫時還沒頭緒,找到再和大家分享。

參考來源:

區域網設備發現之Bonjour協議
https://kknews.cc/zh-tw/tech/o4ybmm.html
Multicast DNS
http://www.ietf.org/rfc/rfc6762.txt