Мало что или нет, я пишу модифицированную версию драйвера последовательного порта, основанную на образце драйвера serial.sys, который MS предоставляет и утверждает, что он совпадает с драйвером, поставляемым с Windows.Результат является своего рода анализатором.
Одной из необходимых модификаций является необходимость знать ошибку четности для каждого байта, приходящего на порт.По этой причине я изменил метод прерывания, который устанавливает флаг PE (ошибка четности) errorWord, и заменил проверку, чтобы убедиться, что мы установили comport для замены error char на наш собственный char, и сделал так, чтобы он всегда вставлял char со значением 0x0A, иДобавлен метод прерывания данных, чтобы всегда вставлять 0x0F перед чтением символа.Com установлен, чтобы отметить паритет.
У меня есть устройство, отправляющее мне байты каждые 200 мс, от 0x01 до 0x1F, первые 8 байтов с меткой четности (ошибка четности), последние 8 с пробелом (без ошибки).
ПроблемаЯ получаю, что не каждый байт с ошибкой рассматривается как ошибка.Я постоянно вижу либо 3-й, либо 4-й байт, который должен был иметь префикс 0x0A с 0x0F вместо этого.
Есть ли здесь какая-либо известная информация о неточности, или о прерываниях, которые поступают не в правильном порядке, или какие-либо идеи о том, какдостичь этого по-другому?
Примечание: использование только общего драйвера и его решение в клиентском приложении - это не пойдет.Это должно быть сделано водителем.
Спасибо