WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  работа с портами (ввод, вывод)

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   работа с портами (ввод, вывод)
sitch опубликован 23-03-2001 20:41 MSK   Click Here to See the Profile for sitch   Click Here to Email sitch  
Отцы, везде написано что работа с портами очень проста, то же что и с файлами, а как конкретно - нигде. Помогите,пожалуйста понять эту простоту.Очень хочу.
OlegN опубликован 26-03-2001 11:26 MSK     Click Here to See the Profile for OlegN  Click Here to Email OlegN     
На самом деле, не очень-то простота, хотя функции используются те-же.
CreateFile, ReadFile, WriteFile,
а также еще маленькая :-)) кучка функций :
DeviceIoControl, HasOverlappedIoCompleted,
функции начинающиеся на SetComm и GetComm,
WaitCommEvent и т.д.
Привожу пример из MSDN-а :

Monitoring Communications Events
The following example code opens the serial port for overlapped I/O, creates an event mask to monitor CTS and DSR signals, and then waits for an event to occur. The WaitCommEvent function should be executed as an overlapped operation so the other threads of the process cannot perform I/O operations during the wait.

HANDLE hCom;
OVERLAPPED o;
BOOL fSuccess;
DWORD dwEvtMask;

hCom = CreateFile( "COM1",
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // no security attributes
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);

if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
}

// Set the event mask.

fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);

if (!fSuccess)
{
// Handle the error.
}

// Create an event object for use in WaitCommEvent.

o.hEvent = CreateEvent(
NULL, // no security attributes
FALSE, // auto reset event
FALSE, // not signaled
NULL // no name
);

assert(o.hEvent);

if (WaitCommEvent(hCom, &dwEvtMask, &o))
{
if (dwEvtMask & EV_DSR)
{
// To do.
}

if (dwEvtMask & EV_CTS)
{
// To do.
}
}

И еще пример

Configuring a Communications Resource
The following example opens a handle to COM1 and fills in a DCB structure with the current configuration. The DCB structure is then modified and used to reconfigure the device.

/* 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, // comm devices must be opened w/exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // comm devices 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);
}

// We will 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 the DCB: baud=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);
}

kav опубликован 10-04-2001 09:37 MSK     Click Here to See the Profile for kav  Click Here to Email kav     
Вышлю по почте. Читай встроеную справку по функциям ассинхронного i/o и Мешков А., Тихомиров Ю. "Visual C++ и MFC".
В остальном без комментариев.
server_mouse опубликован 11-04-2001 12:49 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Вообще-то w9x очень хорошо переваривает и работу с портами в/в напрямую...
Ну то есть как в старом добром досе:
OUT al,dl
IN .......
wert_wert опубликован 23-02-2001 11:17 MSK     Click Here to See the Profile for wert_wert  Click Here to Email wert_wert     
OUT IN CreateFile это хорощё но виныды как непускали так и не пускают на LPT впрямую чаго нелать не как не придумаю :((
Finder опубликован 24-02-2001 17:58 MSK     Click Here to See the Profile for Finder  Click Here to Email Finder     
Вот линк неплохой. Почитай, там про СОМ и немного про LPT:
http://www.happytown.ru/prog/practika/com_win32.html

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.