JavaScript Menu, DHTML Menu Powered By Milonic
комсомольск-на-амуре
komcity.ru
новости форум поиск
login   pass 
  ФОРУМ / КОМПЬЮТЕРЫ И МОБИЛЬНЫЕ ТЕХНОЛОГИИ / Программирование
  создать новую тему написать сообщение  
14:23 15 марта 2005
тема Программирование наверх
 
  мифка
сообщений: 240
Отправить письмо через веб-интерфейс
Народ такой вопросик кто нибудь писал на си под винду прогу управления через LPT порт?
И какие советы будут?
Задача такова таймер на включение и выключения объектов.

 
23:40 16 марта 2005
тема Программирование наверх
 
  sc.
сообщений: 529
Отправить письмо через веб-интерфейс
Могу дать ссылки:
Hardware Interface Programming in VC++ - Part I (Port Access)
И там внизу статьи еще:
Driver Development Part 1: Introduction to Drivers
This article will go into the basics of creating a simple driver.
Driver Development Part 2: Introduction to Implementing IOCTLs
This article will go deeper into the basics of creating a simple driver.
A simple demo for WDM Driver development
WDM Driver programming introduction with three Pseudo Drivers.
API hooking revealed
The article demonstrates how to build a user mode Win32 API spying system

Также следует почитать Microsoft Platform SDK Help. Вот пример оттуда для СОМ порта, для LPT наверное аналогично, сам не пробовал

 
23:41 16 марта 2005
тема Программирование наверх
 
  sc.
сообщений: 529
Отправить письмо через веб-интерфейс
/* A sample program to illustrate setting up a serial port. */

#include <windows.h>

int main(int argc, char *argv[])
{
DCB dcb;
HANDLE hCom;
BOOL fSuccess;
char *pcCommPort = "COM2";

hCom = CreateFile( pcCommPort,
GENERIC_READ | GENERIC_WRITE,
0, // must be opened with exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // must use OPEN_EXISTING
0, // not overlapped I/O
NULL // hTemplate must be NULL for comm devices
);

if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
printf ("CreateFile failed with error %d.\n", GetLastError());
return (1);
}

// Build on the current configuration, and skip setting the size
// of the input and output buffers with SetupComm.

fSuccess = GetCommState(hCom, &dcb);

if (!fSuccess)
{
// Handle the error.
printf ("GetCommState failed with error %d.\n", GetLastError());
return (2);
}

// Fill in DCB: 57,600 bps, 8 data bits, no parity, and 1 stop bit.

dcb.BaudRate = CBR_57600; // set the baud rate
dcb.ByteSize = 8; // data size, xmit, and rcv
dcb.Parity = NOPARITY; // no parity bit
dcb.StopBits = ONESTOPBIT; // one stop bit

fSuccess = SetCommState(hCom, &dcb);

if (!fSuccess)
{
// Handle the error.
printf ("SetCommState failed with error %d.\n", GetLastError());
return (3);
}

printf ("Serial port %s successfully reconfigured.\n", pcCommPort);
return (0);
}

 
23:45 16 марта 2005
тема Программирование наверх
 
  sc.
сообщений: 529
Отправить письмо через веб-интерфейс
))))) ссылки не получились)))))
но думаю, если интересно, то гугл найдет в 2 сек
И что-то я не нашел CloseHandle, видать он автоматом закрывается, когда прога завершает работу. Ну и писать данные соответственно WriteFile. Успехов)


 
23:51 16 марта 2005
тема Программирование наверх
 
  ZeroMem
сообщений: 110
Слушай, тебе это на кой x? Я, конечно, учусь сейчас разрабатывать драйвера режима ядра. Пиши в асю или мыло. 271318967. zeromem@yandex.ru.
А вообще, для такой работы нужно четко иметь представление о том, с каким драйвером работать и как он(драйвер) должен взаимодействовать с устройством. Хотя на твоем месте, я писал бы собственный драйвер. Хотя это очень трудно. WinAPI покажется детским лепетом.

 
00:05 17 марта 2005
тема Программирование наверх
 
  ZeroMem
сообщений: 110
sc, я тебя не совсем понял насчет ссылок. Тут просили просто рассказать как работать с драйвером для LPT.
Hardware Interface Programming in VC++ - Part I (Port Access) я еще пойму, но остальное - это просто рассказывается о том как написать свой драйвер сначала в NT стиле, а потом в стиле WDM.

Ну а это вообще зачем?
@API hooking revealed

The article demonstrates how to build a user mode Win32 API spying system@

Кстати, мифка, ты случайем не разработчик NeverLands или так для прикола сайт добавил?

sc писал:
И что-то я не нашел CloseHandle, видать он автоматом закрывается, когда прога завершает работу. Ну и писать данные соответственно WriteFile.
---------------------------------------
Вообще да, закрывается. Только вот так делать лучше не надо. Может обернуться глюками.
Про WriteFile скажу, что его одного не достаточно. Самый распространенный способ работы с драйвером это через IOCTL запросы. Если мне не отшибло память, то вызов WriteFile и сделает определенного типа IOCTL запрос.
---------------------------------------
Ну и еще рах повторюсь, что нужно иметь представление о том с каким драйвером работать и как он работает с устройством.

 
00:55 17 марта 2005
тема Программирование наверх
 
  sc.
сообщений: 529
Отправить письмо через веб-интерфейс
А если свой драйвер не писать, а взять например любой для принтера, типа text generic? И слать туда данные на свое устройство. А что за объекты требуется вкл/выкл? )

 
01:36 17 марта 2005
тема Программирование наверх
 
  Angel
сообщений: 5
Дружища пиши на Delphi, будет всё понятней и быстрее. Скачаешь пару компонентов и всё готова, работает как надо.

 
02:11 17 марта 2005
тема Программирование наверх
 
  sc.
сообщений: 529
Отправить письмо через веб-интерфейс
А если хочешь немного разобраться то можно вот почитать:Использование Visual Basic 6.0 для управления внешними устройствами и приём внешней информации (температура, давление, напряжение, ток и т.п.) через LPT порт
http://vbrussian.com/Article.asp?ID=101
ZeroMem, А зачем вообще драйвер писать? Я давно-давно писал прогу под w2k для работы с модемом без всяких драйверов, если память не изменяет)) Неужели есть разница с LPT?


 
02:41 17 марта 2005
тема Программирование наверх
 
  sc.
сообщений: 529
Отправить письмо через веб-интерфейс
http://www.compdoc.ru/prog/pascal/work_with_lpt/
http://junglewin.narod.ru/lpt.html
Вот еще пара статеек, может помогут

 
21:29 17 марта 2005
тема Программирование наверх
 
  ZeroMem
сообщений: 110
Со своим драйвером надежнее. Просто я не знаю вообще зачем челу работать с LPT. Если ему нужно лишь работать через определенную абстракцию, которую можно использовать с 3 го кольца, то пожалуйста. Но прога от этого проще не станет. А на Delphi, пожалуй, может выйти и сложнее, есди самому компоны писать.

 
   
  создать новую тему написать сообщение  
Сервер развивается и поддерживается редакцией еженедельника «Наш город»
Отдел рекламы: (4217) 20-10-07; adver@komcity.ru
Правила использования материалов
    Яндекс цитирования Программирование: 2002—2004  — Технодизайн
2005—2013  — "Наш город"