달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

var
  AA: TDateTime;
begin
  AA := Now();

  // 1시간 더하기
  AA := AA + (1/24);

  // 1분 더하기
  AA := AA + (1/(24*60));

  // 1초 더하기
  AA := AA + (1/(24*60*60));
end;

살펴보면 규칙이 보일겁니다.

TDateTime은 하루를 1로 계산합니다.

따라서,

1시간은 1일/24시간
1분은 1일/(24시간 * 60분)
1초는 1일/(24시간 * 60분 * 60초)

가 되는 겁니다.

궁금 님이 쓰신 글 :
: 델파이에서 now 해서 시간을 찍어보면
:
: 2006-10-10 오전 07:08:11 이렇게 나오는데 여기에 초를 더하면 시간을 알아서 계산해주는 함수가 있나요?
:
: 수동으로 하려면 오전인지 오후인지 판단해서 24시간으로 바꾸고 거기서 초를더해서
: 만약 24시간을 넘어가면 2006-10-10 에 해당하는 날짜를 +1해주고 나머지값을 시간에셋팅해주고 등등 번거로운데요..걍 간단히 tdatetime 형의 시간에 1초를더한 날짜/시간을
: 계산해주는함수가있는지요??
:
: 프로그램시작시에 현재시간을 tdatetime변수에 넣어두고.. tickcount를 계산해서..
: 현재시간에서 초를 계속더해서..윈도우시계와는상관없이.. 독자적인 시간을 만들려고하거든요! 근데 현재시간을 저장해뒀다가 지나간tick을초로환잔해서 더할때마다 시간계산이 복잡해서리..--;

 

 

출처  : http://www.borlandforum.com/impboard/impboard.dll?action=read&db=del_qna&no=11140

Posted by theF
|

20KHz의 신호를 입력받고자 하는데 신호가 부정확합니다



DAQ-2000시리즈를 이용하여 20Khz의 신호를 수집하고자 하는데

정상적인 신호가 들어오지 않습니다.



답변: 일단 DAQ-2000시리즈 뿐만 아니라 모든 데이터 수집 제품을 사용하여

정확한 데이터를 수집하기 위해서 고려해야할 사항은 3가지 정도입니다.


첫째. Sampling rate를 얼마나 지원하고 얼마를 설정해야 하는가?

먼저 Sampling rate에 대해 설명드리면 아주 간단하게 1초에 원래 신호를 몇 개나 디지털화 할것인가?를 나타내는 비율이라고 보시면 됩니다.

예를 들어 100KS/s의 Sampling rate이면 1초에 원래 신호 중에 10만개를 디지털화 합니다.


따라서 이 부분은 보통 측정하고자 하는 신호의 10배 정도의 Sampling rate를 추천합니다.

10배 정도는 되어야 정확한 데이터 수집이 가능합니다.

위의 예처럼 20Khz의 신호를 측정하고할 경우 200KS/s정도의 Sampling rate를 사용하면 정확한 데이터를 수집할 수 있습니다.


둘째. 지원하는 입력 범위가 얼마인가?

보통의 데이터 수집제품의 경우 최대 -10V ~ +10V의 bipolar범위를 제공하며 

최소 -0.05V ~ +0.05V의 Bipolar 또는 0 ~ 0.1V의 unipolar의 범위를 제공합니다.

이러한 입력 범위는 측정하고자 하는 신호의 출력 범위를 정확하게 파악하신 다음에

그 범위에 가장 적합한 범위를 지원해 주는가가 관건입니다.

최대한 수집하고자 하는 신호의 출력 범위와 같은 범위로 설정해야 정확하고 정밀한

데이터를 수집할 수 있습니다.


보통의 센서들은 수mv, 4~20mA, 1~5V, 0~10V 정도의 출력 범위를 가집니다.

참고로 위의 센서 출력 범위 중 4~20mA의 경우는 signal conditioner 또는 250Ω의 저항을 이용하여 1~5V의 전압출력으로 변환하여 입력을 받습니다. 

V=IR이므로 전압=전류*저항의 식을 이용하여

4mA일때 V=4*250=1V, 20mA일때 V=20*250=5V가 됩니다.


셋째. Resolution(분해능) Bit수는 얼마인가?

보통의 데이터수집 제품은 12bit와 14bit 16bit를 제공합니다. 여기서 비트수의 차이점은 sampling rate를 통해 1초에 수집된 신호를 디지털로 몇 비트를 이용하여 표현하는가를 나타냅니다. 


예를 들어 똑같은 Sampling rate와 입력 범위(예를 들어 0~10V)로 데이터를 수집하여도 12bit는 입력 범위  0~10V를 2의 12승인 4096개로 나누어서 0.002V단위로 표시가 가능하지만 16bit는 2의 16승인 65536개로 나누어 0.00015V 단위로 표시가 가능하므로  수집된 데이터가 훨씬 정밀해 집니다.


위에서 언급한 3가지를 충분히 고려하여 데이터 수집 제품을 선정하여 사용하시면

원하시는 정확성과 정밀도를 가진 데이터를 수집할 수 있습니다.

물론 가장 중요한 측정하고자 하는 신호의 정확한 범위와 단위 신호의 주파수 성분을

잊으시면 안되겠죠?



출처 : http://www.dassystem.co.kr/support/faq.php

Posted by theF
|
  { Virtual Keys, Standard Set }
  {$EXTERNALSYM VK_LBUTTON}
  VK_LBUTTON = 1;
  {$EXTERNALSYM VK_RBUTTON}
  VK_RBUTTON = 2;
  {$EXTERNALSYM VK_CANCEL}
  VK_CANCEL = 3;
  {$EXTERNALSYM VK_MBUTTON}
  VK_MBUTTON = 4;  { NOT contiguous with L & RBUTTON }
  {$EXTERNALSYM VK_BACK}
  VK_BACK = 8;
  {$EXTERNALSYM VK_TAB}
  VK_TAB = 9;
  {$EXTERNALSYM VK_CLEAR}
  VK_CLEAR = 12;
  {$EXTERNALSYM VK_RETURN}
  VK_RETURN = 13;
  {$EXTERNALSYM VK_SHIFT}
  VK_SHIFT = $10;
  {$EXTERNALSYM VK_CONTROL}
  VK_CONTROL = 17;
  {$EXTERNALSYM VK_MENU}
  VK_MENU = 18;
  {$EXTERNALSYM VK_PAUSE}
  VK_PAUSE = 19;
  {$EXTERNALSYM VK_CAPITAL}
  VK_CAPITAL = 20;
  {$EXTERNALSYM VK_KANA }
  VK_KANA = 21;
  {$EXTERNALSYM VK_HANGUL }
  VK_HANGUL = 21;
  {$EXTERNALSYM VK_JUNJA }
  VK_JUNJA = 23;
  {$EXTERNALSYM VK_FINAL }
  VK_FINAL = 24;
  {$EXTERNALSYM VK_HANJA }
  VK_HANJA = 25;
  {$EXTERNALSYM VK_KANJI }
  VK_KANJI = 25;
  {$EXTERNALSYM VK_CONVERT }
  VK_CONVERT = 28;
  {$EXTERNALSYM VK_NONCONVERT }
  VK_NONCONVERT = 29;
  {$EXTERNALSYM VK_ACCEPT }
  VK_ACCEPT = 30;
  {$EXTERNALSYM VK_MODECHANGE }
  VK_MODECHANGE = 31;
  {$EXTERNALSYM VK_ESCAPE}
  VK_ESCAPE = 27;
  {$EXTERNALSYM VK_SPACE}
  VK_SPACE = $20;
  {$EXTERNALSYM VK_PRIOR}
  VK_PRIOR = 33;
  {$EXTERNALSYM VK_NEXT}
  VK_NEXT = 34;
  {$EXTERNALSYM VK_END}
  VK_END = 35;
  {$EXTERNALSYM VK_HOME}
  VK_HOME = 36;
  {$EXTERNALSYM VK_LEFT}
  VK_LEFT = 37;
  {$EXTERNALSYM VK_UP}
  VK_UP = 38;
  {$EXTERNALSYM VK_RIGHT}
  VK_RIGHT = 39;
  {$EXTERNALSYM VK_DOWN}
  VK_DOWN = 40;
  {$EXTERNALSYM VK_SELECT}
  VK_SELECT = 41;
  {$EXTERNALSYM VK_PRINT}
  VK_PRINT = 42;
  {$EXTERNALSYM VK_EXECUTE}
  VK_EXECUTE = 43;
  {$EXTERNALSYM VK_SNAPSHOT}
  VK_SNAPSHOT = 44;
  {$EXTERNALSYM VK_INSERT}
  VK_INSERT = 45;
  {$EXTERNALSYM VK_DELETE}
  VK_DELETE = 46;
  {$EXTERNALSYM VK_HELP}
  VK_HELP = 47;
{ VK_0 thru VK_9 are the same as ASCII '0' thru '9' ($30 - $39) }
{ VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' ($41 - $5A) }
  {$EXTERNALSYM VK_LWIN}
  VK_LWIN = 91;
  {$EXTERNALSYM VK_RWIN}
  VK_RWIN = 92;
  {$EXTERNALSYM VK_APPS}
  VK_APPS = 93;
  {$EXTERNALSYM VK_NUMPAD0}
  VK_NUMPAD0 = 96;
  {$EXTERNALSYM VK_NUMPAD1}
  VK_NUMPAD1 = 97;
  {$EXTERNALSYM VK_NUMPAD2}
  VK_NUMPAD2 = 98;
  {$EXTERNALSYM VK_NUMPAD3}
  VK_NUMPAD3 = 99;
  {$EXTERNALSYM VK_NUMPAD4}
  VK_NUMPAD4 = 100;
  {$EXTERNALSYM VK_NUMPAD5}
  VK_NUMPAD5 = 101;
  {$EXTERNALSYM VK_NUMPAD6}
  VK_NUMPAD6 = 102;
  {$EXTERNALSYM VK_NUMPAD7}
  VK_NUMPAD7 = 103;
  {$EXTERNALSYM VK_NUMPAD8}
  VK_NUMPAD8 = 104;
  {$EXTERNALSYM VK_NUMPAD9}
  VK_NUMPAD9 = 105;
  {$EXTERNALSYM VK_MULTIPLY}
  VK_MULTIPLY = 106;
  {$EXTERNALSYM VK_ADD}
  VK_ADD = 107;
  {$EXTERNALSYM VK_SEPARATOR}
  VK_SEPARATOR = 108;
  {$EXTERNALSYM VK_SUBTRACT}
  VK_SUBTRACT = 109;
  {$EXTERNALSYM VK_DECIMAL}
  VK_DECIMAL = 110;
  {$EXTERNALSYM VK_DIVIDE}
  VK_DIVIDE = 111;
  {$EXTERNALSYM VK_F1}
  VK_F1 = 112;
  {$EXTERNALSYM VK_F2}
  VK_F2 = 113;
  {$EXTERNALSYM VK_F3}
  VK_F3 = 114;
  {$EXTERNALSYM VK_F4}
  VK_F4 = 115;
  {$EXTERNALSYM VK_F5}
  VK_F5 = 116;
  {$EXTERNALSYM VK_F6}
  VK_F6 = 117;
  {$EXTERNALSYM VK_F7}
  VK_F7 = 118;
  {$EXTERNALSYM VK_F8}
  VK_F8 = 119;
  {$EXTERNALSYM VK_F9}
  VK_F9 = 120;
  {$EXTERNALSYM VK_F10}
  VK_F10 = 121;
  {$EXTERNALSYM VK_F11}
  VK_F11 = 122;
  {$EXTERNALSYM VK_F12}
  VK_F12 = 123;
  {$EXTERNALSYM VK_F13}
  VK_F13 = 124;
  {$EXTERNALSYM VK_F14}
  VK_F14 = 125;
  {$EXTERNALSYM VK_F15}
  VK_F15 = 126;
  {$EXTERNALSYM VK_F16}
  VK_F16 = 127;
  {$EXTERNALSYM VK_F17}
  VK_F17 = 128;
  {$EXTERNALSYM VK_F18}
  VK_F18 = 129;
  {$EXTERNALSYM VK_F19}
  VK_F19 = 130;
  {$EXTERNALSYM VK_F20}
  VK_F20 = 131;
  {$EXTERNALSYM VK_F21}
  VK_F21 = 132;
  {$EXTERNALSYM VK_F22}
  VK_F22 = 133;
  {$EXTERNALSYM VK_F23}
  VK_F23 = 134;
  {$EXTERNALSYM VK_F24}
  VK_F24 = 135;
  {$EXTERNALSYM VK_NUMLOCK}
  VK_NUMLOCK = 144;
  {$EXTERNALSYM VK_SCROLL}
  VK_SCROLL = 145;
{ VK_L & VK_R - left and right Alt, Ctrl and Shift virtual keys.
  Used only as parameters to GetAsyncKeyState() and GetKeyState().
  No other API or message will distinguish left and right keys in this way. }
  {$EXTERNALSYM VK_LSHIFT}
  VK_LSHIFT = 160;
  {$EXTERNALSYM VK_RSHIFT}
  VK_RSHIFT = 161;
  {$EXTERNALSYM VK_LCONTROL}
  VK_LCONTROL = 162;
  {$EXTERNALSYM VK_RCONTROL}
  VK_RCONTROL = 163;
  {$EXTERNALSYM VK_LMENU}
  VK_LMENU = 164;
  {$EXTERNALSYM VK_RMENU}
  VK_RMENU = 165;
  {$EXTERNALSYM VK_PROCESSKEY}
  VK_PROCESSKEY = 229;
  {$EXTERNALSYM VK_ATTN}
  VK_ATTN = 246;
  {$EXTERNALSYM VK_CRSEL}
  VK_CRSEL = 247;
  {$EXTERNALSYM VK_EXSEL}
  VK_EXSEL = 248;
  {$EXTERNALSYM VK_EREOF}
  VK_EREOF = 249;
  {$EXTERNALSYM VK_PLAY}
  VK_PLAY = 250;
  {$EXTERNALSYM VK_ZOOM}
  VK_ZOOM = 251;
  {$EXTERNALSYM VK_NONAME}
  VK_NONAME = 252;
  {$EXTERNALSYM VK_PA1}
  VK_PA1 = 253;
  {$EXTERNALSYM VK_OEM_CLEAR}
  VK_OEM_CLEAR = 254;

ShowMessage(IntToStr(Ord(Key)));

Posted by theF
|

2007/01/16 10:43

MDB의 한계 값

http://www.superxt.com/program/vb/tip/tip_18.htm

--------------------------------------------------------------------------------

 MS Access 헬프에 있는 내용입니다.

--------------------------------------------------------------------------------


Microsoft Access 데이터베이스의 일반 사양



 속성 최대 크기



 Microsoft Access 데이터베이스(.mdb) 파일 크기 2GB까지 지정할 수 있습니다.


 그러나, 데이터베이스에 다른 파일의 연결 테이블을 포함할 수 있으므로 데이터베이스의


 전체 크기는 사용할 수 있는 저장 용량에 의해만 제한됩니다. 

 


 데이터베이스의 개체 수 32,768개까지 포함할 수 있습니다. 

 모듈 포함/HasModule 속성이 True로 설정된 폼과 보고서를 포함한 모듈 1,000개까지


 포함할 수 있습니다. 

 


 개체 이름의 문자 수 64자까지 지정할 수 있습니다. 

 암호의 문자 수 14자까지 지정할 수 있습니다. 

 사용자 이름이나 그룹 이름의 문자 수 20자까지 지정할 수 있습니다. 

 동시에 가능한 사용자 수 255명까지 가능합니다. 

 



--------------------------------------------------------------------------------


Microsoft Access 프로젝트의 일반 사양



 특성 최대값



 Microsoft Access 프로젝트(.adp)의 개체 수 32,768개까지 사용할 수 있습니다. 

 모듈 포함/HasModule 속성이 True로 설정된 폼과 보고서를 포함한 모듈 수 1,000개까지


 사용할 수 있습니다.  

 개체 이름의 문자 수 64자까지 지정할 수 있습니다. 

 



--------------------------------------------------------------------------------


Microsoft Access 데이터베이스 테이블 사양



 속성 최대 크기



 테이블 이름의 문자 수 64자까지 지정할 수 있습니다. 

 필드 이름의 문자 수 64자까지 지정할 수 있습니다. 

 테이블의 필드 수 255개까지 지정할 수 있습니다. 

 


 열려 있는 테이블 수 2,048개까지 지정할 수 있습니다.


 Microsoft Access에서 내부적으로 여는 테이블 때문에 실제 개수는 더 적을 수 있습니다. 

 테이블 크기 1GB까지 지정할 수 있습니다. 

 텍스트 필드의 문자 수 255자까지 지정할 수 있습니다. 

 


 메모 필드의 문자 수 사용자 인터페이스를 사용해 데이터를 입력할 때는


 65,535자까지 지정할 수 있습니다.

 프로그램에서 데이터를 입력할 때는 1GB까지 지정할 수 있습니다. 

 


 OLE 개체 필드의 크기 1GB까지 지정할 수 있습니다. 

 테이블에서의 인덱스 수 32개까지 지정할 수 있습니다. 

 인덱스의 필드 수 10개까지 지정할 수 있습니다. 

 


 유효성 검사 메시지의 문자 수 255자까지 지정할 수 있습니다. 

 유효성 검사 규칙의 문자 수 2,048자까지 지정할 수 있습니다. 

 테이블이나 필드 설명의 문자 수 255자까지 지정할 수 있습니다. 

 


 메모와 OLE 개체 필드를 제외한 레코드의 문자 수 2,000자까지 지정할 수 있습니다. 

 필드 속성 설정의 문자 수 255자까지 지정할 수 있습니다. 

 



--------------------------------------------------------------------------------


Microsoft Access 데이터베이스 쿼리 사양



 속성 최대 크기



 강제 관계 수 테이블마다 테이블에서 관계에 포함되지 않는 필드나 필드 조합에 대한 인덱스


 수를 32에서 뺀 수까지 지정할 수 있습니다. 

 쿼리의 테이블 수 32개까지 지정할 수 있습니다.



 레코드 집합의 필드 수 255개까지 지정할 수 있습니다. 

 레코드 집합의 크기 1GB까지 지정할 수 있습니다. 

 정렬 제한 하나 이상의 필드에서 255자까지 지정할 수 있습니다.



 중첩된 쿼리의 수준 수 50까지 지정할 수 있습니다. 

 쿼리 디자인 눈금에서 셀의 문자 수 1,024자까지 지정할 수 있습니다. 

 매개 변수 쿼리에서 매개 변수의 문자 수 255자까지 지정할 수 있습니다.



 WHERE나 HAVING 절의 AND 수 40개까지 지정할 수 있습니다. 

 SQL 문의 문자 수 약 64,000자까지 지정할 수 있습니다. 

 



--------------------------------------------------------------------------------


폼 및 보고서 사양



 속성 최대 크기



 레이블의 문자 수 2,048자까지 지정할 수 있습니다. 

 입력란의 문자 수 65,535자까지 지정할 수 있습니다. 

 폼이나 보고서의 너비 22인치(55.87cm)까지 지정할 수 있습니다.



 구역 높이 22인치(55.87cm)까지 지정할 수 있습니다. 

 디자인 보기에서 모든 구역과 구역 머리글을 합한 높이 200인치(508cm)까지 지정할 수 있습니다. 

 중첩된 폼이나 보고서의 수준 수 7까지 지정할 수 있습니다.



 보고서에서 정렬이나 그룹화할 수 있는 필드나 식의 수 10개까지 지정할 수 있습니다. 

 보고서의 머리글과 바닥글 수 보고서 바닥글 하나에 보고서 머리글 하나,


 페이지 바닥글 하나에 페이지 머리글 하나, 그룹 바닥글 하나에 그룹 머리글 10개까지 지정할


 수 있습니다.



 보고서에 인쇄되는 페이지 수 65,536페이지까지 지정할 수 있습니다. 

 폼이나 보고서를 사용하는 동안 추가할 수 있는 컨트롤과 구역의 수 754개까지 지정할 수 있습니다. 

 



--------------------------------------------------------------------------------


매크로 사양



 속성 최대 크기



 매크로의 매크로 함수 개수 999개까지 지정할 수 있습니다. 

 조건의 문자 수 255자까지 지정할 수 있습니다. 

 설명의 문자 수 255자까지 지정할 수 있습니다. 

 매크로 함수 인수의 문자 수 255자까지 지정할 수 있습니다. 


 


VBBank.Net 에서 퍼온 자료입니다. 


본페이지는 CopyLeft 규약을 준수합니다. CopyLeft ⓒ 2000 SuperXT = 박재영




출처 : http://factory.tistory.com/?page=4

Posted by theF
|

 StringReplace(DataBuf,' ','',[rfReplaceAll]) ;


  -> 문제가 가끔 있다.  내가 경험한 빡치는 상황은

텍스트 파일을 while 문으로 한 줄씩 읽고 해당 줄의 공백을 제거 하는건데..

공백 제거가 안된다.  ㅜㅜ


버튼 하나 만들어서 while 안쓰고 하면 잘 된다..



검색해 봤다.while 문으로 공백을 제거하는 간단한 코드가 있다.

존경스럽다.



원문링크


function gfDel32(s: string): string;
begin
 while not(pos(' ',s)=0) do delete(s,pos(' ',s),1);
 result:=s;
end;

아니면 자체 내장함수인 StringReplace 을 사용하면

str := StringReplace(str1, ' ', '', [rfReplaceAll, rfIgnoreCase]);



참고.

원문 블로그 주인분이 암 투병 중이시다.  쾌차하셔서  산좋고 물좋은 곳에서 요양중이시길 바래본다.

Posted by theF
|

 lib 목록


 - Tled, Tindicator, logmeter,scope....




Posted by theF
|

Component 메뉴 - Install Package - Add


델파이 bin 폴더 안에 dclqrt70.bpl 을 선택



끝.

Posted by theF
|

Component -> Install Packages


델파이 7 설치 폴더에 bin


dclSockets70.bpl -> add 



끝  .



Posted by theF
|

var

 

    aHandle : THandle;

    PID : Integer;

 

aHandel := FindWindow ('TfrmMain',nil);                      //첫번째 인자는 클래스명(델파이 제작프로그램)

 

aHandel := FindWindow('NotePad',nil);                          //메모장등은 프로그램명만 

또는

aHandel := FindWindow(nil,'제목 없음 - 메모장');            //캡션만

또는

aHandel := FindWindow('NotePad','제목 없음 - 메모장'); //둘다 알때

Posted by theF
|
procedure TForm1.Button1Click(Sender: TObject);
var
  time1,time2,ptime, msecday : TTimeStamp;
  //msecday1 : Double;
  itmp1, tmp1,tmp2,tmp3, tmp4,tmp5,tmp6,tmp7 : integer;
begin
 //msecday1 := (1/(24*60*60));
  time1 := DateTimeToTimeStamp(StrToDateTime('2000-02-02 02:50:00'));
  time2 := DateTimeToTimeStamp(StrToDateTime('2000-02-03 05:51:20'));

  ptime.Time := time2.Time - time1.Time;
  ptime.Date := time2.Date - time1.Date;

  if ptime.Time < 0 then begin
    Dec(ptime.Date);
    ptime.Time := MSecsPerDay + ptime.Time;
  end;

  edit2.Text := IntToStr(ptime.date * MSecsPerDay + ptime.Time);

  itmp1 := StrToInt(edit2.Text);  //msec

  itmp1 := Trunc(itmp1/1000);


  tmp1 := itmp1 div 86400; //day

  tmp2 := itmp1 mod 86400;

  tmp3 := tmp2 div 3600;  //HH

  tmp4 := tmp2 mod 3600;

  tmp5 := tmp4 div 60;  //NN

  tmp6 := tmp4 mod 60;   //ss

  edit3.Text := IntToStr(tmp1)+'일'+IntToStr(tmp3)+'시간'+IntToStr(tmp5)+'분'+ IntToStr(tmp6)+'초';



end;


두 날짜 뺀후 결과 msec 출력.


해당 msec를 날짜 시간 분 초로 구분...

원문1 : http://newworlds.tistory.com/618

원문2 : http://bloodguy.tistory.com/entry/PHP-%EC%8B%9C%EA%B0%84%EC%9D%84-%EC%B4%88%EB%A1%9C-%ED%99%98%EC%82%B0-%EC%B4%88%EB%A5%BC-%EC%8B%9C%EA%B0%84%EC%9C%BC%EB%A1%9C-%ED%99%98%EC%82%B0



Posted by theF
|



꽤 뒤늦게 윈도우7을 사용하게 되었는데,(그것도 HOME 버젼 ㅜㅜ)

뭐이리 복잡한지...쯧.


델파이 설치하는데 프로그램폴더가 뭔가 애매해서 D:\Borland 폴더에 설치했다.

그리고 실행하니 호환안된다는 겁주는 메시지 출력!!


무시하고 실행!!


잘된다...  ^^;


든데, Ctrl+Alt+F11 키가 안먹는다...   노트북 기능키 문제라 생각되어지는데, 해결책을 찾아 봐야지...


또하나. 도움말 표시가 되지 않는다.


그래서 검색했더니


"윈도우7에는 Winhelp32.exe가 없습니다. 요걸 깔아줘야 합니다.


http://www.microsoft.com/downloads/en/details.aspx?FamilyID=258aa5ec-e3d9-4228-8844-008e02b32a2c 에서 업데이트를 하시면 정상적으로 보이게 됩니다.
"

요래 친절한 답변이 2010년에 올라왔구나..
아~~난 정말 구닥다리에서 노나 보다... ㅜㅜ

근데, 원문님은 기본 폴더에 설치 하셨나 보다. 도움말 파일을 XP에서 복사 붙이기 하신걸 보니.

난 폴더를 따로 빼놔서 그런지 도움말 파일은 다 있었다.
그래서 원문님의 Winhelp32 파일만 다운받아서 다시 f1키 실행하니 잘 된다.





원문 : 

윈도우7에서 델파이7을 설치하고 도움말 동작이 안될경우 해결방법




Posted by theF
|







준비물 

 - 남는 스맛폰 (넥서스S)

 - 거치대.

 - 시거잭용 전원케이블



설치 프로그램 

 - 블랙박스 어플 (카루)



내용.

스맛폰 교체후 남는 공기계인 넥s를 어찌쓸까 고민하던중.

네비게이션과 블랙박스 어플을 설치해서 내비&블박 겸용으로 사용 시도 했으나..


  - 네비는 GPS 만 잡히면 되는  하이드라이브(루센맵 이용) 네비를 이용.

  - 블박 어플은 본 시험에 사용한 카루


완충하고 약 한시간이 못되어 밧데리 조루 증상으로 기기 다운.. 물론 시거잭 충전을 하고 있던 상태였음.


그래서 내비는 포기하고 블박만 테스트 진행.




위 영상과 같이 어디서 주은 거치대 기둥에 박스와 테이프 신공으로 케이스를 만들어 넥s를 설치.

블박 실행후 주행.

회사차량인 마티즈 중간부분에 설치하니 화면이 딱 좋음.


좀 아래나 위에 설치하면 화면조절 꽤 잘해야할 필요 있음.


카루를 잘 활용할 줄 몰라서 그러는지, 간혹 약간에 충격에도 녹화가 되는바...


근데, 개인적으로는 무조건 녹화가 되었으면 좋겠음.

충격을 감지해서 녹화가 되게 한다는거...그거 셋팅 잘못하면 사고나도 녹화 안될수도 있지 않을까?


김기사 네비에 포함된 블박같이 2분이면 2분짜리 영상이 계속 녹화되고 저장되다가

용량이 어느정도 차면 맨 처음 영상을 지우는(쉬프트) 방식의 어플이 있다면 좋겠다.

(함 찾아봐야지..분명히 있을꺼 같다.)



아무튼.. 위 영상과 같이 거치대 등을 막쓰기 위해 만들어 놓으면 

나같이 다양한 차량을 이용해서 운전하는 사람이라면

요래 쓰는것도 좋을듯 싶다.


블박 땟다가 다시 붙이기도 힘들고... ㅋㅋㅋ




아~~~그냥 공짜로 블박이 떨어졌으면 좋겠다 ㅜㅜㅜ


 



Posted by theF
|




오옷~

스맛폰 때문에 mp3 안팔려서 힘들다더만, 스맛폰을 내놨는데...와우~ 가격이   짱이다!!!!!


통신사 안끼고 이정도 가격이면 경쟁력이 있을것 같네...



이참에 가족 다 바꿀까? ^^;

Posted by theF
|


윈 xp 기준..


C:\Documents and Settings\사용자 아이디\Local Settings\Application Data\ucloud\large_file\sc


C:\Documents and Settings\ 사용자 아이디 \Local Settings\Application Data\ucloud\small_file\sc


안에 캐쉬파일... 다 지워도 무방함.


업로드시 자꾸 씨 드라이브의 용량이 증가하길래 밨더니

캐쉬파일이 계속 쌓이네..


검색해보니, 일정기간 지나면 자동 삭제 된다는데

새빨간 거짖말 같은데......



참고 사이트.


http://gsnu.tistory.com/69

Posted by theF
|

..

function MyExitWindows(RebootParam: Longword): Boolean;
var
  TTokenHd: THandle;
  TTokenPvg: TTokenPrivileges;
  cbtpPrevious: DWORD;
  rTTokenPvg: TTokenPrivileges;
  pcbtpPreviousRequired: DWORD;
  tpResult: Boolean;
const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
  begin
    tpResult := OpenProcessToken(GetCurrentProcess(),
      TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
      TTokenHd);
    if tpResult then
    begin
      tpResult := LookupPrivilegeValue(nil,
                                       SE_SHUTDOWN_NAME,
                                       TTokenPvg.Privileges[0].Luid);
      TTokenPvg.PrivilegeCount := 1;
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      cbtpPrevious := SizeOf(rTTokenPvg);
      pcbtpPreviousRequired := 0;
      if tpResult then
        Windows.AdjustTokenPrivileges(TTokenHd,
                                      False,
                                      TTokenPvg,
                                      cbtpPrevious,
                                      rTTokenPvg,
                                      pcbtpPreviousRequired);
    end;
  end;
  Result := ExitWindowsEx(RebootParam, 0);
end;

// Example to shutdown Windows:

procedure TForm1.Button1Click(Sender: TObject);
begin
  MyExitWindows(EWX_POWEROFF or EWX_FORCE);
end;

// Example to reboot Windows:

procedure TForm1.Button1Click(Sender: TObject);
begin
  MyExitWindows(EWX_REBOOT or EWX_FORCE);
end;


// Parameters for MyExitWindows()

출처 : 한국 델파이 개발자 동호회

http://www.delphi.co.kr/?document_srl=157263&act=trackback&key=d5f

Posted by theF
|
 PLC 측에서 PC로  1워드로 전송되는 데이타의 음수/ 양수 구분은 다음과 같이 구분됩니다.

        HEX 값 : 0        ∼ 7FFF  => 양수  (  십진수 :  0 ∼ 32767 )

        HEX 값 : 8000 ∼ FFFF  => 음수  (  십진수 :  32768 ∼ 65535 )  
                                           => PLC  Mointoring  DATA ( -32768 ∼ -1 )

       PLC측의 데이타를 PC에 표시하기 위해서는

     1)   전송되어진 데이타 ( EX) D1 => 16진수) 를 십진수로 전환 하시고 
     2)   십진수로 전환된 데이타값이 32767을 넘는지 아니지를 비교하여 

          0         <    전송데이타의 십진수  <=  32767   :  +
          327698 <=  전송데이타의 십진수  <   65535   :  -
   
          ※ 각각의 기호는 별도의 변수에 저장할것
             
    3)   0  <    전송데이타의 십진수  <=  32767   :  +   => 일 경우 

          전송데이타를 그대로 표시하시고 

    4)   327698 <=  전송데이타의 십진수  <   65535   :  -  => 일경우 

          표시할 데이타  = ( 65535 (FFFF)  - 전송데이타의 십진수 ) + 1 

          => 표시할데이타  앞에 "-" 를 붙인다. ( "-" + 표시할데이타 )

    5)  PC --> PLC로의 전송은 4번의 반대로 하시면 될것 같은데요.

출처 : http://blog.naver.com/yps10th?Redirect=Log&logNo=100033730657





PLC 의 데이터 레지스터에 있는 16진수 값을 PC(VB6.0)로 가져와서

정수로 표현할려고 하는데요 근데 음수도 표현해야 합니다.

양수 음수 표현하기 위해 어떤 방법을 써야 하는지 궁금합니다.


예)
16진수의 데이터(2 바이트) 에 대해서 정수 표현을 할려고 합니다.

그냥 십진수 표현은 Cdec("H&" & 16진수 데이터) 하면 출력이 되는데

음수 표현은 예를 들어 FF9C 같은 16진수는 정수(음수)로 표현하면 

-100이 되어야 합니다.

저 -100은 FFFF - FF9C 를 하면 양수 99가 나오는데 여기에 +1 을하고

(2의 보수와 동일 방법이라 생각이 들어서)

앞에 "-" 문자를 붙여 표시하고 있는데. 

어디서 부터 음수 표현을 해야 할지르 모르겠습니다.

처음에는 FFFF 값이 65535 라 Int 형의 최대 값인 32767 이 넘으면

음수표현하니 정확한 음수 값이 안나와서 현재 16진수 데이터 중 젤 앞자리가 F 이면

"-" & FFFF - 16진수 데이터 + 1 이런식으로 처리하고 있습니다.

궁금한것은 16진수 데이터가 얼마부터 음수로 표현하면 되는지 알려주시면

감사하겠습니다.



LS산전 사이트를 방문해 주셔서 감사합니다.
문의하신 내용에 대한 답변입니다.

문의 주신 내용에 대해서 16진수 1워드의 데이터 계산을 
위해서는 데이터 표시형식을 2가지로 할 수 있습니다.
먼저 Unsigned로 할 경우 데이터 표현이 0~65535로 표시가 됩니다.
이와는 반대로 signed로 할 경우에는 데이터 표현이 -32767~32768까지 표시가 됩니다.
그럼 32768이 넘어서게 되면 -부호로 표시가 되는데 16진수에서 32768이 넘어서게 되는
데이터의 경우 H8000을 넘어서게 되면 음수로 표시가 되게 됩니다.
그렇기 때문에 HEX코드에서 H7FFF까지가 양수가 되고 그 이상일 경우 
음수로 표현됩니다.
확인하여 보시고 문의 사항이 있으시면 문의 주시기 바랍니다.
감사합니다. 좋은 하루 되십시오.



GetValue := PLC 워드 데이터;
if GetValue > 32767 then begin
  GetValue := -(65537 - GetValue - 1) ;
end;
요래 함 되나?
Posted by theF
|

델마당 오익환님이 2003년경에 너그럽게 올려주신 자료를 꼬불쳐 옴.

소스는 없고, dcu만 있으며, 본인은 아직 테스트 해보지 못함.
그러나, demo로 봐서는 따른 그리드 알아볼 필요는 없을듯..

고맙습니다. 익환님...델마당~ 

 
Posted by theF
|

키보드의 F5 키를 눌러,
[이동] 메뉴 하단부의 [옵션]버튼을 눌러 나타 나는 대화창에서
[개체]옵션에 체크 한 후 [확인] 누름.

시트내의 모든 개체(그림, 사진, 도형, 버튼 등)가 선택됨.
 
Delete키를 눌러 개체 삭제.

저장.

끝.


문서 불러서 시트 복사나 셀 복사 한 후 다른이름 저장시
의도하지 않은 데이터(눈에 보이지 않는) 들이 생성되는거 같다.
시트 하나에 A4 용지 문서 있는데 용량이 거진 3메가.
다이어트 하니 23k...

네박사 지식인이 참 고맙다... 
Posted by theF
|

LS GM7 <->MT8070iH 사용중.

4.33 과 4.51 사이의 버전 사용중.

Mreg  외의 IX 와 QX 모니터링 안됨.

reg 번호 잘못 눌러 그런줄 알고 해매다 easyview 홈피 문의.

최신버전 사용 하면 될꺼임 이란 답 받음. 

기존 버전 지우고 4.51 버전  설치.

안됨.

잘 쓰고 있는 회사 동료 버전 4.33 임.

4.33 설치

안됨.

회사동료 PC에서 직접 PLC 및 HMI 소스 가공후 PC 연결해서 테스트 성공.

고로~ 내가 쓰는 PC 문제인 거임.

컴파일된 파일을 내 PC 상에서 HMI에 전송

테스트 성공.

고로~ 프로그램이 병맛인 거임.

안되겠다 싶어 회사동료 PC에서 드라이버 부분만 복사해서 내 PC에 덮어쓰기함.

테스트 성공...  ㅡ,.ㅡ


뭐지 이건?  무...무슨 경우지?

 
Posted by theF
|

DFC-4000 Connector

기술자료 2012. 1. 17. 15:48

DFC-4000 <-> Mykrolis FC-280S 사용중  

KOFLOC 3665 모델 연결 의뢰..

메뉴얼 뒤적이다 성공!!

영어가 안되서 아주 힘들구나...  ㅜ_ㅜ


가스(에어)량 제어하는 기기라는데..


혹시나 나같이 헤매는 사람이 있을지 몰라 자료 올림..





 
Posted by theF
|

구글링으로 얻은 PDF

원 저작자님 감사 합니다.  ^^;



 

응용한 프로그램 소스 중 일부

 - Cport 264 사용..
 - 온도 모니터링 하는데, 가끔 뻑난단다.. 콤포 문젠지 뭔지 감이 안잡힘....젠장.





procedure TfrmMain.ComTmpRxChar(Sender: TObject; Count: Integer);
var
  i:integer;
  RX_Char:char;//수신된 값
  RX_Array:array[1..200]of string;//수신된 데이타
  rx_s : string;
begin

  //ComPort1.Readstr(rx_s,count);
  //Edit_RX.Text := Edit_RX.Text + rx_s;

  //010304021600F81BCD
  for i:=1 to count do begin
    ComTmp.Read(RX_Char,1);
    RX_Array[i]:=inttohex(byte(RX_Char),2);
    RxBuf2:=RxBuf2+RX_Array[i];
  end;

  if (18 = length(RxBuf2)) and (RxBuf2[3] = '0') and (RxBuf2[4] = '4') then begin
    FlterTmp(RxBuf2);
    Edit_Rx.Text := RxBuf2;
    ComTmp.ClearBuffer(True,True);
    RxBuf2 := '';
    exit;
  end;

  if (10 = length(RxBuf2)) and ((RxBuf2[3] = '8') and (RxBuf2[4] = '1')) or ((RxBuf2[3] = '8') and (RxBuf2[4] = '4')) then begin
    FlterTmp(RxBuf2);
    Edit_Rx.Text := RxBuf2;
    ComTmp.ClearBuffer(True,True);
    RxBuf2 := '';
    exit;
  end;



end;

procedure TfrmMain.FlterTmp(tmpstr:string);
var
  i, j, iTag,k, tmparryMax, tmparryMin : integer;
  oStr, iCut1, iCut2, iCut3, iCut4 : string;
  Dcut1, Dcut2, Dcut3, Dcut4 : real;
begin

  tmrERRch.Enabled := False;

  oStr := tmpstr;

  if tmrMoni.Enabled = False then begin
    iTag := StrToInt(edtchNo.text);
  end else begin
    iTag := BtnTmpRead.Tag;
  end;

  if Length(oStr) < 18 then begin
    workD[iTag].iValue := 0;
    workD[iTag].iValue2 := 0;

    TEdit(FindComponent('EdtTemp_'+FormatFloat('00',iTag))).Text := 'ERR';//FormatFloat('0.0',Dcut1);
    TEdit(FindComponent('EdtHy_'+FormatFloat('00',iTag))).Text := 'ERR';//FormatFloat('0.0',Dcut2);

    LogADD('CH'+FormatFloat('00',iTag)+' ERROR '+ oStr);

    if tmrMoni.Enabled = False then begin
      exit;
    end;

  end else begin
    iCut1 := Copy(oStr,1,2); //ID

    iCut2 := Copy(oStr,7,4); //온도
    iCut3 := Copy(oStr,11,4); //습도


    Dcut2 := (StrToIntDef('$'+iCut2,0))/100;
    Dcut3 := (StrToIntDef('$'+iCut3,0))/100;

    workD[iTag].iValue := Dcut2;
    workD[iTag].iValue2 := Dcut3;

    TEdit(FindComponent('EdtTemp_'+FormatFloat('00',iTag))).Text := FormatFloat('0.0',Dcut2);
    TEdit(FindComponent('EdtHy_'+FormatFloat('00',iTag))).Text := FormatFloat('0.0',Dcut3);

    //LogADD('flterRTN');

  end;

  for i:=8 downto 1 do begin
    if workD[i].ichkuse then begin
      tmparryMax := i;
      break;
    end;
  end;

  for i:=1 to 8 do begin
    if workD[i].ichkuse then begin
      tmparryMin := i;
      break;
    end;
  end;

  BtnTmpRead.Tag := BtnTmpRead.Tag +1;

  if BtnTmpRead.Tag > tmparryMax then begin
    BtnTmpRead.Tag := tmparryMin;
    Measuring;
  end;




end;

procedure TfrmMain.BtnTmpReadClick(Sender: TObject);
var
  i,j, k:integer;
  CRC_Data_Len:integer;//CRC 계산에 사용될 데이타 길이
  CRC_Data_Array:array[1..30]of byte;//CRC 계산에 사용될 데이타
  Result_CRC:Word;//계산된 CRC값
  TX_Data_Size:integer;//송신할 데이타 길이
  TX_Data_Array:array[1..32]of byte;//송신할 데이타
  tmpstr : string;
  tmpchV, tmparryMax : integer;
begin

  tmrERRch.Enabled := True;

  for i:=8 downto 1 do begin
    if workD[i].ichkuse then begin
      tmparryMax := i;
      break;
    end;
  end;

  if tmrMoni.Enabled then begin
    for k := BtnTmpRead.Tag to tmparryMax do begin
      if workD[k].ichkuse then begin
        BtnTmpRead.Tag := k;
        Break;
      end;
    end;

    tmpchV := BtnTmpRead.Tag;

    edtchNo.Text := FormatFloat('00',tmpchV);
  end;

  edtchNo.Text := FormatFloat('00',strtoint(edtchNo.Text));

  Edit_Tx.Text := edtchNo.Text + '04' + '0000' + '0002';


  CRC_Data_Len:=round(length(Edit_TX.Text)/2);
  For i:=1 to CRC_Data_Len do begin
    j:=i*2-1;
    CRC_Data_Array[i]:=byte(strtoint('$'+Edit_TX.Text[j]+Edit_TX.Text[j+1]));
  end;

  Result_CRC:=Make_CRCValue(CRC_Data_Array,CRC_Data_Len);
  EdtCRC16.Text:= inttohex(Lo(Result_CRC),2)+inttohex(Hi(Result_CRC),2);


  if (ConfD.iSimulate = True) or (ComTmp.Connected = False) then exit;

  Edit_RX.Text:='';

  tmpstr := Edit_TX.Text + EdtCRC16.Text;

  TX_Data_Size:=round(length(tmpstr)/2);

  For i:=1 to TX_Data_Size do begin
    j:=i*2-1;
    TX_Data_Array[i]:=byte(strtoint('$'+tmpstr[j]+tmpstr[j+1]));
  end;

  ComTmp.Write(TX_Data_Array,TX_Data_Size);


end;

//Table에 의한 CRC값 생성 함수
function TfrmMain.Make_CRCvalue(Data: array of byte; nByte: word): Word;
var
  CRCValue:Word;
  i:integer;
begin
  CRCvalue:=$FFFF;
  For i := 1 to nByte do
    CRCvalue := Hi(CRCvalue) XOR CRC_Table[ Data[i-1] XOR Lo(CRCvalue) ];
  Result:=CRCvalue;
end;

procedure TfrmMain.btntmrstopClick(Sender: TObject);
begin
  tmrMoni.Enabled := not tmrMoni.Enabled;

  if tmrMoni.Enabled then begin
    btntmrstop.Caption := 'Auto Run.';
  end else begin
    btntmrstop.Caption := 'Manual Run.';
  end;
end;
Posted by theF
|
바꾸자, 소리 심하다.



http://blog.giristory.net/291
Posted by theF
|

re] 비트통신법을 알려주세요...ㅡ..ㅡ 
 

안녕하셔요...

음..통신이 시리얼(rs232) 이죠..

그렇다면 비트 또는 니블 통신이라는 것도 결국 바이트 통신과 같습니다.

다만 바이트는 상대편이 한 바이트를 가지고 하나의 정보를 가지는것이고

비트는 한바이트를 가지고 8개의 각각 다른 정보를 가지는것이고

니블은 한바이트를 가지고 2개의 각각 다른 정보를 가지는 것이랍니다.

그럼..예를 들어 볼까요...

1. 비트 통신

비트는 주로 DI,DO등의 접점에 많이 쓰이죠..

한바이트 가지고 8개의 DI,DO를 제어할수 있어닌깐 통신량이 그만큼 줄어들겠죠..

예를 들어 8개의 램프가 있고 이걸 켜고 싶다면(비트로 매핑되어 있을 경우)

실제 데이터는 한바이트만 쓰여지죠..

const 
  BitFieldOn : array[1..8] of Byte = ($01,$02,$04,$08,$10,$20,$40,$80); 
  BitFieldOff : array[1..8] of Byte = ($FE,$FD,$FB,$F7,$EF,$DF,$BF,$7F);

var 
  senddata : Byte;

  senddata := 0; //데이터 초기화

  //1번,7번을 켜고 싶을 경우 
  senddata = senddata or BitFieldOn[1]; 
  senddata = senddata or BitFieldOn[7];

  //전송 
  comport.writechar(senddata);

  //7번을 끄고 싶을 경우 
  senddata = senddata and BitFieldOff[7]; 
  //전송 
  comport.writechar(senddata);

또는 귀찮어시면 다음 함수를 사용하셔도 됩니당.

// 주어진 바이트에서 원하는 비트를 끄잡어 내기.. 
function GetBitFromByte(B : Byte; Count: Integer) : Boolean; 
begin 
  Case Count of 
    0: Result := Boolean((B and $80) shr 7); 
    1: Result := Boolean((B and $40) shr 6); 
    2: Result := Boolean((B and $20) shr 5); 
    3: Result := Boolean((B and $10) shr 4); 
    4: Result := Boolean((B and $08) shr 3); 
    5: Result := Boolean((B and $04) shr 2); 
    6: Result := Boolean((B and $02) shr 1); 
    7: Result := Boolean(B and $01); 
  else 
    Result := True; 
  end; 
end;

// 주어진 바이트에 원하는 비트를 셋팅하기.. 
procedure SetBitToByte(var B : Byte; Count: Integer; Value: Boolean); 
begin 
  Case Count of 
    0: if Value then B := B or $80 else B := B and $7F; 
    1: if Value then B := B or $40 else B := B and $BF; 
    2: if Value then B := B or $20 else B := B and $DF; 
    3: if Value then B := B or $10 else B := B and $EF; 
    4: if Value then B := B or $08 else B := B and $F7; 
    5: if Value then B := B or $04 else B := B and $FB; 
    6: if Value then B := B or $02 else B := B and $FD; 
    7: if Value then B := B or $01 else B := B and $FE; 
  end; 
end;

2. 니블 통신

니블은 주로 카운터를 표시할때 많이 쓰이죠..

예를 들어 자동차 키로수처럼 카운터 메터를 표시할경우 한바이트로 두개의 영역을

표시할수 있어닌깐 이또한 통신 데이터를 줄일수 있겠죠..

예를 들어 9999를 표시한다면 두바이트면 되겠죠..

var 
  aa,bb : Byte; 
begin 
  aa := 0; 
  bb := 0;

  //1234를 전송할 경우 
  aa := ($01 shl 4) or $02; 
  bb := ($03 shl 4) or $04;

  comport.writechar(aa); 
  comport.writechar(bb); 
end;

휴~ 이상 입니당.

그럼..즐거운 주말 되시구요..항상 건강하셔요..

>장비가 10년전거라그러는데요, 지금도 사용잘하고 있답니다. 
>그당시 플을 업그레이드 하면서 제가 델로 하니까 델로 업을 하려는데요 
>비트통신이 되야되거든요... 
>이중에서도 두가지 입니다. 한종류는 비트통신 또하나는 4bit를 한 값으로 
>이용하는 니블통신이요. 
>이자 겨우 바이트 통신을 알게 된지 얼마 안되었는데 
>비트 통신을 하게 되었답니다.. 
>단, 4비트의(니블값) 최고값이 9를 넘지는 않더군요...즉 0 에서 9까지만여 

>지금 고민중이긴 한데 될듯될듯 안되네요...ㅜ..ㅜ 

>예제나 샘플이나 know-where등등 많이 많이 알려주시와요... 
>언릉 끝내야 하거든요.... 

>감사합니다.... 

Posted by theF
|

스맛폰을 가지고는 싶은데 오마오천원이 매우 부담되서 좌절을 느끼고 있는 요즘..
꿩대신 닭이라고 블투스 헤드셋을 구매하였다.

스맛폰과는 전혀 상관 없을수도 있지만..

난 이런 필요성이 절실했다.

핸드폰 손으로 들고 통화하다 보니 심히 어깨가 결리다. 무선으로 귀에 꼽고 즐기고 싶다.

메신져 타자 치는게 귀찮아서 가능하면 음성쳇을 즐기는데..
의자에 앉아 헤드셋을 끼고 있으면 엉덩이가 아프다..
좀 누워서 대화를 즐기고 싶다..모니터도 쳐다보기 싫다.
책보면서 음성쳇을 즐기는 거다.

그래서 열나게 검색했다.

블투스 헤드셋 만오천원선에 저렴한게 많이 나와 있지만.
모노 라는거..... 즉 핸드폰 통화기능만 지원한다는걸 알게 되었다.
그래서 모노는 과감히 패스~

스테레오를 지원하는 블투스 헤드셋이 바로 내가 원하는
핸드폰도 지원되고, 노트북등도 지원되는 타입이라는 걸 알고 스테레오
통화+기타기기 로 다시 검색을 하던중에 가격이 참 착한 기기를 찾게 되었는데 그게 바로 MF230 이다.












블투스 헤드셋은 참 다양한 디자인이 존재 한다.
목에 거는형, 귀에 꼽는형, 헤드폰형 등...

MF230은 귀에 걸치고 꼽는 형이다.
스테레오로 들을때는 충전단자 겸용인 미니USB 포트에 같이 딸려온 이어폰을 꼽고 사용하면 된다.

삼실에서 MP3 틀어 놓고 블투스 연결한 후 삼실 밖에 나와 밨다. 뻥 뚤리지 않아서 그런지 최대 10m인
유효 거리에 미치지 못하고 지지직 거렸다. 한 5미터 될까?

친구한테 블투로 전화를 걸어 봤다..
잘 들리냐는 말에 잘 들린다고 한다. 또 한넘에게 전화를 해 봤다.
잘들리냐는 말에 잘 안들린다고 한다....
친구들 목소리는 볼륨을 조정하여 잘 들리지만 내 목소리는 받는 쪽에 사정에 따라 틀리나 보다.
마이크 음성 증폭(볼륨) 기능이 있었으면 좋을것 같다.


노트북의 블투스랑 연결해 봤다.


 대상 노트북 : WinXP, 블루소레일, 블투스 2.0

연결을 하는데 
   블루스 헤드셋서비스와 블투스 고급오디오서비스
           이렇게 2종류의 연결이 가능했다.

난 고급이 좋아보여서 고급으로 연결했다.  헤드셋도 가능할것 같지만...해보기 귀찮다.

알송을 플레이 해봤다.



어라? 블투스 헤드셋에서 소리가 나지 않는다...
  이런....역시 싼게 비지떡이다...  ㅡ,.ㅡ   하고 혀를 차는중에
    아차! 싶은게 있었다...그건 바로 

             "오디오 장치 설정"


제어판에 사운드 및 오디오 설정을 확인해 봤다.


역시 노트북의 기본 사운드인 리얼텍으로 설정되어 있었다.
블투스 연결되면 자동으로 바뀌는게 아니었나? 하는 의구심도 들었지만.
뭐 어쩌겠는가....내 컴이 병맛인걸....


블투스 오디오 장치도 SCO와 AV가 있는데...
   AV로 해봤다...웬지 친근감이 들지 않는가?  
       그러나, 내 기대와는 달리 헤드셋으로는 소리가 나오지 않았다.
            AV가 뭔지 궁금해 졌지만, 귀찮았다...몰라도 헤드셋 운영에는 지장 없지 않은가! 왜 짧은 인생에 불필요한 지식을 
                 찾느라 낭비 하랴~

아무튼 SCO로 셋팅을 한 후 다시 얄약을 플레이~~~
오홋~ 인터넷 음악방송이 솔솔 내귀에 꽂힌다... 오홋~ 졸라 좋다.... 오홋~


이제 음성쳇의 핵심인 마이크 기능..

마이크 기능도 마찬가지로 오디오 장치에서 블투스 SCO로 셋팅을 하였다.

그리고 윈도우에서 기본 제공되는 녹음기를 실행 시켰다.

녹음 버튼을 누르고 내 목소릴 녹음해 봤다.
근데 삼실에 사람들이 있어서 조용히 예기했더니 정말 작게 녹음이 되었다.
일단 되는건 확인했으니 음량은 패스~


결론.
받자마자 1~2시간 동안 내가 원하는 기능에 대해 테스트 해본 결과. A 을 주고 싶다.  가격대기 매우 착한 기기이다.
물론, 난 음질은 따지지 않는다. 들리고 지지직 거리는 거슬리는 것만 없으면 된다.

현재 안경을 쓰는 내가, 왼쪽 귀에 MF230의 기본 귀걸이를 하고 음악을 듣고 있는게 1시간반 남짓 되고 있다.
슬슬 왼쪽귀걸이 부분이 아려온다. 오래 쓰고 있기에는 힘들거 같다.

스테레오로 듣기위한 한쪽 이어폰..
내가 가진 기기가 하나 밖에 없어서 다른 mf230과 비교하지 못했지만, MF230 USB 단자에 꼽기가 매우 뻑뻑 하다.
꼽고 뺄때 주의하지 않으면 한방에 훅 갈꺼 같다.

mf230 운영중에는 주기적으로 파란LED가 계속 깜빡 거린다...
아....이거 좀...왜 깜빡 거리는데~~눈에 띄잖아~~~삼실에서 한쪽 귀에 꼽고 음악 듣는 중인데
자꾸 깜빡 거리니까 거슬린단다... ㅡ.,ㅡ;;

타 기기와 연결을 안시키고 전원만 킨 상태에서도 깜빡 거린다.
안 깜빡 거리는게 낮지 않을까? 밧데리도 오래 갈꺼고, 눈에 띄어서 좋을게 없는데...
검정테이프로 화면 발라 버려야 겠다...

LED만 어떻게 하면 참 좋겠다.

한가지 더.
음질 관련 해선데.....귀가 트인 분들은 좀 비싼걸로 가시고,
라디오 음악을 들으면서, 인터넷 음악을 들으면서
참 음질이 좋다 하시는 분들에게는 추천하고 싶다.


Posted by theF
|
네이버 지식인

Q:

데이터를 처리해서 시트에 나타나는 것까지 구현을 하였습니다.

그런데 이 데이터들이 그 수가 일정치가 않아서 그 행이 왔다 갔다 하네요.

 그래서 데이터를 그래프로 띄우기 위해 영역을 설정하더라도

 데이터 영역이 새로운 데이터에 대해서는 바뀌는 문제가 있습니다.

  

데이터가 있는 영역까지 그래프를 그릴 수 있는 코드가 있을까요?

 설명도 함께 부탁드립니다...



A:

데이타가 어떤지 모르겠습니다만.....

VBA가 아니더라도 간단히 OFFSET함수를 이용한...

이름정의를 통하여

가능합니다...

 

일명 이런것을 동적차트라고 합니다...

 

아래 동영상에서는.....

이름정의를

이름동적차트 라 하고

참조범위 수식을 =OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A:$A)-1,1)

차트계열참조범위=동적차트간단예_kh.xls!동적범위

입니다...

 http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=102020101&docId=100953536&qb=7JeR7IWAIOywqO2KuCB2YmE=&enc=utf8&section=kin&rank=5&sort=0&spq=0&pid=gvizhloi5Tlssart7LCsss--476123&sid=TDZzYo1YNkwAAFrBFLs


삽입->이름->정의
Posted by theF
|



Posted by theF
|

Tip Google

기술자료 2010. 1. 25. 13:09

intitle:"index of" mp3 if bread


Posted by theF
|

소트 알고리즘.

기술자료 2009. 12. 8. 17:38

몇가지 소트 알고리즘

procedure BubbleSort(Items: TStrings);
var
done: boolean;
i, n: integer;
Dummy: string;
begin
n := Items.Count;

repeat
done := true;
for i := 0 to n - 2 do
if Items[i] > Items[i + 1] then
begin
Dummy := Items[i];
Items[i] := Items[i + 1];
Items[i + 1] := Dummy;

done := false;
end;
until done;
end;


procedure SelectionSort(Items: TStrings);
var
i, n, maxIndex, topIndex: integer;
Dummy: string;
begin
n := Items.Count;

for topIndex := n - 1 downto 1 do
begin
maxIndex := topIndex;
for i := 0 to topIndex - 1 do
if Items[i] > Items[maxIndex] then
maxIndex := i;

Dummy := Items[topIndex];
Items[topIndex] := Items[maxIndex];
Items[maxIndex] := Dummy;
end;
end;


procedure InsertionSort(Items: TStrings);
var
i, Position, n: integer;
Value: string;
Done : boolean;
begin
n := Items.Count;

for i := 1 to n - 1 do
begin
Value := Items[i];
Position := i;
Done := false;

while not done do
begin
if Position <= 0 then
Done := true
else
if Value >= Items[Position - 1] then
Done := true
else
begin
Items[Position] := Items[Position - 1];
Position := Position - 1;
end;
end;

Items[Position] := Value;
end;
end;
Posted by theF
|

mstsc와 mstsc/console

mstsc /console로는 한명만 들어올수 있고 mstsc만으로는 여러명이 될수있음

ex) mstsc /console /v: IP no.   = > 콘솔연결
     
mstsc /v: IP no. = > 일반 터미널 연결

Posted by theF
|

컴퓨터가 맛이 가려 하는 요즘
정리,포맷하기 귀찮아 그냥 쓰고 있지요.

근데 한가지 문제가 생긴 겁니다. 마우스를 한번 클릭했는데도 자꾸 더블클릭으로
인식하는 겁니다.

제어판을 가서 더블클릭 속도를 조절해 봐도 소용 없길래 에휴~귀찮아 하면서
그냥 썻습니다.  ㅡ,.ㅡ;;

그러던중.. 엑셀 작업을 간만에 하려는데 셀 선택만 하면 자꾸 글자 에디트 모드로 들어가 져서 아주 사람 환장 하게 하는 겁니다.

아~ 이거 안당해 본 사람은 말을 하지 마세요 ㅎㅎ

에이~ 하는 마음에 네이년에게 물어 보았습니다. 

저와 같은 증상으로 많은 분들이 고통을 당하고 계시더군요..

한 분의 지식을 클릭해 보았습니다.


이 분의 답변속의 링크를 따라 블로그로 이동을 해 보았습니다.


이분도 지식인의 답변을 캡춰해서 올려놓으셨네요.. ㅎㅎ

답변을 더 확대해서 볼까요?


뭐 이런.....

그런데 댓글들을 보니 해 볼만한 방법인거 같습니다.

원문글은 

http://blog.naver.com/nextman0?Redirect=Log&logNo=120045167605

클릭해서... 한번 봐보시길..

그리고 지금 잡고있는 마우스가 말을 안듣는 다면 그 상태 그대로 두신 후
손을 들어 1~2미터 위에서 주먹을 강하게 쥐시고, 신속하게 내리쳐 주세요..ㅎㅎ

지금 엑셀 작업 흐뭇하게 마치고 글 쓰고 있습니다. ㅋㅋㅋㅋ




Posted by theF
|