문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
cublocapp:an36012:index [2017/10/19 22:24] Comfile Technology 만듦 |
cublocapp:an36012:index [2017/10/19 22:28] (현재) Comfile Technology |
||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== AN36012 - 연속 입력 받기 (터치하고 있는동안 연속적으로 이벤트 발생) ====== | ||
+ | CUTOUCH CT1820에서 터치버튼을 계속 누르고 있을때, 연속적으로 이벤트를 발생시키는 방법을 알아보겠습니다. CT1820내에는 AR1021라는 터치콘트롤러가 내장되어 있는데, 이 콘트롤러의 특정 레지스터를 건드리면, 이러한 기능을 구현하실 수 있습니다. | ||
+ | |||
+ | {{ :cublocapp:an36012:ct1820_touch.jpg?nolink |}} | ||
+ | |||
+ | <html><center> | ||
+ | <iframe width="544" height="306" src="http://serviceapi.nmv.naver.com/flash/convertIframeTag.nhn?vid=6454514AFD3C523929C1182B50C34EC7904B&outKey=V1232c01bd02932fda4fcb9f35e9bb7398afc116c14a433edf9e7b9f35e9bb7398afc" frameborder="no" scrolling="no"></iframe> | ||
+ | </center></html> | ||
+ | |||
+ | <code xbasic> | ||
+ | #include "CT18XX" | ||
+ | Dim I As Integer | ||
+ | Dim PV As Integer | ||
+ | Dim SV As Integer | ||
+ | Dim TX1 As Integer | ||
+ | Dim TY1 As Integer | ||
+ | Ramclear | ||
+ | PV=24 | ||
+ | SV=25 | ||
+ | TouchChip_ReInitial | ||
+ | |||
+ | On Pad Gosub GETTOUCH | ||
+ | |||
+ | Font 2,0 | ||
+ | Menuset 0,2,200,95,250,120 | ||
+ | Menutitle 0,17,4,"UP" | ||
+ | Menuset 1,2,255,95,305,120 | ||
+ | Menutitle 1,11,4,"DOWN" | ||
+ | ' | ||
+ | ' 도씨 캐릭터정의 | ||
+ | ' | ||
+ | Defchr &HDB30,_ | ||
+ | &H00,&H00,&H30,&H00,&H48,&H00,&H48,&H00,_ | ||
+ | &H30,&HE0,&H01,&H10,&H02,&H00,&H02,&H00,_ | ||
+ | &H02,&H00,&H02,&H00,&H02,&H00,&H01,&H10,_ | ||
+ | &H00,&HE0,&H00,&H00,&H00,&H00,&H00,&H00 | ||
+ | |||
+ | |||
+ | |||
+ | Ct18contrast 150 ' LCD CONTRAST SETTING | ||
+ | |||
+ | Font 2,0 | ||
+ | Locate 2,2 | ||
+ | Print "현재온도" | ||
+ | Locate 25,2 | ||
+ | Print "설정온도" | ||
+ | Do | ||
+ | ' 설정온도 | ||
+ | |||
+ | Locate 25,3 | ||
+ | Print Dp(SV,2,0),Chr(&HDB30) | ||
+ | |||
+ | Locate 2,3 | ||
+ | Print Dp(PV,2,0),Chr(&HDB30) | ||
+ | |||
+ | Delay 100 | ||
+ | Loop | ||
+ | |||
+ | GETTOUCH: | ||
+ | TX1 = Sys(10) | ||
+ | TY1 = Sys(11) | ||
+ | |||
+ | ' UP KEY | ||
+ | |||
+ | If Menucheck(0,TX1,TY1) = 1 Then | ||
+ | Menureverse 0 | ||
+ | Ct18beep 5 '키터치음 발생 | ||
+ | SV = SV + 1 | ||
+ | ' Delay 50 | ||
+ | Menureverse 0 | ||
+ | End If | ||
+ | |||
+ | ' DOWN KEY | ||
+ | |||
+ | If Menucheck(1,TX1,TY1) = 1 Then | ||
+ | Menureverse 1 | ||
+ | Ct18beep 5 '키터치음 발생 | ||
+ | SV = SV - 1 | ||
+ | ' Delay 50 | ||
+ | Menureverse 1 | ||
+ | End If | ||
+ | Return | ||
+ | |||
+ | End | ||
+ | |||
+ | |||
+ | Sub TouchChip_ReInitial() | ||
+ | Set I2c 66,65 | ||
+ | _TouchTemp1stValue = Sys(16) 'OS에서 touch칩 인터럽트를 처리못하게 함 (disable) | ||
+ | | ||
+ | TouchChip1byteCommand _TouchChipCmd_Disable_Touch '정지 | ||
+ | Wait 50 | ||
+ | _TouchRegStartAdr = TouchReadStartAdr() 'Register의 시작번지를 알아온다. | ||
+ | Wait 20 | ||
+ | ' &H40 = push only | ||
+ | ' &h41 = push, release | ||
+ | ' &h50 = push, move | ||
+ | TouchChipWriteReg &hc,&h50 '&hc=Touch Mode조정 | ||
+ | Wait 20 | ||
+ | TouchChipWriteReg &h11,255 '&h11=Touch Report Delay조정 (연속해서 누르고있을때, 레포트간의 간격) | ||
+ | Wait 20 | ||
+ | TouchChipWriteReg &ha,10 '&ha=sleep Delay조정 (터치입력을 못처리했을경우, 쓸데없이 딜레이되는것 방지) | ||
+ | Wait 20 | ||
+ | TouchChip1byteCommand _TouchChipCmd_Enable_Touch '시작 | ||
+ | Wait 50 | ||
+ | _TouchTemp1stValue = Sys(15) 'OS에서 touch칩 인터럽트를 처리하게 함 (enable) | ||
+ | End Sub | ||
+ | |||
+ | </code> | ||
+ | |||
+ | 맨 아래있는 TouchChip_ReInitial Sub부프로그램을 눈여겨 보세요. 이 부프로그램이 바로 터치콘트롤러를 셋팅해주는 부분입니다. | ||
+ | |||
+ | 다시 한번만 입력되는 모드로 바꾸고 싶다면, 위 부프로그램중 TouchChipWriteReg &hc,&h50을 TouchChipWriteReg &hc,&h40 으로 변경하면 됩니다. (&hc 레지스터의 값을 &h40으로 바꿈) | ||
+ | |||
+ | [[cublocapp:index|한단계 위로]] |