2013-02-24 5 views
0

Win32 API를 사용하여 직렬 포트에 연결하기위한 자체 작은 라이브러리를 작성하려고합니다. 불행히도 내가 찾은 sample code은 kernel32.dll (내가 할 수있는)을 사용하지만 createFile 명령은 접두어 win32Com을 사용합니다.이 접두사는 내가 사용해야하는 일부 네임 스페이스의 일부입니다. 불행히도 나는 그것을 이해할 수없고, 멍청한 놈이기 때문에 이것이 내가 포함 할 필요가있는 참조인지 아닌지 알아내는 방법을 모른다.win32Com 사용 (현재 컨텍스트에 존재하지 않음)

누구든지이 작업을 수행하는 방법을 설명하는 샘플 코드를 알려줄 수 있습니까? 또는 내가 어디로 잘못 가고 있는지 말해 주시겠습니까? 내 '사용'섹션과 DllImport뿐만 아니라 아래 파일을 만들려고 노력하고 있습니다.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.IO.Ports; 
using System.Runtime.InteropServices; 
using System.Text; 
using System.Windows.Forms; 

좀 더 코드가 양식을 초기화 여기에있다 등

[DllImport("kernel32.dll", SetLastError = true)] 
     internal static extern IntPtr CreateFile(String lpFileName, 
      UInt32 dwDesiredAccess, UInt32 dwShareMode, 
      IntPtr lpSecurityAttributes, UInt32 dwCreationDisposition, 
      UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile); 

하지만 다음을 사용할 때, 나는 오류 얻을 : 난 The name 'Win32Com' does not exist in the current context.

hPort = Win32Com.CreateFile(cs.port, 
       Win32Com.GENERIC_READ | Win32Com.GENERIC_WRITE, 0, IntPtr.Zero, 
       Win32Com.OPEN_EXISTING, Win32Com.FILE_FLAG_OVERLAPPED, 
       IntPtr.Zero); 

을 이것이 내가하고있는 간단한 실수이지만, 불행하게도 나는이 시점에서 스킬 셋을 찾지 못했다.

미리 감사드립니다.

+1

호기심에서 벗어나 System.IO.Ports.SerialPort를 사용할 수없는 이유는 무엇입니까? http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx –

+1

그건 내가 역사적으로 한 일이다. 불행하게도 System.IO.Ports.SerialPort는 아주 잘 수행되지 않았다. 즉, 하드웨어의 약 75 %에서만 작동합니다. [여기 내 스레드] (http://stackoverflow.com/questions/14885288/io-exception-error-when-using-serialport-open) 및 [내 다른 하나의] (http://stackoverflow.com/questions/) 15014137/how-to-ignore-an-exception-and-complete-the-try) 이유를 설명하십시오. 매우 실망 스럽지만이 질문을 게시하는 이유를 설명합니다. – tmwoods

답변

1

당신의 링크에는 "Win32Com은 P/Invoke를 통해 사용할 API 함수, 구조 및 상수의 정적 정의를위한 컨테이너로 사용되는 도우미 클래스입니다." 그래서 당신은 그것을 만들고 다음 선언을 넣어야합니다. CreateFile. 이 작업 방법을 이해하려면 P/Invoke에 대해서도 읽어야합니다.

+0

좋아, 이건 나에게 좋은 출발점이다. 이것들은 그 중 50 %를 이해하기 전에 약 6 번 읽어야 할 것들입니다. 그러나 그것은 새로운 주제를 배우는 본질입니다. 고마워, 나중에 다시보고 할게. – tmwoods