Есть плата под ISA порт, у нее есть драйвер, она зарегестрирована в диспетчере устройств под именем IOPLATA.
В работе на с++ к ней обращаешься следующим образом:
CString sDriverName;
sDriverName.Format("\\\\.\\%s", s); /// sDriverName = "\\.\IOPLATA"
dm32Handle = CreateFile(
sDriverName, /// Имя файла
GENERIC_READ | GENERIC_WRITE, /// Опрределяем тип доступа к файлу - чтение и запись
0, /// определяем способ разделения ресурса - монопольное использование
NULL, /// может ли объект(ресурс) буть наследуемым? - нет
OPEN_EXISTING, /// тип (и способ) открываемого ресурса - существующий
NULL, /// атрибуты и флаги ресурса - как для монопольно исп. ресурса
NULL); /// не есть временный ресурс
Как мне открыть с ней соединение в .NET на с#?
Если использовать System.IO.Ports.SerialPort("IOPLATA") — сработает корректно?
Или мне нужно использовать какой-нибудь другой класс? Какой?
Re: Работа с платой ввода вывода. (срочно нужны советы)
Hello, "Mars_RKK" . > Есть плата под ISA порт, у нее есть драйвер, она зарегестрирована в диспетчере устройств под именем IOPLATA. > Как мне открыть с ней соединение в .NET на с#? > Если использовать System.IO.Ports.SerialPort("IOPLATA") — сработает корректно? > Или мне нужно использовать какой-нибудь другой класс? Какой?
Простой вариант — импортировать CreateFile в C# а дальше, полученный Handle передать в конструктор класса FileStream. После этого, работать с платой через методы класса Stream
Posted via RSDN NNTP Server 2.0
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Работа с платой ввода вывода. (срочно нужны советы)
Здравствуйте, int13h, Вы писали:
I>Здравствуйте, TK, Вы писали: I>А чожно через System.IO.File.Open ?
Попробуй. Могут быть проблемы с проверкой привилегий кода на указанный путь.
1.2.0 alpha rev. 655
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Работа с платой ввода вывода. (срочно нужны советы)
Здравствуйте, Mars_RKK, Вы писали: M_R>Если использовать System.IO.Ports.SerialPort("IOPLATA") — сработает корректно?
Не — будет exception.
Там занятная проверка аргументов Если имя порта не начинается с COM/com — то ArgumentException
Зачем? У них спросить нужно
Re[4]: Работа с платой ввода вывода. (срочно нужны советы)
Здравствуйте, Sinclair, Вы писали:
I>>А чожно через System.IO.File.Open ? S>Попробуй. Могут быть проблемы с проверкой привилегий кода на указанный путь.
Нет, дрова таким макаром открывать нельзя.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Работа с платой ввода вывода. (срочно нужны советы)
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, Mars_RKK, Вы писали:
M_R>>Если использовать System.IO.Ports.SerialPort("IOPLATA") — сработает корректно? M_R>>Или мне нужно использовать какой-нибудь другой класс? Какой?
V>Бери это V>Там есть DriverLib и в нем есть DeviceStream.cs — это то, что надо. (Код писался более 3-х лет назад, так что не пинайте... зато работает)
Спасибо, но нужно самому написатьь...
Re[2]: Работа с платой ввода вывода. (срочно нужны советы)
Здравствуйте, TK, Вы писали:
TK>Hello, "Mars_RKK" . >> Есть плата под ISA порт, у нее есть драйвер, она зарегестрирована в диспетчере устройств под именем IOPLATA. >> Как мне открыть с ней соединение в .NET на с#? >> Если использовать System.IO.Ports.SerialPort("IOPLATA") — сработает корректно? >> Или мне нужно использовать какой-нибудь другой класс? Какой?
TK>Простой вариант — импортировать CreateFile в C# а дальше, полученный Handle передать в конструктор класса FileStream. После этого, работать с платой через методы класса Stream
неужели нет ниодного стандартного метода по работе с дровами в С#
Re[3]: Работа с платой ввода вывода. (срочно нужны советы)
V>>Бери это V>>Там есть DriverLib и в нем есть DeviceStream.cs — это то, что надо. (Код писался более 3-х лет назад, так что не пинайте... зато работает)
M_R>Спасибо, но нужно самому написатьь...
Просто мне она необхалдимо чтобы произвести чтение с помоью драйвера по определенному адресу.
Проблемма в том, что мне нужнно в параметр lpInBuffer передать некую структуру, причем созданную самостоятельно, как это сделать?
Можно ли это сделать без использования данной функции? Стандартными средствами Framework.
Еще как в с# объявить масив из четырех чисел типа int
и можно ли объявлять структуру внутри класса, какие правила на вызов члена этой структуры?
Заранее спасибо Иван.
Re[2]: Помогите закончить решение, подкорректировать его
Здравствуйте, Mars_RKK, Вы писали:
M_R>Вообщем в стандартных классах Framework я не нашел ничего подходящего и решился на использование ядра kernel32
M_R>Проблемма с вызовом функции
M_R>[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)] M_R>static extern bool DeviceIoControl(IntPtr hDevice, uint dwIoControlCode, M_R>IntPtr lpInBuffer, uint nInBufferSize, M_R>IntPtr lpOutBuffer, uint nOutBufferSize, M_R>out uint lpBytesReturned, IntPtr lpOverlapped);
M_R>Просто мне она необхалдимо чтобы произвести чтение с помоью драйвера по определенному адресу. M_R>Проблемма в том, что мне нужнно в параметр lpInBuffer передать некую структуру, причем созданную самостоятельно, как это сделать?
Работа с платой ввода вывода. (срочно нужны советы)
От:
Аноним
Дата:
18.12.06 05:26
Оценка:
Дальше по логике должна быть работа через API DeviceIOControl
Других вариантов нету...
Либо есть другая альтернатива...
Поставить родные драйвера и работать с ней через родные библиотеки.
Третий вариант — работа напрямую с портами (inport, outport). Но это под NT не так просто сделать... всё равно придётся через драйвер лазить... под 9х без проблем
dm32Handle = CreateFile(
sDriverName, /// Имя файла
GENERIC_READ | GENERIC_WRITE, /// Опрределяем тип доступа к файлу — чтение и запись
0, /// определяем способ разделения ресурса — монопольное использование
NULL, /// может ли объект(ресурс) буть наследуемым? — нет
OPEN_EXISTING, /// тип (и способ) открываемого ресурса — существующий
NULL, /// атрибуты и флаги ресурса — как для монопольно исп. ресурса
NULL); /// не есть временный ресурс
Как мне открыть с ней соединение в .NET на с#?
Если использовать System.IO.Ports.SerialPort("IOPLATA") — сработает корректно?
Или мне нужно использовать какой-нибудь другой класс? Какой?
а правда можно использовать после \\.\ имя платы, какое оторбажается в диспетчере устройств ?
"эх женщины-женщины... понаражают сами себя
а нам потом расхлёбывать.."
(КВН ЛУНа)