2011년 8월 23일 화요일

CublocStudio 인터럽트 입력확장

CublocStudio에서 인터럽트 입력 주의
2011-8-24 chaejoo@lifentech. c o m

CublocStudio에서 사용하는 Ladder Interrupt에서 다음과 같은 경우.

Const Device = CB280
Usepin 11,In
Usepin 12,In
Usepin 13,In
Dim A As Byte
'//8 비트,NONE 패리티,1 스톱비트로 설정 //수신버퍼는 30~100 이하, 송신버퍼는 30~50 이하로
Opencom 1, 19200, 3, 30, 20
Set Ladder On
On Ladderint Gosub OCCURINT
On Recv1 Gosub RECV_1
Do
Loop
OCCURINT:
 Putstr 1,Dec _D(0),Cr
Return
RECV_1:
 A = Get(1,1)
 Put 1,A,1
Return

바로 LADDER 인터럽트를 이용하는 것입니다. 레더는 10mS 마다 루프를 돌기 때문에 어떤 입력 핀의 변화를 감지할 수 있습니다. P11과 P12, P13의 입력 핀이 LOW 에서 HIGH 로 바뀌었을 때 ON LADDERINT 가 발생되도록 하는 것입니다.  

이 방법을 사용할 때 유의할 점은 LADDER LOGIC 의 스캔타임이 10mS 라는 점입니다. 즉, 10mS 보다 짧은 펄 스가 발생되는 신호라면 이 방법을 사용할 수 없습니다. 적어도 30mS 이상 되는 신호에 사용하는 것이 좋습니다.
또한 이 방법으로, 동시에 여러 개의 입력신호를 받아들이지 못합니다. 만약 동시에 입력이 들어온다면, 레더로직 상의 가장 아래쪽에 위치한 신호만 검출됩니다. 위의 경우 P13에 뭔가가 걸려서 계속 HIGH상태가 유지되는 상태에서 P11, P12에  LOW 에서 HIGH 가 되었다고 하더라도 P13 인터럽트 처리가 만료되지 않을 것으로 간주 됩니다. 이런 점을 감안하고 사용하시기 바랍니다.

그래서:  다음과 같이 바꾸었습니다.

Const Device = CB280
Usepin 11,In
Usepin 12,In
Usepin 13,In
Usepin 41,Out
Usepin 42,Out
Dim A As Byte
Dim A1 As Byte
Dim A2 As Byte
Dim A3 As Byte
'//8 비트,NONE 패리티,1 스톱비트로 설정 //수신버퍼는 30~100 이하, 송신버퍼는 30~50 이하로
Opencom 1, 19200, 3, 30, 20
On Recv1 Gosub RECV_1
Do
 Out 41,In(11)
 Out 42,In(12)
 If In(11)=0 Then A1=0
   If In(11)=1  And A1=0 Then
    A1 = 1
      Putstr 1,Dec A1,Cr
 Endif
 If In(12)=0 Then A2 = 0
   If In(12)=1  And A2 = 0 Then
  A2 = 2
      Putstr 1,Dec A2,Cr
 Endif
 If In(13)=0 Then A3 = 0
   If In(13)=1 And A3 = 0 Then
  A3 = 3
      Putstr 1,Dec A3,Cr
 Endif
Loop
OCCURINT:
 Putstr 1,Dec _D(0),Cr
Return
RECV_1:
 A = Get(1,1)
 Put 1,A,1
Return

2011년 8월 21일 일요일

혹성 탈출 - 진화의 시작


  벤자민 버튼의 얼굴이 어떻게 만들어 졌는지에 대한 내용의 TED 강연이 있다.  여기에서 모션 캡쳐에 대한 한계점을 지적하고 있다. 감정 표현의 한계점이 있다는 것이다.  누가 로저래빗을모함했나, 백투더퓨처의 저매키스 감독이 최근에 폴라익스프레스, 크리스마스캐롤, 화성은 엄마가 필요해 등에서 추구하는 영화적 방법인데, 90년대 unix 앤트와 80년대 페르시아왕자에서나 볼법한 과도기적 영상처럼 느껴진다.
  이물질 - 머리카락을 검출하는 기술을 발전시켜온 면에서 보면, 새로운 시도가 영화에서 도입되고 있다.  대학원에서 연구나 쓰이는 기술을 영화에 사용하는 발전을 이룩한 것이다. 형광물질을 얼굴에 도포하여 표정을 잡아내고 이를 데이터베이스화하여 사용하는 방법이라는 것이다.
  이물질  특히 머리카락은 가시광선에서는 다른 바탕과 혼동되기 쉬운 부분이다. 그래서, 여러가지 데이터베이스를 활용하고, 또한, 머리카락의 특성인 직진성과 스파이럴성을 수학적으로 계산하여 걸러내는 방법을 사용하게 된는데, 장치가 민감하게 반응하는 면이 있다.  TED에서는 대략이를 보톡스 효과라고 소개하고 있는 듯하다. (에러를 제도권으로 끌어들이는 이름짓기)  이러한 에러를 줄이기 위하여 형광물질을 도포하는 방법등을 사용해 볼 수 도 있을 듯하다.

  혹성 탈출 - 진화의 시작에 사용된 특수효과(이모션켑쳐)가 어떤것이 되었든, 그 드라마적인 요소에 자연스럽게 녹아있는 것은 훌륭하다.  드라마에서 진화의 시작은 치매를 치료하는 약물이다. - 당시의 주인공 배우 찰톤 헤스톤은 노인성 치매가 원인이 되어 병사함. -
  쥬라기공원의 아이디어 이후로 아주 성공적인 아이디어인 것 같다.

  그런데, 문득, 정말 진화의 시작이 치매의 치료제에서 시작된 것은 아닐까?
  태초에 포도주를 만들어 먹기 시작한 것과 손오공이 술을 좋아한다는 사실에서...

소량의 알코올이 알츠하이머병(노인성 치매) 위험을 막는 데 도움이 된다는 연구결과가 나왔다. 미국 로욜라대학 의과대학 분자약리학교수 에드워드 니프시(Edward Neafsey) 박사는 남성은 하루 두 잔, 여성은 하루 한 잔의 술이 치매와 다른 형태의 인지기능손상 위험을 평균 23% 낮추어 주는 효과가 있다고 밝힌 것으로 헬스데이 뉴스가 16일 보도했다. 니프시 박사는 총 36만5천여명이 대상이 된 143건의 관련 연구논문을 종합분석한 결과 이 같은 사실이 밝혀졌다고 말했다. 한편 술을 하루 3-5잔 이상 마시는 경우는 치매나 인지기능 손상 위험이 높아지는 것으로 나타났으나 통계학적으로 의미가 있는 정도는 아니었다고 니프시 박사는 밝혔다. 알코올의 종류로는 포도주가 맥주나 독주에 비해 치매 예방 효과가 큰 것으로 나타났다. 연령, 성별, 교육수준, 흡연 등 다른 요인들을 고려했지만 결과에는 변함이 없었다. 니프시 박사는 소량의 술이 인지기능 저하를 억제하는 정확한 이유는 알 수 없으나 알코올이 뇌의 혈류와 함께 뇌의 대사활동을 개선하기 때문으로 생각된다고 설명했다. 그는 또 소량의 알코올은 뇌 세포에 약간의 스트레스를 줌으로써 치매로 이어질 수 있는 더 큰 스트레스에 대처할 수 있는 능력을 높여줄 수도 있을 것이라고 말했다. 이에 대해 미국 뉴욕 랜곤 메디컬센터 기억평가-치료센터(Center for Memory Evaluation and Treatment)실장 제임스 갤빈(James Galvin) 박사는 포도주가 곁들여지는 지중해 식단, 운동, 사회활동, 낙관적인 사고 등이 치매위험을 낮추어 주는 효과가 있듯이 심장건강에 유익한 생활습관이 뇌의 건강에도 도움이 되는 것으로 보인다고 논평했다. 이 연구결과는 '신경정신질환-치료(Neuropsychiatric Disease and Treatment)' 8월호에 발표되었다.

2011년 8월 16일 화요일

2011년 8월 15일 월요일

구글 사전을 쓸수 없다네. 스마트폰에서 유용했는데.

"Google Dictionary was recently integrated into Google Web Search. Simply search for "define X" where X is the word you want to look up. Clicking on the "more" link (or on the toolbelt "Dictionary" link on the left) will give you practically the same experience that was available on dictionary.google.com.

We're working hard to make the dictionary experience even better on google.com so it will be easier for our users to get the dictionary experience without the need to go to a separate property."

"구글 사전은 최근 구글 웹 검색에 통합되었습니다. 검색은 "define X(찾고 싶은 말)"을 검색 창에 입력하는 것으로 대체되었습니다. '

우리들은 Google.com에서 사전 기능을 더 잘 사용할 수 있도록 현재 개발 중이며, 모든 사용자들이 '사전'과 '검색'의 영역을 따로따로 분리하지 않고 쉽게 통합하여 사용할 수 있게 될 것입니다.

2011년 8월 10일 수요일

MFC에서 Spin Control button 사용하기

Spin Ctrl 이 edit box 와 상호 작용하기 위해서 연결해주어야 한다. 이 연결을 자동을 해주는 옵션이 있는데 Spin Control 의 Properties에 들어가면 다음 화면에서 Auto buddySet buddy integer를 체크 해주면 된다. 그려면 Tab order(Tab을 누르면 포커스가 움직이는 순서)에 따라 앞에 따라오는 Control 과 자동으로 버디를 맺을 수 있게 해준다.


//******************************************
////기본 레인지는 0~100이므로 변경해주어야 한다.
//******************************************
void SetRange( int nLower, int nUpper );
:
조종할 값의 범위를 설정하는 함수

//******************************************
////증감 버튼이 바뀌어서 작동하므로 , 증감을 0,-1로 변경한다.
//******************************************
BOOL
SetAccel( int nAccel, UDACCEL* pAccel );
:
한번에 바뀌는 숫자의 크기와 값이 변경되는 시간을 설정하는 함수이다. 이를 위해 UDACCEL이라는 구조체를 사용하는데 다음과 같다.

typedef struct {
UINT nSec; //
시간 Interval
UINT nInc; //
증감 Interval
}UDACCEL, FAR *LPUDACCEL;


ex 1)
UpdateData(TRUE);
m_FlowRateSpin.SetRange(-5,5); //-5~5까지
UDACCEL accels[]={{0,-1}}; //increment
m_FlowRateSpin.SetAccel(1,accels);

ex 2)
void CGTermDlg::OnDeltaposFlowratespin(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
// TODO: Add your control notification handler code here
int value(0);
CString str;
value = ((int)(short)LOWORD(m_FlowRateSpin.GetPos()));
str.Format("%.1f",(float)value/10);
SetDlgItemText(IDC_FLOWRATE,str);
m_FlowRate = (float)value/10;

*pResult = 0;
}

2011년 8월 8일 월요일

XP에서도 USB 선택적 절전모드 부분 설정


1. 시작을 클릭하고 실행을 클릭합니다.

  참고 Windows Vista를 실행하고 있는 경우 시작을 클릭한 후 검색 시작 상자를 사용합니다.

2. regedit를 입력한 다음 확인을 클릭합니다. 레지스트리 편집기가 열립니다.

3. 다음 레지스트리 하위 키를 찾아서 클릭합니다.
  HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\USB

4. DisableSelectiveSuspend 레지스트리 항목이 있는 경우 두 번 클릭하고, 이 항목이 없는 경우 항목을 만듭니다. 이 항목을 만들려면 다음과 같이 하십시오.
     a. 편집 메뉴에서 새로 만들기를 가리킨 다음 DWORD 값을 클릭합니다.
     b. DisableSelectiveSuspend를 입력한 다음 Enter 키를 누릅니다.
     c. 편집 메뉴에서 수정을 클릭합니다.

5. 값 데이터 필드에 1을 입력하여 선택적 절전 모드 기능을 사용하지 않도록 설정한 후 확인을 클릭합니다.



출처 : USB 장치를 제거하거나 삽입한 후 USB 포트가 작동하지 않을 수 있음

이상과 같이 설정하시면 XP에서도 USB 선택적 절전모드 부분을 설정하실수 있습니다.

이 기능을 끔으로서 아래와 같은 상황을 줄일수 있습니다.