Я пытаюсь использовать Win32 API для написания моей собственной небольшой библиотеки для подключения к последовательному порту. К сожалению, все sample code, которые я нашел, используют kernel32.dll (что я могу сделать), но команда createFile использует префикс win32Com, который я предполагаю, является частью некоторого пространства имен, которое мне нужно использовать. К сожалению, я не могу понять это, и, будучи нобом, я не знаю, как узнать, есть ли эта ссылка, которую мне нужно включить, или что-то еще.Использование win32Com (не существует в текущем контексте)
Может ли кто-нибудь указать мне пример кода, который объясняет, как это сделать? Или скажите мне, где я ошибаюсь? Я буду включать раздел «usings» и 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);
Я уверен, что это простая ошибка, которую я делаю, но, к сожалению, у меня нет набора навыков в этот момент, чтобы узнать, где это.
Заранее благодарен!
Просто из любопытства, почему вы не можете использовать System.IO.Ports.SerialPort? http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx –
Это то, что я сделал исторически, к сожалению System.IO.Ports.SerialPort выполняется довольно плохо; то есть он работает только с примерно 75% оборудования. [My thread here] (http://stackoverflow.com/questions/14885288/io-exception-error-when-using-serialport-open) и [мой другой здесь] (http://stackoverflow.com/questions/ 15014137/how-to-ignore-the-exception-and-complete-the-try) объясните, почему. Очень разочаровывает, но объясняет, почему я публикую этот вопрос :) – tmwoods