성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
[정성태] 만드실 수 있습니다. 단지, Unity 엔진 내의 스크립트와 W...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>.NET Micro Framework - 넷두이노 플러스</h1> <p> 크리스마스 선물로 회사에서 ^^ 넷두이노를 받았습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [70186D] 넷두이노 플러스 - 이더넷 기능 SD소켓 포함형 (Netduino Plus) ; <a target='tab' href='http://www.artrobot.co.kr/front/php/product.php?product_no=638'>http://www.artrobot.co.kr/front/php/product.php?product_no=638</a> </pre> <br /> 오~~~ 멋지죠? ^^<br /> <br /> 곧바로 다음의 웹 페이지를 보고 개발환경을 구성해 보았습니다. <br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 개발 환경 구성 ; <a target='tab' href='http://netduino.com/downloads'>http://netduino.com/downloads</a> </pre> <br /> 다음은 설치해야 할 프로그램 목록입니다.<br /> <br /> <ol> <li>Microsoft Visual C# Express 2010 </li> <li>.NET Micro Framework SDK v4.1 (<a target='tab' href='http://www.netduino.com/downloads/MicroFrameworkSDK.msi'>http://www.netduino.com/downloads/MicroFrameworkSDK.msi</a>)</li> <li>Netduino SDK v4.1.0 (32-bit: <a target='tab' href='http://www.netduino.com/downloads/netduinosdk_32bit.exe'>http://www.netduino.com/downloads/netduinosdk_32bit.exe</a>) or Netduino SDK v4.1.0 (64-bit: <a target='tab' href='http://www.netduino.com/downloads/netduinosdk_64bit.exe'>http://www.netduino.com/downloads/netduinosdk_64bit.exe</a>) </li> </ol> <br /> 제 경우에는 Visual Studio 2010이 이미 설치되어 있기 때문에 1번은 생략하고 2번과 3번을 다운로드 받아서 설치했습니다.<br /> <br /> 아래는 .NET Micro Framework SDK 4.1 (QFE1)의 설치 구성 요소입니다.<br /> <br /> <img alt='netduino_startup_1.png' src='/SysWebRes/bbs/netduino_startup_1.png' /><br /> <br /> 설치가 완료되면 "Microsoft Framework SDK Release Notes.txt" 파일이 열리는 데 다음의 사항 정도가 기억해 둘만 합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > === New behavior === 1) DPWS stack is compatible with Windows 7 WSDAPI and WCF4.0 2) Flexibility of the SPI interface has improved 3) Support for Big Endian devices 4) Support for Visual Studio 2010 with multi-targeting of previous .NET MF assemblies and versions from the .NET 4.1 SDK 5) Addition of new SSL and TCP/IP stacks </pre> <br /> Netduino SDK v4.1.0은 제 컴퓨터가 윈도우 8 64비트이기 때문에 64비트 버전을 설치했습니다.<br /> <br /> 모든 게 정상적으로 설치가 되었으면 Visual Studio 2010을 실행하고, "File" / "New" / "Project" 대화창을 띄우면 Visual C# 언어에 "Micro Framework" 범주가 보이고 그 안에 다음의 7개 프로젝트 템플릿이 보입니다.<br /> <br /> <ul> <li>Class Library</li> <li>Console Application</li> <li>Device Emulator</li> <li>Netduino Application</li> <li>Netduino Mini Application</li> <li>Netduino Plus Application</li> <li>Window Application</li> </ul> <br /> 제가 구매한 보드는 "Netduino Plus"이기 때문에 "Netduino Plus Application" 프로젝트를 선택해서 생성하면 다음과 같이 기본 코드가 Program.cs에 포함되어 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > /* 참조 DLL - Microsoft.SPOT.Hardware (C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.1\Assemblies\le\Microsoft.SPOT.Hardware.dll) * 기본적인 하드웨어 정보에 대한 내용을 관리 * Battery, Cpu, I2CDevice, InputPort, OutputPort, SerialPort, SPI, SystemInfo, Utility,... - Microsoft.SPOT.Native (C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.1\Assemblies\le\Microsoft.SPOT.Native.dll) * Debug, SPOT(Smart Personal Objects Technology), 암호화, 하드웨어, 메시징, 터치 등의 기능을 담당 - mscorlib (C:\Program Files (x86)\Microsoft .NET Micro Framework\v4.1\Assemblies\le\mscorlib.dll) * 닷넷 마이크로 프레임워크 실행의 기본이 되는 모듈 - SecretLabs.NETMF.Hardware (C:\Program Files (x86)\Secret Labs\Netduino SDK\Assemblies\v4.1\SecretLabs.NETMF.Hardware.dll) * 넷두이노 제조업체에서 제공, AnalogInput, PWM 클래스 제공 - SecretLabs.NETMF.Hardware.Netduino (C:\Program Files (x86)\Secret Labs\Netduino SDK\Assemblies\v4.1\SecretLabs.NETMF.Hardware.Netduino.dll) * BaudRates, InterruptModes, Pins, RegistorModes, SerialPorts, SPI_Devices 클래스 제공 */ using System; using System.Net; using System.Net.Sockets; using System.Threading; using Microsoft.SPOT; using Microsoft.SPOT.Hardware; using SecretLabs.NETMF.Hardware; using SecretLabs.NETMF.Hardware.NetduinoPlus; namespace NetduinoApplication1 { public class Program { public static void Main() { // write your code here } } } </pre> <br /> 자, 이제 Netduino를 USB 케이블로 컴퓨터에 연결해 볼까요? ^^ 정상적으로 연결되면, 아래의 사진에서는 잘 보이지 않지만 PWR라는 글자 아래의 LED가 환하게 빛납니다.<br /> <br /> <img alt='netduino_startup_2.png' src='/SysWebRes/bbs/netduino_startup_2.png' /><br /> <br /> 그리고 윈도우의 장치 관리자(Device Manager)에 보면 "Universal Serial Bus controllers" 노드에 "Netduino" 항목이 추가된 것을 확인할 수 있습니다. (장치 관리자는 항상 띄워놓는 것이 좋습니다. 가끔씩 넷두이노로 프로그램 배포가 실패하는 것을 장치가 없어지는 것을 보고 판단할 수 있습니다. 이런 때면 USB케이블을 빼고 다시 연결해 주면 됩니다.)<br /> <br /> 그리고 Visual Studio의 프로젝트 속성창에서 USB 영역을 선택하면 "Device" 콤보상자에 "NetduinoPlus_NetduinoPlus" 항목이 보이는데 이를 선택해 줍니다.<br /> <br /> <img alt='netduino_startup_3.png' src='/SysWebRes/bbs/netduino_startup_3.png' /><br /> <br /> ^^ 자, 이제 본격적인... 이 아니라 아주 기초적인 LED 깜빡이는 예제를 작성해 보겠습니다.<br /> <br /> 넷두이노 보드에는 기본적으로 1개의 LED가 장착되어 있습니다. LED는 출력에 해당하므로 OutputPort 클래스를 선택하고 다음과 같이 코딩해 줍니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > OutputPort led = new OutputPort(Pins.ONBOARD_LED, false); // Pins.ONBOARD_LED == 보드에 있는 LED 지정 // false == LED 초기 상태 지정 (만약 이 값이 true이면 LED가 켜짐) </pre> <br /> 그다음부터는 그냥 무한 루프를 돌며 LED에 true/false 값을 반복적으로 쓰기만 하면 LED가 깜빡이는 효과를 얻을 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > public static void Main() { bool ledOn = false; OutputPort led = new OutputPort(Pins.ONBOARD_LED, ledOn); while (true) // 일반적인 프로그램은 종료를 가정하고 프로그램을 만들겠지만, robotics 분야에서는 무한 루프가 보통 사용되지요. { led.Write(ledOn = !ledOn); Thread.Sleep(1000); } } </pre> <br /> 이렇게 만들고 Ctrl + F5 키를 누르면 넷두이노에 배포 후 LED가 깜빡이는 것을 볼 수 있습니다. 물론, F5 키를 눌러 디버깅도 가능합니다. BP(Breakpoint)도 걸리고 변수값도 확인 됩니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 넷두이노 보드에는 기본적으로 스위치가 하나 제공되는 데 이것은 "입력"으로 사용될 수 있습니다. 이것을 사용하는 예제로 다음의 글을 참고했습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [Netduino] LED에 불이 깜빡깜빡! ; <a target='tab' href='http://talkingaboutme.tistory.com/218'>http://talkingaboutme.tistory.com/218</a> </pre> <br /> 코드는 동일하게 따라 했습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > public static void Main() { OutputPort led = new OutputPort(Pins.ONBOARD_LED, false); InputPort sw1 = new InputPort(Pins.ONBOARD_SW1, false, Port.ResistorMode.Disabled); bool switchState = false; while (true) { switchState = sw1.Read(); led.Write(!switchState); } } </pre> <br /> InputPort의 값이 저같은 비전공자에게는 생소합니다. 2번째(glitch), 3번째(resistor) 인자의 값이 문제인데요. 자세한 설명은 위의 글을 참고하세요. ^^<br /> <br /> 이 예제를 실행하면 스위치를 누른 경우 Read에서는 false를 반환하고, 누르지 않은 경우에 true를 반환합니다. "<a target='tab' href='http://talkingaboutme.tistory.com/218'>[Netduino] LED에 불이 깜빡깜빡!</a>" 글에 의하면 펌웨어가 구버전이어서 그렇다고 하는데요. 암튼, 그래서 위에서는 led.Write에 switchState값을 NOT 연산자로 바꿔서 전달하고 있습니다.<br /> <br /> 실행하면 보드위의 스위치를 누르면 LED 불이 들어오고, 떼면 불이 꺼집니다.<br /> <br /> 그나저나, 웹 검색을 해보면 역시나 넷두이노 같은 것은 저 같은 순수 소프트웨어 개발자 입장에서는 별다르게 응용해 볼 것이 없는 것 같습니다. 그래도 아이디어를 한번 내봐야지요. ^^<br /> <br /> 어쨌든, 오늘은 여기까지! ^^<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1332
(왼쪽의 숫자를 입력해야 합니다.)