델파이에서 구현해보려고 DLL용 .h 파일을 .pas로 만들어보았다.
원본 SDK는 
http://www.inexio.co.kr/07_download/download02.html

에서 받을 수 있으며 ( http://www.inexio.co.kr/pdf/sdk/Nexio_SDK_v2000.zip ) 


기본적으로는 작동되는데, 몇 가지는 의심스럽긴 하다.


아무튼 필요하시면 그냥 쓰시고, 이상해서 고쳐쓰시거든 댓글로 알려주시면 감사하겠습니다.



/////////////////////////////////////////////////////////////////////////////
//
// file inexio_multi.h
//
//
//  Version 1.10
//
//  Copyright (C) 2005-  NEXIO Co., Ltd. All rights reserved
//
// Homepage : http://www.inexio.co.kr
//
/////////////////////////////////////////////////////////////////////////////




unit NexioPlug;

interface

uses Windows, Classes;

const
  MPT_TOUCH_UP = 0;
  MPT_TOUCH_DOWN = 1;
  MPT_TOUCH_MOVE = 2;

  MTOUCH_TOUCH_UP = (MPT_TOUCH_UP); //Touch Up   OutputMulti dwstate
  MTOUCH_TOUCH_DOWN = (MPT_TOUCH_DOWN); //Touch Down OutputMulti dwstate
  MTOUCH_TOUCH_MOVE = (MPT_TOUCH_MOVE); //Touch Move OutputMulti dwstate

  // MPointElement wStatus
  INACTIVE_COORDINATE = $0000;
  ACTIVE_COORDINATE = $0001;
  IMAGE_COORDINATE = $0002;
  REJECTED_COORDINATE = $0003;

  MAX_MPOINTELEMENT = 100;
  MAX_MPOINTELEMENT_V2 = 98;

  EVENT_ARRIVED = 0; //Event arrived
  TIME_WAS_OUT = 1; //Wait time was out
  UNKNOWN_ERR = 2; //Unknown error object

  NEXIO_ROTATE_0 = 0;
  NEXIO_ROTATE_L90 = 90;
  NEXIO_ROTATE_R90 = 270;
  NEXIO_ROTATE_180 = 180;
  NEXIO_ROTATE_360 = 360;
  NEXIO_ROTATE_MIRROR_V = 1;
  NEXIO_ROTATE_MIRROR_H = 2;
type
  TMPointElement = record
    // Screen Coordinate (x,y) state
    // INACTIVE_COORDINATE, ACTIVE_COORDINATE, IMAGE_COORDINATE
    wStatus: WORD;
    wIndex: WORD; // ID of point

    // Pressed touch point width at screen coordinate (x,y)
    wXLength: WORD;
    // Pressed touch point height at screen coordinate (x,y)
    wYLength: WORD;

    wXWidth: WORD; // Reserved
    wYWidth: WORD; // Reserved

    // Pressed touch x point  at screen coordinate (x,y)
    wX: WORD;
    // Pressed touch y point  at screen coordinate (x,y)
    wY: WORD;

    wXStart: WORD;   // Reserved
    wXEnd: WORD;     // Reserved

    wYStart: WORD;   // Reserved
    wYEnd: WORD;     // Reserved
  end;




  POutputMulti = ^TOutputMulti;
  TOutputMulti = record
    // Multi-touch state
    // MPT_TOUCH_UP, MPT_TOUCH_DOWN, MPT_TOUCH_MOVE
    dwState : DWORD;

    // MAX( mX, mY)
    dwNumber : DWORD;
    // Total X coordinate count
    mX : DWORD;
    // Total Y coordinate count
    mY : DWORD;

    case Integer of
      0: (mPpointsOld : Array [0 .. MAX_MPOINTELEMENT - 1] of Array [0 .. MAX_MPOINTELEMENT - 1] of TMPointElement);
      1: (
//        mPpoints : Array[0 .. MAX_MPOINTELEMENT_V2 - 1] of Array [0 .. MAX_MPOINTELEMENT - 1] of TMPointElement;
        mPpoints : Array[0 .. MAX_MPOINTELEMENT - 1] of Array [0 .. MAX_MPOINTELEMENT_V2 - 1] of TMPointElement;
        sUsbID : Array[0 .. SizeOf(TMPointElement) * MAX_MPOINTELEMENT - 1] of char;

        wUsbID : WORD;
        wMonID : WORD;
        dwRESERVED00 : Array[0 .. 4] of DWORD;
        Reserved : Array[0 .. MAX_MPOINTELEMENT-2-1] of TMPointElement;
        dwRESERVED01 : Array[0 .. 5] of DWORD;
      );
  end;




//////////////////////////////////////////////////////////////////////////
//
// Function:    OpenNexioMulti
//
// Description:
//  Open Event of NEXIO Multi-Point TouchScreen coordinate
//
// Returns:
//  TRUE if Event Open successful, FALSE if Event fails....
//
//////////////////////////////////////////////////////////////////////////
//extern "C" __declspec(dllexport)
//BOOL __stdcall OpenNexioMulti();

function OpenNexioMulti: Boolean; stdcall; external 'MultiDll.dll' name 'OpenNexioMulti';




//////////////////////////////////////////////////////////////////////////
//
// Function:    WaitNexioMulti
//
// Description:
//  Wait Event and Touch Coordinate Output
//
// Input :
// nTime : [in] event wait time :: nTime is millisecond (INFINITE wait event infinite)
// Output :
// pBuffer : [out] pointer of touch coordinate
//
// Returns:
// EVENTARRIVED : Event arrived
// TIMEWASOUT : Wait time was out
// UNKNOWNERR : Unknown error object
//
//////////////////////////////////////////////////////////////////////////

//extern "C" __declspec(dllexport)
//int __stdcall WaitNexioMulti(DWORD nTime, OutputMulti *pBuffer);

function WaitNexioMulti(nTime: DWORD; pBuffer: POutputMulti): Integer; stdcall;  external 'MultiDll.dll' name 'WaitNexioMulti';

//////////////////////////////////////////////////////////////////////////
//
// Function:    CloseNexioMulti
//
// Description:
//  Close Event of NEXIO Multi-Point TouchScreen coordinate
//
//////////////////////////////////////////////////////////////////////////
//extern "C" __declspec(dllexport)
//void __stdcall CloseNexioMulti();
procedure CloseNexioMulti; stdcall; external 'MultiDll.dll' name 'CloseNexioMulti';





//////////////////////////////////////////////////////////////////////////
//
// Function:    NexioSetRotate
//
// Description:
//  set rotation of touch-screen
//  iRotateCode : NEXIO_ROTATE_XXX
//////////////////////////////////////////////////////////////////////////
//extern "C" __declspec(dllexport)
//void __stdcall NexioSetRotate( int iRotateCode );
procedure NexioSetRotate(iRotateCode: Integer); stdcall; external 'MultiDll.dll' name 'NexioSetRotate';





//////////////////////////////////////////////////////////////////////////
//
// Function:    NexioGetRotate
//
// Description:
//  get rotation code of touch-screen
//  return : NEXIO_ROTATE_XXX
//////////////////////////////////////////////////////////////////////////
//extern "C" __declspec(dllexport)
//DWORD __stdcall NexioGetRotate();
function NexioGetRotate: DWORD; stdcall; external 'MultiDll.dll' name 'NexioGetRotate';

implementation




// x,y : point for rotation
// mx, my : width, height of screen
// fRatio : mx / my ( ratio in float )
// dwRotateAngle : angle in degree (NEXIO_ROTATE_XXX)

procedure nxRoratePoint(var x, y: Integer; mx, my: Integer; fRatio: Real; dwRotateAngle: DWORD);
var
  x0, y0: Integer;
begin
x0 := x;
y0 := y;
case dwRotateAngle of
    NEXIO_ROTATE_0:
      Exit;
    NEXIO_ROTATE_L90:
    begin
      x := Trunc( mx - y0 * fRatio );
      y := Trunc( x0 / fRatio );
      Exit;
    end;
    NEXIO_ROTATE_180:
    begin
      x := Trunc( mx - x0);
      y := Trunc( my - y0);
      Exit;
    end;
    NEXIO_ROTATE_R90:
    begin
      x := Trunc( y0 * fRatio );
      y := Trunc( my - x0 / fRatio);
      Exit;
    end;
    NEXIO_ROTATE_360:
    begin
      x := Trunc( y0 * fRatio);
      y := Trunc( x0 / fRatio );
      Exit;
    end;
    NEXIO_ROTATE_MIRROR_V: //mirror vertical
    begin
      y := my - y0;
      Exit;
    end;
    NEXIO_ROTATE_MIRROR_H: //mirror horizontal
    begin
      x := mx - x0;
      Exit;
    end;
  end;

end;





end.
Posted by Parker Falcon
인터넷 익스플로어의 일부 기능이 정상적으로 작동하지 않는 경우가 있다.

특히 윈도XP를 예전에 설치하여 업데이트를 한 컴퓨터의 경우 종종 말썽이 있었다.

원인은 actxprxy.dll 이 없어서 그런 것이며, 1000대 PC중 3대 정도 발견했다.

왜 없는지는 모르겠다.

아무튼 없어서 그랬다.

혹시나 IE6인데 미리보기 / 문서 내 찾기 에서 스크립트 오류 뜨는 경우는, 기본적으로 몇 가지 파일들 (특히 actxprxy.dll ) 이 있는지 확인해보자.
Posted by Parker Falcon
DLL에서 동적으로 불러오는 bpl 파일을 exe에 정적으로 포함시키면 문제가 될 수 있다.
겹치는 패키지는 프로젝트 옵션에서 Runtime Package 로 빼두도록 하자.
Posted by Parker Falcon

vim regex

2010. 12. 4. 11:29
s/\(.\{32}[^."?!]\{3}\)\n/\1/g
강제 엔터 친 글 붙이기
Posted by Parker Falcon
구글 크롬에서 Mouse Gesture 을 사용하면 이상하게 처리됩니다.
jQuery로 간단하게 처리하세요.

jQuery('div#ChromeGesture-BackgroundSupportElement').css('position', '').css('height','').css('width','');

Posted by Parker Falcon
자동으로 USB 저장장치를 백업하는 프로그램입니다.
USB메모리를 꽂으면 자동으로 정해진 폴더에 날짜 및 시간으로 폴더를 만들어 해당 USB에 파일을 백업하는 프로그램입니다. 특히 SD카드같은것을 여러개 백업할 일이 있으실 때 매우 편리합니다.
자동으로 생성되는 폴더는 일반적으로 내 문서 아래에 OhMyUSBCloner 밑에 날짜 및 시간으로 폴더가 생성됩니다. 만약 잘 안되는 부분이 있으면 내 문서 폴더 아래에 OhMyUSBCloner 밑에 해당 날짜.log 로 생성된 로그파일을 같이 첨부해서 보내주시면 참고하겠습니다.



다운로드



Posted by Parker Falcon
업데이트 도중 에러가 나서 Update 프로그램이 뻗으면 이렇게 된다.

작업관리자 ( 시작 -> 실행 ->  taskmgr 또는 Ctrl + Shift + Esc) 에 들어가서

BlizzardDownloader.exe 를 강제 종료 시킨 다음 다시 스타크래프트2 를 실행시킨다.

만약 이렇게 해도 정상적으로 실행이 안되면 스타크래프트2가 설치된 경로 (보통 C:\Program Files\Starcraft II\ ) 에 가서

Updates 폴더를 비운 다음 다시 실행을 한다.


기타 문의 사항은 블리자드 고객 지원에 문의하면 된다.

( http://kr.blizzard.com/support/index.xml?locale=ko_KR&gameId=13 )
Posted by Parker Falcon

2010년 여름 맞이 내일로 여행을 다녀온 뒤 만든 영상입니다.


PENTAX K-x / SMC-A 50mm F1.2, SMC-DA L 18-55, SAMYANG POLAR 85mm F1.4
Apple iMovie 09 / Motion

'Analog Life' 카테고리의 다른 글

우리말 관용 표현 모음  (1) 2011.11.14
[한국영화/2011] 카운트다운  (0) 2011.10.03
2010 내일로 여행 후기 영상 #1 민둥산역 편  (0) 2010.08.06
먹으러 갈 곳  (0) 2009.08.02
2009년 내일로 떠나는 여행 UCC  (0) 2009.07.29
Posted by Parker Falcon

구글 무섭다.

2010. 9. 7. 23:52
이미 다른 도메인을 구글앱에 연동시켜 사용중입니다.

bandoche.com 을 구글 앱에 연동 시켰다.
calendar 를 눌러보았다.
업무 시간 이라는 개념이 추가되었다. 기본적으로 이 때는 초대를 안 받겠다는 뜻. 맘에 드는 기능이다.
기본 업무 시간이 9시 부터 5시 까지. 더 일하지만, 6시라는 정규 시간을 클릭하는데도 웬지 지는 느낌이었다.
 
Posted by Parker Falcon
- 터치 스크린의 압력 감지 기능
- 평평한 화면에 전기적으로 요철감 구현

Posted by Parker Falcon