태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
 

 


 
 

옴니아(M490/5) LED 및 진동 ON OFF하기!!

Programming/T *Omnia | 2010/03/01 20:48 | Posted by 엉이엉이
노가다를 통해 알아본 id값~~~

옴니아2의 진동은 11인가 12인걸로 알고있어요~~ 전 옴냐1만있어서...

구글링으로 찾은 소스 좀 변경해봤어여~~~

//옴니아1에만 해당!!
//0밝은보라색
//1파랑
//2연두색
//3빨간색
//4연두색
//5파랑
//6빨강
//7파랑
//8밝은보라
//9진동


#include <nled.h>


extern "C" {
BOOL WINAPI NLedGetDeviceInfo( UINT nInfoId, void *pOutput );
BOOL WINAPI NLedSetDevice( UINT nDeviceId, void *pInput );
};

void LedSet(int id,int onoff)
{

NLED_SETTINGS_INFO settings;
settings.LedNum= id;
settings.OffOnBlink= onoff;
NLedSetDevice(NLED_SETTINGS_INFO_ID, &settings);

}

void VibSet(int onoff)
{
NLED_SETTINGS_INFO settings;
settings.LedNum= 9;//옴니아1 id 9 진동
settings.OffOnBlink= onoff;
NLedSetDevice(NLED_SETTINGS_INFO_ID, &settings);
}



//쓰는법~~~

//진동 On 
VibSet(1);

//진동 Off 
VibSet(0);

//5초진동
VibSet(1);
Sleep(5000);
VibSet(0);

//빨간색 led 300ms 동안 On
LedSet(3,1);//On
Sleep(300);
LedSet(3,0);//Off

질문은 댓글로~

글구 옴니아1에만 검증된거니 옴니아2에서 적용하면서..... 안된다고 하지마세용!!


저작자 표시 비영리 동일 조건 변경 허락

'Programming > T *Omnia' 카테고리의 다른 글

옴니아(M490/5) LED 및 진동 ON OFF하기!!  (2) 2010/03/01
PlaySound를 이용한 재생 및 정지 방법  (0) 2009/12/21
MessageBox 응답~  (0) 2009/12/08
SetCapture  (0) 2009/12/08
Thread~~  (0) 2009/12/08
MFC 버튼 다운 구현~  (0) 2009/12/08

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/125 관련글 쓰기

댓글을 달아 주세요

  1. 2010/04/20 10:34  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of http://smartiz.co.kr BlogIcon 엉이엉이 2010/04/20 13:52  댓글주소  수정/삭제

      흠 그건 잘모르겠네요^^;; 저건 자기가 개발한 어플에서 적용시키는거지 이미 만든어플을 변경시키는 용도가 아니랍니다^^;;

[C#]윈도우 모바일 SoftReset 방법~~~

Programming/C# | 2009/12/31 00:59 | Posted by 엉이엉이



예제소스설치파일

무설치 실행파일

예전에 찾아두고 자주 애용하는 소스인데...

MSDN 어디서 긁어왔는지 기억이 잘안나네요^^;;

간단히 제가 소스 이용해서 만들었습니다.

 실행파일하고 프로젝트 같이 첨부했습니다.

바로 빌드하시면대여~~

그냥 바로 긁어서 붙여놓고 함수 콜하면 바로 리셋됩니다.. 사용법알려드릴게요 ㅋ

 //==========soft reset
        public const uint FILE_DEVICE_HAL = 0x00000101;
        public const uint METHOD_BUFFERED = 0;
        public const uint FILE_ANY_ACCESS = 0;

       
        public uint CTL_CODE(uint DeviceType, uint Function, uint Method, uint Access)
        {
            return ((DeviceType << 16) | (Access << 14) | (Function << 2) | Method);
        }

        [DllImport("Coredll.dll")]
        public extern static uint KernelIoControl
        (
            uint dwIoControlCode,
            IntPtr lpInBuf,
            uint nInBufSize,
            IntPtr lpOutBuf,
            uint nOutBufSize,
            ref uint lpBytesReturned
        );

        private uint ResetPocketPC()
        {
            uint bytesReturned = 0;
            uint IOCTL_HAL_REBOOT = CTL_CODE(FILE_DEVICE_HAL, 15,
              METHOD_BUFFERED, FILE_ANY_ACCESS);
            return KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0,
              IntPtr.Zero, 0, ref bytesReturned);
        }

  //=====================

 

요기까지를 긁어가신다음에

 사용법은 메세지박스로 알려드릴게요^^

 

DialogResult r = MessageBox.Show("지금 소프트 리셋을 하시려면 예를 눌러주세요", "확인메시지",
                               MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);

                if (r == DialogResult.Yes)
                {
                    ResetPocketPC();
                }

                else
                {
                    //아니요 했을경우~
                }

 

요롷게 사용하시면됩니다^^ 참 쉽죠잉~

저작자 표시 비영리

'Programming > C#' 카테고리의 다른 글

[C#]윈도우 모바일 SoftReset 방법~~~  (3) 2009/12/31

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/92 관련글 쓰기

댓글을 달아 주세요

  1. 이병재 2010/03/30 10:41  댓글주소  수정/삭제  댓글쓰기

    잘 받아갑니다. 그런데 질문이 하나 있습니다. exe. 파일에 나타나는 icon 모양을 바꾸고 싶을 때는 어떻게 해야 되는지요? zangel@naver.com 입니다 답변 부탁드려도 될까요? ㅠ.ㅠ

    • Favicon of http://smartiz.co.kr BlogIcon 엉이엉이 2010/03/30 15:31  댓글주소  수정/삭제

      개발자시면은 저소스이용해서 님이 원하는 아이콘 넣으시면되구여
      그냥 유저시라면 제가 해드리는 방법 또는 리소스핵을 이용해서 이미지를 바꿔야하는데요... 리소스핵은 제가 사용해본적이 없네요..

  2. 이병재 2010/03/30 15:46  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 리소스핵으로 수정했습니다. ^^;;

EditBox 글씨 크게하기~~

Programming/C/C++ | 2009/12/23 07:33 | Posted by 엉이엉이

먼저 EditBox 멤버변수로 지정하고...

난 m_edit라고 해야지~

전역변수로  

CFont gFont;    

한뒤에


BOOL CDlgxxxxx::OnInitDialog()
{
................

int fontsize = 15;
gFont.CreatePointFont(fontsize*10, _T("Tahoma")); 
m_edit.SetFont(&gFont);

.................

}


그리고 Destroy이 에다가

gFont.DeleteObject(); 


해제 해주면 끝!!!!
저작자 표시 비영리

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/84 관련글 쓰기

댓글을 달아 주세요

C++ 문자열변환 TIP

Programming/C/C++ | 2009/12/21 23:45 | Posted by 엉이엉이
c++짜면서 문자열 상당히 까다로운데..

요걸보고 해결하곤한다...

아주 잘되어있다^^

링크로~~

http://blog.naver.com/cbdman/130032675221
저작자 표시 비영리

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/79 관련글 쓰기

댓글을 달아 주세요

출처 : http://blog.naver.com/ahnshy/100015197822

원본에서 내가 좀 수정하였다.. 원본꺼가 모바일에서 안돌아가기에 ...

내가 바꾼거!!
CString GetProgramPath(BOOL bOnlyPath)
{
TCHAR szBuffer[256];
CString strRet;

::GetModuleFileName(NULL,szBuffer,MAX_PATH);
strRet.Format(_T("%s"),szBuffer);

if(!bOnlyPath) return strRet; //여기서 리턴 Path+파일명

int nIndex= strRet.ReverseFind('\\');
strRet=strRet.Left(nIndex);
retrun strRet;//Path만 리턴

}

이렇게 바꾸면 잘돌아간다!!
아주 굿!!
저작자 표시 비영리

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/78 관련글 쓰기

댓글을 달아 주세요

PlaySound를 이용한 재생 및 정지 방법

Programming/T *Omnia | 2009/12/21 18:24 | Posted by 엉이엉이
재생

//리소스사용시
PlaySound(MAKEINTRESOURCE(IDR_WAVE), AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC | SND_LOOP | SND_NODEFAULT);

//파일사용시
PlaySound(_T("\\BGM_MAIN.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP | SND_NODEFAULT);

SND_NODEFAULT - 파일이 없을때 경고음 안울리게!!

정지
PlaySound(NULL, NULL, NULL);
저작자 표시 비영리

'Programming > T *Omnia' 카테고리의 다른 글

옴니아(M490/5) LED 및 진동 ON OFF하기!!  (2) 2010/03/01
PlaySound를 이용한 재생 및 정지 방법  (0) 2009/12/21
MessageBox 응답~  (0) 2009/12/08
SetCapture  (0) 2009/12/08
Thread~~  (0) 2009/12/08
MFC 버튼 다운 구현~  (0) 2009/12/08

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/77 관련글 쓰기

댓글을 달아 주세요

AVR128 UART Baud Rate 레지스터 설정

Programming/Avr128 | 2009/12/21 00:34 | Posted by 엉이엉이
//avr 클럭 16MHz 일때!!
//UCSRnA = 0  일때 (U1X로 표기) Baud Rate
//사용예)UBRRnH = 0   ; UBRRnL = 요기다 저걸 표기 9600인경우 103

#define U1X_4800 207 //Error  0.2%
#define U1X_9600 103 //Error  0.2%
#define U1X_14400 68 //Error  0.6%
#define U1X_19200 51 //Error  0.2%
#define U1X_28800 34 //Error  -0.8%
#define U1X_38400 25 //Error  0.2%
#define U1X_57600 16 //Error  2.1%
#define U1X_76800 12 //Error  0.2%
#define U1X_115200 8 //Error  -3.5%
#define U1X_230400 3 //Error  8.5%
#define U1X_250000 3 //Error  0.0%
#define U1X_500000 1 //Error  0.0%
#define U1X_1000000 0 //Error  0.0%

//avr 클럭 16MHz 일때!!
//UCSRnA = 1  일때 (U2X로 표기) Baud Rate
//사용예)UBRRnH = 0   ; UBRRnL = 요기다 저걸 표기 9600인경우 207
//즉 두배란소리!!

저작자 표시 비영리

'Programming > Avr128' 카테고리의 다른 글

AVR128 UART Baud Rate 레지스터 설정  (0) 2009/12/21
AVR128 USART0 예제  (0) 2009/03/03

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/76 관련글 쓰기

댓글을 달아 주세요

OnEraseBkgnd 함수는 보통 배경화면을 비트맵을 사용하여 그리기 위해 사용한다. 배경화면을 비트맵으로 처리하면 윈도우가 새로 그려져야 할 경우 화면이 깜박이고, 컨트롤들이 비트맵에 가려서 보이지 않게 된다. 윈도우가 다른 윈도우에 가려졌다가 다시 앞으로 나올 경우 그 윈도우는 다시 그려지게 된다. 윈도우가 배경을 그리는 방법은 모든 화면을 깨끗이 지우고(흰색 브러쉬로 채운다), 그 위에 배경을 그리게 된다. 한마디로 배경을 다시 그리기 위해 두 개의 작업이 이루어 진다. (윈도우가 배경을 다시 그려야 할 때 WM_ERASEBKGND 메세지를 호출한다.)

 

OnEraseBkgnd() 기본형 함수

  1. bool OnEraseBkgnd(CDC *pDC) {

    reutrn CDialog::OnEraseBkgnd(pDC); // Dialog에서 작업

  2. } // 흰 부러쉬로 배경을 다시 그린다.

 

윈도우에서 GDI(Graphic Device Interface)를 사용하여 그림을 그려야 할 경우, 화면에 DC(Device Context)에 바로 출력하지 않고, 메모리 DC에 먼저 그림을 로드한 후에 메모리 DC의 내용을 화면 DC에 빠르게 출력하여 깜박임 현상을 최소하 한다. 이러한 것을 Double Buffering이라고 한다.

 

DC(Device Context)의 종류

  1. CClientDC   클라이언트 영역의 출력
  2. CPaintDC   WM_PAINT 메시지 헨들러를 사용
  3. CWindowDC   전체 윈도우에 대한 출력(Screen Saver ...)
  4. CMetaFileDC   메타 파일로의 출력

 

배경화면 그리기(Exampe-1)

  1. VOID CTest::Initialize(VOID) {
  2. CBitmap m_BackBitmap;
  3. m_BackBitmap.LoadBitmap(IDB_BACKGROUND);   //메모리 DC에 사용할 Background Bitmap
  4. }
  5. BOOL CTest::OnEraseBkgnd(CDC* pDC) {
  6.  CDC  memDC;                     // 메모리 DC
     CBitmap * pOldBitmap = NULL;    // m_BackBitmap으로 새로운 그림을 DC에 그릴 때, 이전 그려졌던 DC(즉, Bitmap)을 저장.
  7.  BITMAP bitmapInfo;              // 그림의 정보(m_BackBitmap)
  8.  m_BackBitmap.GetBitmap(&bitmapInfo); // Bitmap 크기 구함.
  9.  memDC.CreateCompatibleDC(pDC);  // 메모리 DC 생성
  10.  pOldBitmap = memDC.SelectObject(&m_BackBitmap);
  11.  pDC->BitBlt(0, 0, bitmapInfo.Width, bitmapInfo.Height, &memDC, 0, 0, SRCCOPY);   // 메모리 DC에 그림을 그림
     
     memDC.SelectObject(pOldBitmap);
  12.  memDC.DeleteDC();
  13.  //return CDialog::OnEraseBkgnd(pDC);
     return true; // 흰 부러쉬가 아닌 배경을 그려야 하기 때문에 true
  14. }

 

 위의 소스에서 이해하기 난해한 부분은 memDC.SelectObject(CBitmap* bitmap) 함수이다. CBitmap * pOldBitmap 을 선언한 이유는 pOldBitmap = memDC.SelectObject(&m_BackBitmap); 구문 때문이다.

윈도우는 항상 거의 대부분 사용을 다한 자원은 반환되어야 한다. memDC.SelectObject(&m_BackBitmap); 을 사용하여 새로운 비트맵을 넣으면, 이전 작업 중이던 비트맵을 리턴한다. 14줄 memDC.SelectObject(pOldBitmap); 에서는 이전에 저장했던 pOldBitmap을 다시 넣는다. m_BackBitmap 그림을 다 그렸기 때문에 더이상 사용할 필요가 없기 때문에 이전 pOldBitmap을 다시 DC에 돌려 주게 된다. 그리고 배경을 다 그렸기 때문에 두 번째 나오는 SelectObject에서는 리턴값을 받을 필요가 없다. (OnEraseBkgnd 함수는 배경이 다시 그려져야 할 경우에만 WM_ERASEBKGND 메시지를 호출하여 다시 그리게 된다.)

GetClip를 사용하여 속도 향상 시키기(Exampe-2)

  1. VOID CTest::Initialize(VOID) {
  2. CBitmap m_BackBitmap;
  3. m_BackBitmap.LoadBitmap(IDB_BACKGROUND);  
  4. }
  5. BOOL CTest::OnEraseBkgnd(CDC* pDC) {
  6.  CDC  memDC;
     CBitmap * pOldBitmap = NULL;
     BITMAP bmpInfo;
  7.  //HBITMAP m_hBmp = (HBITMAP)LoadImage(NULL, _T("bg.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
     //CBitmap *pBmp = CBitmap::FromHandle(m_hBmp);

  8.  m_BackBitmap.GetBitmap(&bmpInfo);
     memDC.CreateCompatibleDC(pDC);
  9.  pOldBitmap = memDC.SelectObject(&m_BackBitmap);
     memDC.SelectObject(&m_BackBitmap);
     
     CRect rect;
     GetClientRect(&rect);
  10.  int nX, nY;
     for(nX = 0; nX < rect.Width(); nX += bmpInfo.bmWidth) {
  11.      for(nY = 0; nY < rect.Height(); nY += bmpInfo.bmHeight) {
               pDC->GetClipBox(&rect);
  12.   pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &memDC, 0, 0, SRCCOPY);
  13.   }
  14.  }
  15.  memDC.SelectObject(pOldBitmap);
     memDC.DeleteDC();
  16.  return true;
  17. }

 Double Buffering

매모리맵에 클라이언트 창의 크기만큼 비트맵 이미지를 그려 놓고 한꺼번에 화먼에 뿌려주는 방식(실행시 더 빠른 속도) (Exampe-3)

  1. BOOL CLoaderDlg::OnEraseBkgnd(CDC* pDC) {
  2.  CDC  MemDC, BufferDC;
     CBitmap * pOldBitmap1 = NULL;
     CBitmap * pOldBitmap2 = NULL;
     CBitmap memBitmap;
     BITMAP bmpInfo;
     CRect rect;
  3. GetClientRect(&rect);
     MemDC.CreateCompatibleDC(pDC);
     BufferDC.CreateCompatibleDC(pDC);
  4.  memBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
  5.  pOldBitmap1 = MemDC.SelectObject(&memBitmap);
  6.  m_BackBitmap.GetBitmap(&bmpInfo);

  7.  pOldBitmap2 = BufferDC.SelectObject(&m_BackBitmap);
     for(int nX = 0; nX < rect.Width(); nX += bmpInfo.bmWidth) {
         for(int nY = 0; nY < rect.Height(); nY += bmpInfo.bmHeight) {
             MemDC.BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &BufferDC, 0, 0, SRCCOPY);
         }
     }

  8.  pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);
  9.  BufferDC.SelectObject(pOldBitmap2);
     MemDC.SelectObject(pOldBitmap1);
  10.  return true; 
    }

  11. [출처] OnEraseBkgnd() 배경화면 & 속도향상|작성자 리커버리


    OnPaint만 쓰다가 이거쓰니 속이 시원하다 ㅋㅋㅋ

저작자 표시 비영리

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/75 관련글 쓰기

댓글을 달아 주세요

mfc 배경 이미지 넣기

Programming/C/C++ | 2009/12/20 00:19 | Posted by 엉이엉이
배경 뿌리기~~

void CDlgMain::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 여기에 메시지 처리기 코드를 추가합니다.
// 그리기 메시지에 대해서는 CDialog::OnPaint()을(를) 호출하지 마십시오.
CBitmap resBack;
CBitmap *old_resBack;
CDC memDC;
memDC.CreateCompatibleDC(&dc);
resBack.LoadBitmapW(IDB_IMG_MAIN);   //리소스 아이디
old_resBack=memDC.SelectObject(&resBack);
        //이미지 뿌리기
dc.BitBlt(0,0  ,cx,cy, &memDC,0,0,SRCCOPY);
//메모리 해제
memDC.SelectObject(old_resBack);
resBack.DeleteObject();
memDC.DeleteDC();
}
저작자 표시 비영리

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/73 관련글 쓰기

댓글을 달아 주세요



처음엔 이메세지를 보고 thrdcore.cpp를 찾아가보았지만 당최 어떤걸 손대야할지 모르다가...

쓰레드관련된 먼가 잘못됬거니싶어서.. 내가 만든 쓰레드를 살펴봤다...

헌데 보니... 쓰레드가 아직 시작도 안한상태에서 저메세지가 뜬거였는데...

결론적으로 추적하다보니..... 다이얼로그 문제엿다...

다이얼로그가...

메인 - > 셋팅 - > 주창

근데 주창에서 프로그램 종료를 눌렀더니!!!! 글쎄...!!! 오류가 뿅...

반드시 주창 끄고 셋팅 끄고 메인 꺼야지...... 정상종료...

근데 저번 펌버젼에선 된이유가 멀까 ㅡㅡ
저작자 표시 비영리

TRACKBACK ADDRESS : http://smartiz.co.kr/trackback/69 관련글 쓰기

댓글을 달아 주세요