0 / 0 / 0
Регистрация: 10.05.2008
Сообщений: 7
|
|
1 | |
Получить количество байт, записанных в com-порт (асинхронный режим)10.05.2008, 20:06. Показов 7884. Ответов 12
Метки нет (Все метки)
Не могу получить кол-во байт записанных в порт(асинхронный режим)+отдельный поток.
Точнее значение всегда одно-нуль.
0
|
10.05.2008, 20:06 | |
Ответы с готовыми решениями:
12
Получить количество элементов записанных в double[] Как получить количество записанных элементов в файл? Rs 232, асинхронный режим Получить количество байт, готовых к считыванию из сокета |
0 / 0 / 0
Регистрация: 10.05.2008
Сообщений: 7
|
|
12.05.2008, 00:18 [ТС] | 3 |
Попробовал ClearCommError, возвращается нуль. Судя по описанию функция несработала, ставил в других местах-тот же нуль.
0
|
0 / 0 / 0
Регистрация: 10.05.2008
Сообщений: 7
|
||||||
12.05.2008, 22:50 [ТС] | 5 | |||||
Вот кусок моего кода.
Так вот, err3=0.
0
|
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
||||||
13.05.2008, 11:21 | 6 | |||||
Вот так я записавыю, работает.
0
|
0 / 0 / 0
Регистрация: 10.05.2008
Сообщений: 7
|
|
14.05.2008, 08:10 [ТС] | 7 |
Спасибо за пример. Я вот слегка не допер что значит sBuff[1] и Length(sBuff). Более полный код не можеш прислать?
0
|
13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
|
14.05.2008, 11:09 | 8 |
Это был Delphi. sBuff - это строка, т.е. буфер. sBuff[1] - это первый элемент буффера (там оно передается через var, поэтому на СИ получится что-то типа &sBuff[0]), а Length(sBuff) - это реальная длина буфера, которую мы можем принять.
Если функция вернет true, то в параметр written будет кол-во принятых байт.
0
|
0 / 0 / 0
Регистрация: 10.05.2008
Сообщений: 7
|
|
15.05.2008, 00:34 [ТС] | 9 |
Наверное всетаки переданных байт, ибо функция Writefile. Или я че то опять не догоняю.:eek:
0
|
0 / 0 / 0
Регистрация: 16.05.2008
Сообщений: 7
|
||||||
16.05.2008, 06:23 | 11 | |||||
Для асинхронного режима я делаю так:
0
|
0 / 0 / 0
Регистрация: 10.05.2008
Сообщений: 7
|
|
20.05.2008, 22:01 [ТС] | 12 |
Вроде все прояснилось, только вот непонятно: иногда ждут через waitcommevemt, а иногда через WaitForSingleObject. Чем же они отличаются?
0
|
0 / 0 / 0
Регистрация: 16.05.2008
Сообщений: 7
|
|
22.05.2008, 06:15 | 13 |
WaitCommEvent служит для мониторинга событий на COM порту. Причем возможны два варианта:
1. Синхронный режим (в CreateFile не использовался флаг FILE_FLAG_OVERLAPPED) В этом случае WaitCommEvent "повесит" поток до наступления заданного функцией SetCommMask события 2. Асинхронный режим (в CreateFile использовался флаг FILE_FLAG_OVERLAPPED) В этом случае если события заданные SetCommMask не наступили с предыдущего вызова WaitCommEvent функция вернет FALSE. А GetLastError вернет ERROR_IO_PENDING. Так что тут опять придется использовать WaitForSingleObject чтобы дождаться нужного события
0
|
22.05.2008, 06:15 | |
22.05.2008, 06:15 | |
Помогаю со студенческими работами здесь
13
Асинхронный ввод/вывод данных в COM-порт Асинхронный клиент: сервер подаёт 4440 байт, приходит 2048 Часы(асинхронный режим таймера) + ds18b20 Дан массив из 11 байт. Подсчитать количество байт с нечетным числом 1 в байте Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |