![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Гость_lexTU |
|
|||
|
Unregistered |
Подскажите, почему после использования функции WriteFile, когда записываю строку в порт при чтении ёё же программа виснет.
Ели у кого-то есть рабочий пример работы с портом перешлите на [email protected] Буду очень благодарен. Зарание спасибо. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
программа не виснет, а начинает ожидать, пока на порт что-то придет
именно в этом и состоит работа функции ReadFile - подождать, пока что-нибдуь придет (если до этого не пришло) и прочитать нужное количество байт (или меньше, если не хватает) хотя есть еще один режим - асинхронный ввод/вывод (можно почитать в MSDN) -------------------- qqq |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 4 Всего: 47 |
Воспользуйтесь поиском. Недавно обсуждалось!
|
|||
|
||||
| artem_k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 24.3.2005 Репутация: нет Всего: нет |
Лучше используй WriteFileEx и ReadFileEx !!!
DCB dcb; WORD buf[128]; OVERLAPPED over; HANDLE HEvent,ComPort; ComPort = CreateFile("COM1",GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 0); buf[0] = 0x7e00; buf[1] = 0x0400; buf[2] = 0x0100; buf[3] = 0x7f00; GetCommState(ComPort,&dcb); dcb.BaudRate = CBR_57600 ; dcb.Parity = 0; dcb.ByteSize = 8; dcb.StopBits = 0; SetCommState(ComPort,&dcb); SetupComm(ComPort,256,256); over.Offset = 0; over.OffsetHigh = 0; over.InternalHigh = 0; over.hEvent = HEvent; WriteFileEx(ComPort,buf,8,&over,&FileIOCompletionRoutine); SleepEx(50,TRUE); buf[0] = 0; over.InternalHigh = 0; ReadFileEx(ComPort,buf,8,&over,&FileIOCompletionRoutine); SleepEx(70,TRUE); CloseHandle(ComPort); VOID CALLBACK FileIOCompletionRoutine( DWORD dwErrorCode, // completion code DWORD dwNumberOfBytesTransfered, // number of bytes transferred LPOVERLAPPED lpOverlapped // I/O information buffer ) { } |
|||
|
||||
| jorkug |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 21.3.2005 Репутация: 1 Всего: 1 |
Используй лучше fprintf() - и проще и надежней.
|
|||
|
||||
| knave |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 6.3.2003 Где: Санкт-Питербург ( Россия) Репутация: нет Всего: 5 |
Программа есть, едси нужна могу прислать из дома. Пиши на [email protected] программка простая.
-------------------- С наилучшими пожеланиями !!! |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |