현실감각 0% :: '컴퓨터 관련' 카테고리의 글 목록 (5 Page)

컴퓨터 관련 2012. 10. 15. 17:21

[C#] 한 컴퓨터에 키보드 여러개 설치하고 각각 입력받기!!



한 컴퓨터에 키보드 여러개 설치하고 각각 입력받기!!

 

 

오늘 회사에서 약간의 말다툼이 있었는데 그 말다툼의 원인은 바로 한 컴퓨터에 여러개의 USB 키보드(혹은 KEYBOARD로 인식되는 기타 USB장치)를 연결하고 그것들을 각각 구분해서 쓸수 있냐는 의문에서 시작되었다. 난 당연히 구분해서 쓸수있다고 했고, 상대방은 안된다고 하길래 텍스트박스 3개 놓고 KEYBOARD 디바이스 3개 설치한 후, 1번 키보드는 1번 텍스트박스, 2번 키보드는 2번 텍스트박스 이런식으로 입력되는 간단한 프로그램을 2시간 안에 만든다에 양주 한병 걸고 신나게 구글링 시작..ㅋㅋ

 

 

검색한지 30분도 안되서 코드프로젝트에서 아래와 같은 글을 발견!ㅋ

 

http://www.codeproject.com/Articles/17123/Using-Raw-Input-from-C-to-handle-multiple-keyboard

 

내용인즉슨 여러대의 디바이스(키보드) 각각의 정보를 출력해주는것인데...

친절하게도 코드까지 첨부되어있다!!

키보드로 이런저런 입력하면 핸들값 뿐만 아니라 키보드의 고유이름, 디바이스 종류까지 싹 긁어올 수 있는데 핸들값은 USB를 뽑고 다시끼거나, 프로그램을 재실행하거나 컴퓨터를 끄거나 하면 변경되는 사항이고 디바이스 종류는 종류가 같으면 다 동일하게 출력되기 때문에 키보드의 고유이름을 가지고 구분하기로 하였다.

 

 

폼을 새로 만들것도 없이 코드프로젝트에서 받은 소스코드를 베이스로 조금 수정해서 완성!!

 

 

 

 

이건 키보드1번(PS/2)으로 입력받았을때의 모습.

 

 

 

 

 

이건 키보드 2번(USB)으로 입력!

 

 

 

 

 

이건 USB 바코드리더기로 바코드를 찍어 입력받았을때의 모습. 바코드리더기도 키보드로 인식된다.

 

 

 

여기서 주목해야할 것이 바로 Name 이다. 이녀석은 컴퓨터를 껏다가 다시 켜도 변경되지가 않기 때문에 충분히 이녀석 하나만으로 디바이스를 구분할 수 있었다.(단, USB를 뽑아서 다른 USB 포트에 꽂았을 경우 바뀌는지는 확인해보지 않았다.) 코드프로젝트에서 다운받은 파일을 보면 InputDevice.cs 파일이 있는데 이녀석은 까보기가 귀찮아서 나중에 시간나면 까보기로 하고 다음과 같이 간단히 디바이스 이름이 동일한지 판단하는 코드만 추가해서 1시간만에 완성!

 

if (e.Keyboard.deviceName.Replace("&", "&&") == "\\\\?\\ACPI#PNP0303#4&&31296f4f&&0#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}")
{
    textBox1.Focus();
}
else if (e.Keyboard.deviceName.Replace("&", "&&") == "\\\\?\\HID#VID_0566&&PID_3032&&MI_00#7&&cacf6ea&&0&&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}")
{
    textBox2.Focus();
}
else

{
    textBox3.Focus();

}

 

 

이런식으로 간단히 코딩해줬는데도 키보드 동시입력(예를들면 1번 키보드는 k를 계속 누르고, 그 중간중간 2번 키보드로 l을 누름)시에 텍스트가 엉키지 않고 모두 제대로 나왔다. 딱히 바로 쓸데가 있는 것은 아니지만 하나의 컴퓨터에 여러개의 바코드리더기를 설치하고 각각 다른 데이터를 입력하는 작업 등을 수행하는 시스템을 만들때 응용하는것도 나쁘지 않을듯.

 

흐흐흐흐 결국 양주는 나의것!!

 

 

 

아래는 소스! (vs2008)

 

 

RawInput.zip

 

 

 

 



컴퓨터 관련 2012. 10. 2. 11:46

C#에서 무료 TTS 사용하기



추석때 집구석에서 할짓없어 이것저것 만들어보다가 TTS가 필요하게 되어서 검색

그러다가 Microsoft사에서 제공하는 무료 TTS 발견!! 물론 License 뭐시기 하는 페이지가 있긴 하지만 뭐 개인용으로 쓸거니 안읽어봐도 무료일듯.

 

 

아참.. TTS를 검색하러 들어온 것이 아닌데 얼떨결에 이 포스트를 봐 버린 사람들에게 TTS를 설명하자면

 

TTS란??

'Text To Speech' 즉 문자열을 말소리로 바꾸어주는 시스템을 의미한다.

뭐 우리 실생활 주변에서 흔히 접할 수 있는데 꼭 예를 들자면..

각종 ATM이나 티켓 자판기를 사용할 때 일만 이천 오백 이십 원 입니다. 하는식으로 또박또박 말해주는 기계음 아가씨가 대표적인 예이고, 기차역에서 어색한 음색의 기계 아줌마(아가씨?)가 "12시 50분에 부산으로 가는 무궁화호 열차가 타는곳 2번, 2번으로 들어오고 있습니다." 하는 것도 TTS의 일종이라 할 수 있겠다.

 

 

 

욜리 쉬운 사용법 따라하기

 

우선 Microsoft사 공식 홈페이지 가서 아래 3개를 다운받는다.

 

 

  http://www.microsoft.com/en-us/download/details.aspx?id=27225 

 

  먼저 모든 컴퓨터에 설치해야 할 런타임 파일을 다운로드 후 설치

 

  당연한 거지만 이놈은 개발 PC 뿐만 아니라 배포 할 PC에도 설치해야 한다.

  License 파일은 가볍게 무시해주고(-_-;;) x64와 x86중에 자신의 컴퓨터에 맞는것을 설치.

  뭘 설치해야 할지 모르겠다면 그냥 x86 고고!~

 

  혹시 링크가 깨질것을 대비해서 아래 첨부

 

 SpeechPlatformRuntime.msi

 

 

 

 

  http://www.microsoft.com/en-us/download/details.aspx?id=27226

 

  두번째로 SDK 설치!!

  이놈은 개발 PC에만 설치하면 된다.

  위엣놈과 마찬가지로 여러가지 파일이 나오는데 x64 또는 x86 둘중 하나 선택해서 설치하면 끝.

  물론 런타임 버전과 동일하게 설치하는 센스는 필수

 

  이녀석도 혹시 링크가 깨질지 모르니 따로 첨부ㅎㅎ

 

 MicrosoftSpeechPlatformSDK.msi

 

 

 

 

 

  http://www.microsoft.com/en-us/download/details.aspx?id=27224

 

  마지막으로 설치할 녀석은 다국어지원 엔진!!

  KR로 검색하면 TELE와 Heami(혜미?)가 나오는데 입맛에 맞게 설치

  이녀석은 용량이 20메가 가까이 되는 관계로 따로 첨부를 못함..ㅠㅠ

 

 

 

아무튼 이 세개를 모두 다운받아 SDK, Runtime, 언어팩 순서대로 설치하고 Visual Studio를 실행!!

 

그담에 할 일은 새 프로젝트를 생성하거나 TTS 서비스가 필요한 프로젝트를 로드하고 그림과 같이 참조 추가(물론 누워서 떡먹기보다 쉬운 C# 참조추가를 못하는 사람은 없겠지만 혹시나 해서...ㅎㅎ)

 

 

 

 

솔루션 탐색기의 참조 항목에서

오른쪽 버튼을 누른 후 참조 추가 클릭.

 

 

 

 

참조 추가 다이얼로그가 나오면 찾아보기 탭을 클릭하고 dll이 설치된 경로

C:\Program Files (x86)\Microsoft SDKs\Speech\v11.0\Assembly

로 가서 Microsoft.Speech.dll 선택하고 확인을 누르면 참조 끝!!

 

 

 

자.. 이제 참조도 모두 끝났고 코딩할때 사용하기만 하면 된다.

간단한 사용법은...

 

우선 참조했어도 사용한다고 말 안해주면 가볍게 씹어버리는 C#님께서 까먹지 않도록

 

using Microsoft.Speech;
using Microsoft.Speech.Synthesis;

 

//이 두녀석 걸어주고..

 

 

SpeechSynthesizer ts = new SpeechSynthesizer();

 

//SpeechSynthesizer 인스턴스 선언해주고

 

 

 

ts.SelectVoice("Microsoft Server Speech Text to Speech Voice (ko-KR, Heami)");

 

//음성 이쁜 혜미씨 목소리로 손수 선택해주고..(물론 다른 음성을 받았으면 그 아가씨(?)로 바꿔줘야함)

 

 

 

ts.SetOutputToDefaultAudioDevice();

 

//아리따운 혜미씨 목소리가 흘러나올 사운드카드를 잡아줘야 하는데.. 잘 모르니까 그냥

//디폴트 오디오 디바이스 잡아주고..

 

 


ts.Speak("메롱?");

 

//인스턴스명.speak("출력하고자 할 문자열"); 과 같은 형식으로 문자열을 목소리로 출력할 수 있다.

 

 

 

이렇게 하면 엄마 목소리만큼이나 익숙한 이름모를 아주머니(이젠 이름을 알아버렸군.. 혜미씨!!)의 목소리로 텍스트를 또박또박 읽어준다.

 

 

 



컴퓨터 관련 2012. 7. 26. 12:16

명함용 QR 코드 주소록 만들기



이번에 우리 부서 명함을 새로 디자인하게 되어서 여차여차 만들고있는데

회사 주소를 비롯해서 휴대폰번호,  팩스번호, 회사전화번호, 이메일 등등등

뭐 그리 복잡하게도 많이 들어가는지...

 

영업용 명함이 아니면 딱 필요한 내용만 들어있는 깔끔한 명함스타일을 좋아하는 편이라서

휴대폰번호와 이메일만 빼고 나머지는 QR-Code로 만들어서 때려박기로 결정!!

 

주소록 QR-Code를 만들기 위해 여기저기 돌아다니다가 발견!!

 

http://zxing.appspot.com/generator/

 

 


콘텐츠를 컨텍 인포메이션으로 설정하니까 쓸것들이 한두개가 아니다..

아무튼 이것저것 쓰고 제네레이트하니까 1초만에 완성!!

내 이름과 페북주소는 뒤늦게 모자이크처리..ㅠㅠㅋㅋ 뭐 어짜피 내 개인정보 인터넷 검색만해도 다나오는데..ㅠ


 

테스트를 위해 스마트폰에 QR-Code 리더 앱을 다운받고 촬영해 보았다.

SCANY 라는 앱을 사용했는데, 다음, 네이트 등 여러 포털사이트에서 제공하는 바코드리더 앱을 사용해도 무방한듯..

 

  

 

 

앱으로 촬영하면...

 




 

이런식으로 텍스트를 가져오는데 전화번호나 이메일로 판단되는 문자열 패턴이 있으면

자동으로 주소록에 추가하기라는 메뉴가 뜨는것 같다.

아무튼 주소록에 추가하기 메뉴 버튼을 누르면...

 

 

 


 

스마트폰 인물정보에 정렬되서 나온다. 이메일이 직장에 들어가는 것이 좀 아쉬움..ㅠ

아마 직장명을 쓰지 않아서인듯.. 직장명을 쓰고 QR-Code를 만들면 제대로 들어갈 듯 싶다.

 

  


 

새로운 연락처 등록 버튼을 누르면 일일이 전화번호, 핸드폰번호를

입력하지 않아도 위와 같이 쉽게 연락처 등록 끝!!ㅋ