2011年5月31日 星期二

雙波瓣載波抑制(DSB-SC)之光學平衡偵測器








DSB-SC可以有效利用電磁波的能量, 而利用三條雷射光束的互相干涉, 以及光束的偏極態調整, 亦可以達到DSB-SC的效果, 除此之外, 還可達成降低背景雜訊, 雷射光的微小能量波動雜訊的要求, 使得光學偵測可以接近量子限制(Quantum-limited)的目標.


















2011年5月25日 星期三

2011年5月22日 星期日

如何在 32 位元的環境編譯 Android 2.3

如果從 AOSP 網站下載 Android 2.3 後的版本,會發現編譯時似乎需要在 64 位元的環境。那麼如果已有現成的 32 位元環境,該如何編譯 Android 2.3 呢?

此時只要改動幾個 makefile 就好了。

首先,在 build/core/main.mk 找到這行:

ifneq (64,$(findstring 64,$(build_arch)))

將它改成:

ifneq (i686,$(findstring i686,$(build_arch)))

然後,分別找到以下數個 makefile,然後找到 -m64 這個,並改成 -m32

1. external/wpa_supplicant_6/wpa_supplicant/Android.mk

2. external/clearsilver/java-jni/Android.mk

3. external/clearsilver/cs/Android.mk

4. external/clearsilver/cgi/Android.mk

5. external/clearsilver/util/Android.mk

搞定,收工。

Google I/O 2011: Android Open Accessory API and Development Kit (ADK)

網路上看到兩個Demo....



IOIO(讀"YoYo")是專為Android所設計的開發板。

2011年5月18日 星期三

Java Native Interface (JNI) 的使用時機及影響

JNI的使用時機及影響

上篇的實作後,整理一下JNI的使用時機及影響:

什麼時機下應該使用JNI
下面提出幾個項目避免使用JNI:
1、JAVA程式和本地程式使用TCP/IP或者IPC。
2、當用JAVA程式連接本地資料庫時,使用JDBC提供的API。
3、JAVA程式可以使用分散式物件技術,如JAVA IDL API。
上述三項共同點是JAVA和C 處於不同的執行緒,或者不同的機器上。這樣當C程式部分異常時,會影響到JAVA程式。

接著那何時需要使用JNI呢? 下列情況是在同一進程內無法避免JNI的使用:
1、程式當中使用到了JAVA API 沒有提供的特殊系統環境加上使用跨進程操無法不現實情況下,如與硬體進行通訊時。
2、想使用一些已經有的本地庫(native library),但又不想付出跨進程調用時的延宕(overhead),如效率,記憶體,資料傳遞方面。
3、JAVA程式當中的一部分代碼對效率要求非常高,如演算法計算,繪圖等。
總之,只有當你必須在同一進程中調用本地代碼(nativecode)時,建議使用JNI。

JNI的副作用:
1、程式失去跨平臺。如想跨平臺在不同的系統環境下須重新編譯C語言部分。
2、影響程式的穩定,本地代碼的不當使用可能導致整個程式損壞或當掉。
通用規則是應該讓本地方法集中在少數幾個類(class)中,減少JAVA和C之間的通訊。

以上詳細內容出至The Java™ Native Interface Programmer's Guide and Specification;請參閱:
1.3 Implications of Using the JNI
1.4 When to Use the JNI