달력

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
|

뉴스 다시보기...

일상 2016. 10. 27. 00:07
영화도 아니고, 드라마도 아닌 뉴스를 다시보기 할 줄이야.....

우울하게 흥미진진...한 이 사실이 참 영화스럽다.





(그림1 : 고향에서 얻어온 막걸리에 쥐포를 뜯으며....)




Posted by theF
|




고맙습니다~패북의 어느 분님.


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
|

공기청정기..

일상 2012. 5. 15. 09:30

1. 아바네로


(주)우주엘텍






2. 루바

(주)지웰코리아







아바네로 사진출처 (본사)


http://www.woojueltec.com/





루바 사진출처 (네이버 뉴스에 제품 소개된 후 본사 홈피 트래픽 초과로 다운....역시 미디어의 힘!!!!)

http://www.ulifemall.com/shop/goods/goods_view.php?goodsno=143&category=001




흠....둘 다 비슷 한데, 뭐지?  특허같은거 없는건가? 

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
|
결혼 후 처음 맞는 안사람 생일..
뭔가 크게 해주고 싶은데, 해 줄게 없어 화시근처 번화가에 나가
여성용 머리끈 하나 사고,  파리xxx 에서 생크림 케익을 샀지.

내가 왜 거길 갔을까?, 왜 하필 블루베리에 혹했을까?

케익을 들고 집에와 저녁을 먹고, 케익에 초를 붙이려고 꺼냈는데,
안사람이 블루베리가 너무 꺼림칙 하다고 한다. 보통때면 그냥 먹겠지만
안사람은 임신중이었다. 그래서 케익일 싸들고, 파리xxx 로 같이 동행했지.

난 이 때 까지 생크림 케익은 교환이 안되는줄 꿈에도 몰랐다.

케익을 망가뜨린것도 아니고, 산지 하루가 지난것도 아닌데, 
매장 알바님은 결제가 끝나면 교환 불가 라고 하는데
뭔 말을 그리 사거리 없이 하는지, 지 엄마나, 남친줄 케익 이었어도 저리 말 하려나....쯧쯧..

혼자 갔으면, 큰소리라도 내련만, 같이간 안사람 보기가 너무 민망했다.

돌아오는 길에 너무 약오르고, 화가나 집 근처 파리xxx에 무조건 들어가
점장한테 물었다. 생크림 케익은 교환 안되냐고, 점장은  매장마다 다르지만 대부분은 교환이 안된다고 한다.
아 물론 케익에 이상이 있으면 되겠지.

그래... 이해한다.
내가 사간 케익이 누군가 들고 나갔다가 다시 들어온 케익이라 생각하면 나도 그 케익 사가고 싶지 않으니까...
근데 그걸 말 해줬으면 얼마나 좋았겠는가.

진열장에나, 알바님이

"손님, 본 생크림 케익은 방부제 등이 없어서요, 진열장에서 꺼내서 가져가시면 제품 하자가 없는 경우에는
반품 및 교환이 불가하세요."
 

이렇게 한마디만 해줬어도,  아니, 진열장에 써있기나 했어도 내가 이렇게는 안하지.

문제는 대부분의 제과점이 이런다는것. 파리xxx 만의 문제가 아니라는것.
그리고, 교환이 안된다는걸 모르는 나같은 사람은 정신적인 충격이 매우 크다는것.

케익...언제 사죠?
기념일 이나, 기쁜일 있을때 보통 사지 않나요?

와이프 생일 이었습니다.
임신한 와이프 생일 이었습니다.
결혼후 처음 맡는 임신한 와이프 생일 이었습니다.

케익 하나 잘못 골라 아주 개피 봤습니다.




2012/2/22 내용 추가..


파리바게트 한방 맞고 하루정도 흥분 상태였다가 좀 가라앉았음.
생크림 케이크 교환/환불..업자 입장이나, 또 다른 손님 입장에서 
생각해 보면 교환/환불(단순변심)은 불가한게 맞다는 생각도 듬.

나같이 착한 사람 말고, 
정신이 이상한 사람이 케이크 사가서 티안나게 뭔가를 집어넣고
또 다른 케이크로 교환해 가서 그 걸 재판매 한다면...와우~~~
위에 쓴 이 어두운 생각은 
본인이 즐겨가는 커뮤니티의 몇 분이 댓글 다신 내용으로
댓글 보고 깜놀랐음..

정말 세상이 험하구나....많이 어둡구나~~라고...

그래서 그냥 접기로 했음.
파리 바게트 사장 아줌마 한테 미안함.
본사에 글 올렸는데, 불이익 없길 바람.

아! 내가 올린 글은 험담이 아님. 

이러 이런 일이 있었는데
본사정책은 뭐냐 정책 보내달라 한것 뿐임.

답글이 오긴 했는데.. 
편의점의 경우 고객이 본사에 전화해서 무슨 지점
이란 말만 나와도 해당 지점 평가점수가 마이너스 된다는데
쫌 미안하긴 함.

그렇다고, 내가 잘못했다는건 아님.
소비자의 알 권리를 무시한 제과점 및 해당 업체 들..

"생크림 케이크 환불안됨"을 적어 놓거나, 알려줬다면
이런일은 없었음. 
 
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
|

넥s 쓴지 한 4개월 되가는데요

3g는 100매가 종량이라 와이파이 위주로 쓰는데
요 근래 출장이 잦아서 출장 가면 메일 확인하느라 잠깐 잠깐 3g 켜서 확인하던지
테더링 걸어서 노트북 잠깐 쓰던지 하는데..

한번은 회사사람이랑 통화하고, 3g 키고 메일확인하고 다시 3g 끈 후부터 통화불가..
방금까지 통화가 되던게 통화 불가라 껏다 키면 되겠다 싶어 껏다 키니까
통신망을 찾을수 없다던가? 그 sk나 kt 선택하는거 그게 아예 안뜨는거에요.
막 걸어가면서 4~5번 껏다 킨 후 통화 성공..

여기서 끝이 아닙니다.

그 통화 불가 상태시에 터치 버벅임?  한 10번 누르면 눌러지는 아주 이상한 증상이..
통화 한번 할때마다 껏다키는 짓을 하루동안 한 후...먼가 폰이 이상해졌다 싶었습니다.
근데 지금까지는 3g를 거의 안썻고 와이파이 쓰는동안은
이런 증상은 기미조차 보이지 않았었습니다.

그리고 어제.. 타지에 출장을 가서 3g로 메일 확인후 3g해제후
숙소에서 자고 다음날 핸폰 알람이 안울려 이상하다 싶어 
 핸폰을 보니 먹통되어 있더군요. 전원 버튼을 눌러도 화면이 안켜지고
엄청 열받어서 매우 뜨거웠습니다. 밧데리 뺏다가 꽂아서 해결했습니다.

차타고 오는중 친구와 네이트메신져를 3g를 통해 하는중 3g 표시는 녹색인데
채팅이 안되더니, 1~2분 후에 3g가 꺼져버리는 증상..
3g를 다시 해재한 후 설정 하면 또 되는 기이한 현상... 차타고 이동중이기 때문에 그려려니 했는데
가만히 서 있어도 마찬가지 증상이더라구요.

이건 kt문제일까요 제 넥s문제 일까요?
아니면 둘 다 문제 일까요?

참 희한한건...사무실이나 집에서 무선랜 잡아서 와이파이 쓸때는 이런 일이 
없다는 겁니다 ㅜㅜ




답답한 마음에 넥s 카페에 글을 올려 조언을 기다려 본다.
참 마음에 들었는데..
별로 쓰는사람 없어도, 넌 구글폰이자나 라고 위안 삼으며 많이 이뻐해 주던 녀석이었는데

이런 문제가 생기니까 정이 떨어진다.
통화는 되야 할꺼 아닌가.

마눌님 삐져 있는데 두세번 껏다켜야 통화가 되니... 졸라 싸웠자나..

내가 생각해도
"전화기가 고장나서 전화가 안되는거야...겨우겨우 통화된거라구~끈지마"
이렇게 전화상에 말하는걸 누가 믿겠는가!!! 

어제는 마눌님이 직접 이 증상을 확인 하셨다..
따라서 그 때 그 일이 진짜라는걸 믿어 주셨다....단지...꽤 시간이 지난 부부싸움이 되 버렸지만.


이 케퇴에 샴숑아..... 테스트는 해보고 팔아먹는건지...쯧쯧
스맛폰에 혹한 내가 멍청이지.... ㅜㅜ 

내일 일단 샴숑 서비스를 가봐야지....
 




Posted by theF
|

쿠첸 밥솥..

일상 2011. 5. 27. 15:48



마눌님이 사왔는데 보온시에 지~익...지~~익 거린다.
밥솥이 말도 하나 싶어 쿠첸 고객센타에 문의하니깐

전문용어 뭐라 했는데 쉽게 말하자면 보온 방식에 종류가 있는데

하나는 밥솥 아래 바닥만 데워서 보온하는 방식 
두번째는 밥솥 전체를 구리선으로 감싸서 전기를 통하게 해서 전체를 보온 하는 방식.. 

내가 이해한 바로는 이런 방식이다.

근데 울 집에서 지익 거리는 밥솥이 바로 밭솥 전체에 구리선이 감겨있는 방식으로
원래 그렇다는 고객센터의 대답을 들었다.

원래 이 방식이 소리가 나는건지, 타 사 제품중 동일 방식의 밥통도 그런지는 모르겠다.
비교할 수 없는 이 서러움 ㅜㅜ

정상이라니까 할 말은 없지만,  
소음에 민감함과 동시에 귀찮음을 무릎씀과 동시에, 권리를 찾고자 하는 사람이었다면
이거 리콜 대상이다...... 

밥통사는데 단점도 예기해 줬다면....설명서에 지익 소리에 대한 데시벨 언급이 있었나?

난 귀찮은거 싫고, 대충 살자고, 1~2개월 밖에 안되서 밥은 잘 되니까 패쓰~~~




5~10분 간격으로 지~익 지~익 거리는데 , 잠자는 곳과 밥통이 가까운 거리에 있고, 소리가 울리는 집이라면
본 제품 구매를 고려해 보시길 바란다.

하긴 내가 사는데가 좁고  자는곳과 가까워서 그렇지, 보통 집은 부엌이랑 자는데랑 떨어져 있을테니
그리 신경쓸 일이 아닐지도 모르겠다.

아무튼, 나와 비슷하다면 고려해 보시길..
지~익 지~익 이 소리에 악몽을 꾸게 될지도 모르니까... 



아! 첨부 그림은 리퍼제품 파는 인터넷 사이트에서 퍼왔음.....설마 별일 없겠지... 
Posted by theF
|

아놔~오피 망하네~~

일상 2011. 4. 6. 10:48


www.ohpy.com  

정말 정말 요긴하게 사용하고 있던 개인 저장공간(홈피)인데...

나우콤이 손 놓는거 같습니다.  (아님 나우콤이 망하나?) 

어떤 경유인지는 모르지만..
근4년간 착실히 모아왔던 제 저장소를 급하게 백업 받으려니...그것도 일일이 클릭해서 ㅜㅜ

아...뒷통수 재대로 맞았습니다.
역시 세상에 공짜는 존재하지 않나 봅니다.

아무튼 오피..그동안 고마웠다...

그나저나 쓰는 사람들 꽤 많을텐데...
다 알라나 몰라~ 알림 이멜이 스팸으로 들어왔다는 글도 보이고.....흠.



게시글 주소 : http://www.ohpy.com/4/366#home
 


 
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
|