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");
}
// 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달러이다.
원문주소
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();
}
}
피드 구독하기:
덧글 (Atom)