5/29/2013

Serial Port (RS232C) WaitCommEvent Timeout Method.


linux - use select time out check.

win32 - use overlapped method. 

Open Serial Port Option by Overlapped.

HANDLE SPortHandle=
CreateFile (.. .. FILE_FLAG_OVERLAPPED | FILE_ATTRIBUTE_NORMAL,NULL);

//
// check serial port data
//
int isindataserialport(Cport , msec )
{
    int ret=1; // true , false;
    DWORD fdwCommMask;
    SetCommMask (Cport,/*EV_CTS | EV_DSR| */ EV_RXCHAR);
    #ifdef _WIN32_WCE
        WaitCommEvent (Cport, &fdwCommMask, 0);
    #else
        OVERLAPPED OverLapped;
        memset ((char *)&OverLapped, 0, sizeof(OVERLAPPED));
        OverLapped.hEvent = CreateEvent (NULL, TRUE, TRUE, 0);
        if (!WaitCommEvent (Cport, &fdwCommMask, &OverLapped))
       {
            if (GetLastError() == ERROR_IO_PENDING)
            {
                if(WaitForSingleObject (OverLapped.hEvent,(DWORD) msec) != WAIT_OBJECT_0)
                {
                     ret=0;
                }
            }
        }
        CloseHandle(OverLapped.hEvent);
    #endif

    if((fdwCommMask & EV_RXCHAR) != EV_RXCHAR)
   {
        ret=0;
    }
    return ret;
}



gain root permission android

//
// method 1
//

Process p; 
try {
   p = Runtime.getRuntime().exec("su"); 

   DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
   os.writeBytes("echo \"root?\" >/data/temporary.txt\n");


   os.writeBytes("exit\n"); 
   os.flush(); 
   try { 
      p.waitFor(); 
           if (p.exitValue() != 255) { 
              // TODO Code to run on success 
              toastMessage("root"); 
           } 
           else { 
               // TODO Code to run on unsuccessful 
               toastMessage("not root"); 
           } 
   } catch (InterruptedException e) { 
      // TODO Code to run in interrupted exception 
       toastMessage("not root"); 
   } 
} catch (IOException e) { 
   // TODO Code to run in input/output exception 
    toastMessage("not root"); 

5/25/2013

Android get Device ID & MAC address




-- getDeviceID()
TelephonyManager

public String getDeviceId ()

Return null if device ID is not available.
Requires Permission: READ_PHONE_STATE

-- MAC address

permission.

"android.permission.INTERNET">
"android.permission.ACCESS_NETWORK_STATE">
 
ConnectivityManager manager =
    (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

 

NetworkInfo ni = manager.getActiveNetworkInfo();
String netname = ni.getTypeName();
if (netname.equals("MOBILE")) {
    Log.d(TAG, "Network - > " + netname);
}else{
    Log.d(TAG, "Network - > " + netname);
}

WifiInfo wifiInfo = mWifiMgr.getConnectionInfo();
Log.d(TAG,"MAC:"+wifiInfo.getMacAddress());


5/24/2013

진격의 커피잔

ㅋㅋ

 

세숫대야 커피 잔 등장 ‘시선 집중’



직장인 남성을 위한 제품들을 판매하는 미국의 한 인터넷 쇼핑몰에 커다란 커피잔이 등장해 화제다.

세숫대야 커피 잔이라도 불러도 될 이 골리앗 커피 잔은 지름이 25cm이고 무게는 4.5kg 가량이다. 보통 커피 잔의 20배 용량이라고 하니 커피를 채우고 들고 있으면 이두박근이 금방 아플 것이다.

판매 사이트에서는 이 골리앗 커피 잔이 어떤 커피 중독자도 만족시킬 것이라고 자신한다. 또 고객 앞에 내놓으면 큰 웃음을 터뜨리게 한다고. 해외 네티즌 중 커피를 좋아하는 이들의 도전욕구를 자극하는 세숫대야 커피 잔은 가격이 40달러이다.
원문주소
http://news.naver.com/main/read.nhn?mid=hot&sid1=104&cid=845614&iid=22043897&oid=105&aid=0000019869

5/22/2013

prevent duplication message Toast dialog android

Android에서 Toast를 사용할 때, 메시지 중복 지속되는 경우 방지.
  
Toast 변수를 선언한다. 
 
 
public static Toast mToast;
 
 onCreate() 또는 적절한 함수에서  1회 초기화한다. Toast.makeText()
{ 
    ...
    mToast = Toast.makeText(this, "null", Toast.LENGTH_SHORT); 
    ...
}
 
 
mToast 사용.
Func()
{
    mToast.setText(show this text); 
    mToast.show(); 
}
 
 
// 다른 클래스 ..모듈등에서 사용하기 편하게 유틸리티 클래스 생성후 사용해도 무방하다.
 

class appGlobalUtil 
{ 
    public static Toast mToast; 
 
    public  toast_message(  message)
    {
        mToast.setText(message); 
        mToast.show(); 
    }

 
}