Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.
 
 Отцы, везде написано что работа с портами очень проста, то же что
 
 и с  файлами, а как конкретно - нигде. Помогите,пожалуйста понять
 
 эту простоту.Очень хочу.
 
 
 
 
 
 На самом деле, не очень-то простота, хотя функции используются те-же.
 
 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);
 
 }
 
 
 
 


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS