|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
||||||
Чтение бита четности06.10.2017, 10:13. Показов 3613. Ответов 16
Здравствуйте.
У меня есть вопрос: Как считать бит четности через с++? Написана программа которая будет общаться с устройством через компорт, передача и прием, и по ТЗ нужно использовать 9й бит для проверки. Пока все реализовано через виртуальные порты и на одном конце программа посылает сигналы а на другом возвращает обратно. И метод проверки - это устанавливать разные настройки в этих программах. Я открываю порт как файл, и указываю при этом паритет, проверку на паритет, и сообщения об ошибках:
Погуглив, наткнулся на варианты : писать свой драйвер, или с помощью ассемблера добраться до цели. 1е мне кажется через чур сложным, 2е то что доступ возможен к определенному регистру определенного порта, но если у меня несколько портов, и я желаю переключаться? Плюс нашел странный пост о том что fParity не робит от слова совсем. ![]() Итого: можно ли получить 9й бит входящего байта через язык С++? Может я что то делаю не так? Если с спп надежды нет, можно ли через ассемблер работать с виртуальными портами, и вообще портами которые меняются? Благодарю.
0
|
||||||
| 06.10.2017, 10:13 | |
|
Ответы с готовыми решениями:
16
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 06.10.2017, 10:49 | |
|
Всегда думал что прикладному по не нужно читать этот бит - его читает и при желании программиста контролирует системное по
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 06.10.2017, 11:12 [ТС] | |
|
vxg, системное по - ок, какое, и можно ли к нему получить доступ через С++ ?
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 06.10.2017, 18:12 | |
|
nzt, то самое которое обслуживает вызовы чтения записи данных
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
|
| 09.10.2017, 09:34 [ТС] | |
|
vxg, Вы имеете в виду WriteFile/ReadFile ? К сожалению я вас не понимаю..
0
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 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
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 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
|
|||||||||||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 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
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 09.10.2017, 15:59 | |
|
nzt, очистка = ClearCommState
0
|
|
|
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 25
|
||||||
| 09.10.2017, 16:24 [ТС] | ||||||
|
vxg, нэ, в таком случае очистка - после...
Хм. Ладно, еще есть варианты получать значение этого бита? На ассемблере может? Я понимаю что с++ через него и работает, но... я уже утомился за несколько дней от этой проблемы, и готов демонов вызывать.
0
|
||||||
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 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
|
|
|
Модератор
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
|
|
| 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 бита? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|