|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
||||||
Чтение бита четности06.10.2017, 10:13. Показов 3715. Ответов 16
Здравствуйте.
У меня есть вопрос: Как считать бит четности через с++? Написана программа которая будет общаться с устройством через компорт, передача и прием, и по ТЗ нужно использовать 9й бит для проверки. Пока все реализовано через виртуальные порты и на одном конце программа посылает сигналы а на другом возвращает обратно. И метод проверки - это устанавливать разные настройки в этих программах. Я открываю порт как файл, и указываю при этом паритет, проверку на паритет, и сообщения об ошибках:
Погуглив, наткнулся на варианты : писать свой драйвер, или с помощью ассемблера добраться до цели. 1е мне кажется через чур сложным, 2е то что доступ возможен к определенному регистру определенного порта, но если у меня несколько портов, и я желаю переключаться? Плюс нашел странный пост о том что fParity не робит от слова совсем. ![]() Итого: можно ли получить 9й бит входящего байта через язык С++? Может я что то делаю не так? Если с спп надежды нет, можно ли через ассемблер работать с виртуальными портами, и вообще портами которые меняются? Благодарю.
0
|
||||||
| 06.10.2017, 10:13 | |
|
Ответы с готовыми решениями:
16
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 06.10.2017, 10:49 | |
|
Всегда думал что прикладному по не нужно читать этот бит - его читает и при желании программиста контролирует системное по
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 06.10.2017, 11:12 [ТС] | |
|
vxg, системное по - ок, какое, и можно ли к нему получить доступ через С++ ?
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 06.10.2017, 18:12 | |
|
nzt, то самое которое обслуживает вызовы чтения записи данных
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 09.10.2017, 09:34 [ТС] | |
|
vxg, Вы имеете в виду WriteFile/ReadFile ? К сожалению я вас не понимаю..
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 09.10.2017, 10:50 | |
|
nzt, если настроить порт передав в SetCommState dcb.fParity = TRUE порт должен фиксировать ошибки четности при передаче данных
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 09.10.2017, 11:02 [ТС] | |
|
vxg, понял. А определить их .. как? Ожидать некоего мутного для меня эвента, или read/writefile должны возвращать ненулевое значение?
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 09.10.2017, 12:00 | |
|
nzt, при ошибке функция чтения должна вернуть ошибку иначе смысла в контроле нет. Имитировать можно наверное аппаратным тестером
Добавлено через 2 минуты ClearCommError так же в случае ошибки должен выдать CE_RXPARITY
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|||||||||||
| 09.10.2017, 13:05 [ТС] | |||||||||||
|
vxg,
хм.
Хотя нашел другую версию, где проверка идет по изменению temp - тип онпринимает код ошибки. И если все хорошо, то останется 0. Суть в том что после этой функции - темп стал нулем. А, кстати об имитации - на другом конце виртуального компорта висит программа которая возвращает посылку, но у нее настройки порта отличаются в типе четности. Т.е. посылка посланная с режимом четности EVEN должна вернуться с пометкой ODD, и это есть ошибка. Однако почему то ошибки нет. Сейчас еще раз перепроверю, но первые тесты неутешительные. Добавлено через 28 минут Оккей, перейдем к коду Вот функция настройки ком порта - в нее пересылается номер порта (port) и скорость (baud)
dcb.Parity = EVENPARITY ; - в одной программе ставлю так, в другой ODDPARITY. Код из предыдущего сообщения стоит в функции чтения.
0
|
|||||||||||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 09.10.2017, 15:25 | |
|
nzt, ClearComnState возвращает ошибки/статус и очищает ошибки - ошибка если она была будет возвращена в одном из битов temp. То что у вас на разных устройствах установлен разный режим контроля чётности наверное должно приводить к ошибке но если у вас специфичные данные то может и не приведёт
Добавлено через 1 минуту Если очистка идёт перед чтением то чтение будет всегда ок. Добавлено через 31 секунду ...в 99%
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 09.10.2017, 15:46 [ТС] | |
|
vxg, очистка?
Передаются байты заполненные на все 8 бит, по 4 штуки. И это запросы, а не "потоковое видео".
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 09.10.2017, 15:59 | |
|
nzt, очистка = ClearCommState
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
||||||
| 09.10.2017, 16:24 [ТС] | ||||||
|
vxg, нэ, в таком случае очистка - после...
Хм. Ладно, еще есть варианты получать значение этого бита? На ассемблере может? Я понимаю что с++ через него и работает, но... я уже утомился за несколько дней от этой проблемы, и готов демонов вызывать.
0
|
||||||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 09.10.2017, 19:02 | |
|
nzt, то есть настройка порта на проверку чётности у вас пропускает ошибки чётности?
Добавлено через 50 минут nzt, Кстати 1) вы очень чудно манипулируете функцией ClearCommState - не нужно подавать в неё бит ошибки - нужно проверять что а) функция отработала (вернула TRUE) б) в возвращенной ей ошибке есть ваш бит 2) после вызова функции записи настроек вызовите функцию чтения настроек и убедитесь что контроль чётности реально включился - может ему что-то мешает (права админа например)
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 11.10.2017, 19:32 [ТС] | |
|
vxg, Извиняюсь за отсутствие.
1)Так, проверить смогу уже завтра. Попробую ваш вариант ClearCommState. 2) Вы говорите про GetCommState? Хм. я в первой записи указывал на пост, который подтвердился и у меня - проверка после записи отоброжает fparity как false. Я не пробовал настраивать права админа, и испытаю завтра, но пока что результаты пока такие. Хм. И как мне менять права админа? На откомпилирумом приложении поставить галочку " запускать от имени админа"?
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 12.10.2017, 06:21 | |
|
nzt, хм.. вы правы, четность у меня тоже не назначается ни при запуске от имени администратора ни просто так. попробуйте установить ее в параметрах порта из диспетчера устройств - если вы не назначаете настройки порта в программе, то порт по идее будет открываться с системными настройками - может хоть их он применит
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
||||||
| 12.10.2017, 11:51 [ТС] | ||||||
|
vxg, Я изменил ClearCommError по вашему совету, и один фиг - возвращает тру, и GetLastError возвращает 0. Ставил галочки на "запускать от имени администратора" у обоих приложений, и сам вижуал студио в придачу так же установил. Не помогло. хм..
Проверил на эмуляторах com0com, и VSPE. Второй не отображается в диспетчере устройств(или я плохо смотрел), а первый отображается, но у создаваемых устройств настроек нет. Попробую найти компьютер с физически существующим портом и посмотреть на нем наличие настройки. Добавлено через 18 минут Нашел, настройка есть. Хм. но ведь это не дело, что бы пользователь открывал диспетчер устройств и сам настраивал оборудование.. Кажется я встречал материал где вызывалось стандартное окошко настройки порта.. Попробую его найти. Добавлено через 1 час 19 минут Вот тут обнаружил множество настроек и объяснений, среди которых был тот самый вызов стандартного окна настройки порта. Раз уж, я не могу получить к нему доступ через диспетчер устройств.. Вот этой функцией вызывается сеё чудо...
0
|
||||||
| 12.10.2017, 11:51 | |
|
Помогаю со студенческими работами здесь
17
Чтение RGB значений из bmp 24 бита Чтение любого файла со второго бита (третьего и т.д.)? Как перехватить координаты бита на картинке в момент обнаружения этого бита комп 32 бита потянет видюху 64 бита? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|