2014年11月27日 星期四

Nexus 刷機教學(指令模式)

Download Tools:
1. USB Driver or PdaNet
 http://developer.android.com/sdk/win-usb.html --> Click here to download the latest Google USB Driver ZIP file.
 http://pdanet.co/a/

2. Android SDK(For adb.exe and fastboot.exe)
 http://developer.android.com/sdk/index.html#download --> VIEW ALL DOWNLOADS AND SIZES

- Extract and run "SDK Manager.exe"
- Select
 Tools -> Android SDK Tools, Android SDK Platform-tools
 Tools -> Android SDK Platform-tools

P.S. You also can download "Nexus Root Toolkit" or "Unified Android Toolkit", adb.exe and fastboot.exe are in the package.

3. Recovery(For flash App or Mod)
 Touch Recovery: http://teamw.in/
 clockworkmod: https://www.clockworkmod.com/rommanager

4. Root
 SuperSU: http://forum.xda-developers.com/apps/supersu
 SuperUser: http://androidsu.com/superuser/

5. Google Factory Image
 https://developers.google.com/android/nexus/images


Start flash image:
1. 備份

2. 確認driver安裝沒問題
 Android畫面下(打開Debug),執行adb.exe devices-->確認有認到裝置
 Fastboot畫面下,執行fastboot.exe devices-->確認有認到裝置

3. Unlock手機
 手機先進入fastboot
 執行: fastboot.exe oem unlock-->動音量鍵-->上下-->電源鍵(參考下面文章)
 http://www.droid-life.com/2013/11/04/how-to-unlock-the-nexus-5-bootloader/

4. 刷入官方Rom
 把抓下來的Factory image解壓縮,會有下面三個檔案
 "image-xxxx-yyyy.zip", "radio-xxxx-aaaa-bbbb.img", "bootloader-xxxx-cccc.img"
 (xxxx:手機型號, yyyy:版本號)

 執行下面指令刷入Rom(可以參考xxx.bat,裡面的指令)
 fastboot flash bootloader bootloader-xxxx-cccc.img(flash bootloader)
 fastboot reboot-bootloader
 fastboot flash radio radio-xxxx-aaaa-bbbb.img (flash radio)
 fastboot reboot-bootloader
 fastboot update image-xxxx-yyyy.zip (flash system rom)


4-1.
 Need wipe data?
1. Turn off your phone.
2. Press and hold both Volume Down + Volume Up (or ONLY VOL down) key(s) and turn ON Nexus 5 by pressing POWER. You will see the word Start with an arrow drawn around it.
3. Press Volume Down twice to highlight Recovery mode.
4. Press Power to get into Recovery mode. You should see an Android robot with a red exclamation mark.
5. While holding down Power, press Volume Up.
6. Use the volume down or up keys to scroll to "wipe data/factory reset" and press Power to select it.
7. Scroll down to "Yes - erase all user data" and press Power to select it. All data will be deleted!
If not working repeat the steps above.

5. 刷完官方Rom重開機,把SuperSU, OEM rom,複製進手機。

6. 進fastboot模式,刷入Recovery(xxxx.img: 下載下來的Rom)
 fastboot.exe flash recovery xxxx.img

7. 進入Recovery
 把Wipe data / factory、catch,install root rom

8. Relock手機(方法同2, 指令改成)
 fastboot oem lock


參考文章:
http://www.teamandroid.com/2012/07/30/how-to-set-up-adb-fastboot-with-android-sdk/
How to Unlock Bootloader, Install Custom Recovery and Root
Galaxy Nexus
Nexus 5

2014年11月11日 星期二

Macro lens(微距鏡頭)

什麼是Macro lens(微距鏡頭):成像比例大於1:1 ~ 1:4即稱為Macro微距攝影。

顯微攝影:10:1 ~ 200:1則屬顯微攝影。 

P.S. 1:1 -> CCD大小:物體實際大小(鏡頭節點到交平面距離:物體到交平面距離)
P.S. 0.2x -> 物體到CCD的是放大幾倍(0.2x就是說物體如果是1 x 1投影到ccd的大小就是0.2 x 0.2)

 參考文章: 什麼是Macro微距鏡頭?Macro微距鏡頭有哪些用途? 微距 (MARCO) 鏡頭拍起來到底有多大?? 到底你有需要買到微距鏡嗎? 不專業測試.

2014年8月27日 星期三

2014年6月29日 星期日

fscanf, fscanf_s

scanf(), scanf_s()會將輸入的數據根據參數format字符串來轉換並格式化數據。

Scanf() 格式轉換如下
%[*][size][l][h]type

中括號括起來的參數為選擇性參數,而%與type則是必要的。

*代表該對應的參數數據忽略不保存。
size 為允許參數輸入的數據長度。
l 輸入的數據數值以long int 或double型保存。
h 輸入的數據數值以short int 型保存。

type的幾種形式
%d 輸入的數據會被轉成一有符號的十進制數字(int)。
%i 輸入的數據會被轉成一有符號的十進制數字,若輸入數據以「0x」或「0X」開頭代表轉換十六進制數字,若以「0」開頭則轉換八進制數字,其他情況代表十進制。
%0 輸入的數據會被轉換成一無符號的八進制數字。
%u 輸入的數據會被轉換成一無符號的正整數。
%x 輸入的數據為無符號的十六進制數字,轉換後存於unsigned int型變量。
%X 同%x
%f 輸入的數據為有符號的浮點型數,轉換後存於float型變量。
%e 同%f
%E 同%f
%g 同%f
%s 輸入數據為以空格字符為終止的字符串。
%c 輸入數據為單一字符。
[] 讀取數據但只允許括號內的字符。如[a-z]。
[^] 讀取數據但不允許中括號的^符號後的字符出現,如[^0-9].

返回值
成功則返回參數數目,失敗則返回-1,錯誤原因存於errno中。

Sample:(一次讀一行)
fscanf_s(fp, "%[^\n]\n", &buffer, 20)

2014年3月31日 星期一

Focus 進入 Shipping mode!


進入Shipping Mode 方式如下:

1. 插入鑰匙
2. 踩住剎車
3. 鑰匙位置0 , 按下set 鍵(不要放約3-5秒)
4. 鑰匙轉到II 就可以看到Shipping Mode ( ON off v )
5. 再長按set鍵 切換到ON (再長按set鍵又會切到Off)


PS:
Shipping Mode時,
無法上鎖,鑰匙遙控不能用(只能用鑰匙)
儀錶板的燈會全部熄滅,含里程的LED 及警戒的紅色LED都不會亮

防盜系統也會一併關閉

Standard Numeric Format Strings


Standard Numeric Format Strings


自訂數值格式字串

2014年3月24日 星期一

Nexus 5 support frequency

North America (D820) Nexus 5 model:

GSM: 850/900/1800/1900 MHz

CDMA: Band Class: 0/1/10

WCDMA: Bands: 1/2/4/5/6/8/19

LTE: Bands: 1/2/4/5/17/19/25/26/41


Outside North America (D821) Nexus 5 model:

GSM: 850/900/1800/1900 MHz

WCDMA: Bands: 1/2/4/5/6/8

LTE: Bands: 1/3/5/7/8/20

台灣 4G(LTE) 頻段

(一) 700 MHz 頻段:(Band 28)
A1:上703~713MHz;下758 ~768MHz(亞太)      (上下各10MHz)
A2:上713~723MHz;下768 ~778MHz(遠傳)      (上下各10MHz)
A3:上723~733MHz;下778 ~788MHz(國基)(鴻海)  (上下各10MHz)
A4:上733~748MHz;下788 ~803MHz(台哥大)     (上下各15MHz)
(794-803MHz已有現存低功率射頻電機設備(低功率無線麥克風))

(二) 900 MHz 頻段:(Band 8)
B1:上885~895MHz;下930 ~940MHz(台灣之星)(頂新)(上下各10MHz)(2019/1/1有使用權)
B2:上895~905MHz;下940 ~950MHz(中華)      (上下各10MHz)(2017/7/1有使用權)
B3:上905~915MHz;下950 ~960MHz(國基)      (上下各10MHz)(2017/7/1有使用權)

(三) 1800 MHz 頻段:(Band 3)
C1:上行1710~1725MHz;下行1805 ~1820MHz(台哥大) (上下各15MHz)(2017/7/1有使用權)
C2:上行1725~1735MHz;下行1820 ~1830MHz(中華)  (上下各10MHz)(2017/7/1有使用權)
C3:上行1735~1745MHz;下行1830 ~1840MHz(遠傳)  (上下各10MHz)(2017/7/1有使用權)
C4:上行1745~1755MHz;下行1840 ~1850MHz(遠傳)  (上下各10MHz)(2017/7/1有使用權)
C5:上行1755~1770MHz;下行1850 ~1865MHz(中華)  (上下各15MHz)(最快2013年底可用)


參考網址:
台灣NCC頻段
UMTS bands

台灣證卷交易所

每日收盤行情
http://www.twse.com.tw/ch/trading/exchange/MI_INDEX/genpage/Report201403/A11220140324MS.php?select2=MS&chk_date=103/03/24


各股日成交資訊
http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY/STOCK_DAYMAIN.php

2014年3月9日 星期日

struct(C++/CLI)

public value struct Sname {
    Int32 aa;
};

private不能跨assembly,public才能跨assembly(預設為private)

value, ref 差異:value struct在stack,ref struct在heap
       一般來說,struct都很小,適合建在stack,速度較快。

Array (C++/CLI)


1D
array<int>^ a1 = {1,2,3,4,5};
array<int>^ a1 = gcnew array<int>(ARRAY_SIZE);

2D
array< int , 2 >^ local = gcnew array< int, 2 >(ARRAY_SIZE, ARRAY_SIZE);


Reference:

Declaration of a CLR Array
http://msdn.microsoft.com/en-us/library/ms235236%28VS.80%29.aspx

How to: Create Multidimension Arrays
http://msdn.microsoft.com/en-us/library/2xfh4c7d%28VS.80%29.aspx

宣告一個二維陣列
http://social.msdn.microsoft.com/Forums/zh-TW/215bb670-eee8-4bf1-adb2-824519902a26

2014年2月17日 星期一

ASCII <-> Unicode(CLI)

A sample code from msdn(Unicode to ASCII)

String^ unicodeString = "This string contains the unicode character Pi (\u03a0)";

// Create two different encodings.
Encoding^ ascii = Encoding::ASCII;
Encoding^ unicode = Encoding::Unicode;

// Convert the string into a byte array.
array<Byte>^unicodeBytes = unicode->GetBytes( unicodeString );

// Perform the conversion from one encoding to the other.
array<Byte>^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes );

// Convert the new Byte into[] a char and[] then into a string.
array<Char>^asciiChars = gcnew array<Char>(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length ));
ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 );
String^ asciiString = gcnew String( asciiChars );

// Display the strings created before and after the conversion.
Console::WriteLine( "Original String*: {0}", unicodeString );
Console::WriteLine( "Ascii converted String*: {0}", asciiString );


Please check the page:
http://msdn.microsoft.com/zh-tw/library/kdcak6ye%28v=vs.110%29.aspx

http://studio.wellwind.idv.tw/archives/197

2014年2月10日 星期一

C# (keyword: set, get, value)

set: A set accessor is used to assign a new value.(只是增加一些變數(pulbic)的方便性,asign時, 會跑進來)

get: A get property accessor is used to return the property value.(只是增加一些變數(pulbic)的方便性, 取值時, 會跑進來)

value: The value keyword is used to define the value being assigned by the set accessor.(即assign進來的值)


請看下面範例(來源:微軟官網, 如有侵權, 請來告知, 馬上刪除):
class TimePeriod
{
    private double seconds;

    public double Hours
    {
        get { return seconds / 3600; }
        set { seconds = value * 3600; }
    }
}


class Program
{
    static void Main()
    {
        TimePeriod t = new TimePeriod();

        // Assigning the Hours property causes the 'set' accessor to be called.
        t.Hours = 24;

        // Evaluating the Hours property causes the 'get' accessor to be called.
        System.Console.WriteLine("Time in hours: " + t.Hours);
    }
}
// Output: Time in hours: 24

------------------------------------------------------------
This is an example of a get accessor in an auto-implemented property

class TimePeriod2
{
    public double Hours { get; set; }
}

2014年1月21日 星期二

Astyle(程式語言排版工具)

官網:
http://astyle.sourceforge.net/

指令說明:
http://astyle.sourceforge.net/astyle.html

與Visual Studio整合:
    1. Visual Studio->Tools->External Tools->Add
    2. Add:
        Title: AStyle
        Command: C:\Program Files\AStyle\bin\AStyle.exe #執行檔位置
        Arguments: --style=linux -T -xl -C -S -N -L -Y -p -U -y -n $(ItemFileName)$(ItemExt) #請參考指令說明
        Initial directory: $(ItemDir)
    3. OK:
    4. Add shortcut:
        a: Click right button of mouse in toolbar->Customize
        b: Tools->drag "external commandx" to toolbar
        P.S. x is the order of your command.

參考網站:
http://infiniteengine.blogspot.tw/2011/08/artistic-style.html
http://blog.csdn.net/xiaotao2004/article/details/1560538

指令參考:
--style=linux / --style=knf / -A8

--indent=force-tab / -T

--attach-inlines / -xl

--indent-classes / -C
--indent-switches / -S
--indent-namespaces / -N
--indent-labels / -L
--indent-col1-comments / -Y

--pad-oper / -p
--unpad-paren / -U

//--align-pointer=type / -k1
//--align-reference=type / -W1

--break-closing-brackets / -y

--suffix=none / -n    不產生備份檔.orig

--style=linux -T -xl -C -S -N -L -Y -p -U -y -n $(ItemFileName)$(ItemExt)

2014年1月20日 星期一

C++/CLI download a webpage

Please check the under link:
http://www.digitalcoding.com/Code-Snippets/CPP-CLI/C-CLI-Code-Snippet-Download-HTML-Web-Page.html

http://stackoverflow.com/questions/7523013/c-cli-url-download-to-file

Get correct encoding:
http://stackoverflow.com/questions/227575/encoding-problem-with-httpwebresponse

C++/CLI call MessageBox(Unmanaged)

using namespace System;
using namespace System::Runtime::InteropServices;

//typedef void* HWND;
[DllImport("User32.dll", EntryPoint = "FindWindow")]
extern "C" Int32 SW32Api_FindWindow (String^ lpClassName,String^ lpWindowName);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
extern "C" Int32 SW32Api_SendMessage(Int32 hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
[DllImport("User32.dll", EntryPoint = "MessageBox", CharSet=CharSet::Auto)]
extern "C" Int32 SW32Api_MessageBox(Int32 hwnd, String^ Contain, String^ caption, UInt32 type);