• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Нестандартный вывод в СОМ порт

  • Автор темы GreyPhantom
  • Дата начала
G

GreyPhantom

Есть следующая задача: нужно организовать ввод/вывод данных в СОМ порт. Требуется преобразовать символьную строку в в некий код и вывести его в порт. Формат данных для СОМ порта: 5 бит данных 1,5 стоп бита, скорость 50-100 Бод. Проблема: как осуществить ввод/вывод при таких параметрах?
 
?

????

а как при других?

 
G

GreyPhantom

а как при других?


Вообще-то Yandex`ом я пользоваться умею. Вы лучше скажите: какие компоненты/функции лучше применить для поставленной задачи? ( В идеале это должно работать под W95/98 , среда разработки Delphi7(т.е функций типа "Port" нет и впомине).
 
G

GreyPhantom

Да нет, не умеете, вот из ссылки выше - 2'ая -
по моему все как у вас.
Ну, пример-то хороший, может и подойдет. Но Вы невнимательно читали вопрос- ввод/вывод должен быть на скорости НЕ БОЛЕЕ 150 Бит/сек ( по ТЗ нужно 50) !!! Во всех виденных мною примерах BaudRate =как минимум 9600 Б/с. Может подкинете рабочий пример, работающий на нужной скорости?
 
E

etc

:( вы невнимательно смотрели пример
Сам символ задаем в DCB-структуре. DCB- структура - это управляющая структура Вашего порта. Ключевая штуковина. Необходимо ее заполнить. Собственно в ней определяются настройки порта.

Код:
GetCommState(CommHandle,DCB); - получаем текущее DCB.
DCB.BaudRate:=CBR_9600; - устанавливаем скорость работы.
DCB.Parity:=NOPARITY; - устанавливаем отсутствие проверки на четность
DCB.ByteSize:=8; - 8 бит в передаваемом байте.
DCB.StopBits:=OneStopBit; - одиночный стоп-бит.
DCB.EvtChar:=chr(13); - вот собственно задаем символ для SetCommMask. В данном случае - возврат каретки.
SetCommState(cId,DCB); - ну теперь собственно прописываем исправленное DCB.
кто мешает установить свое?
 
G

GreyPhantom

Проблема в том, что символы которые должны передавваться через порт, символами как таковыми не яв-ся,- символы кодируются в код МТК-2, где символ представляет собой последовательность из 5 бит, и не соответствуют коду ASCII, т.е вывод типа "CHR(13)" приводит к ошибке приема. Или символы с кодами от 0 до 10 могут нормально пройти через порт? (В данном случае символ с нулевым кодом исполбзован как символ управления аппаратурой приемника и не яв-ся признаком конца строки). С текстом примера я разобрался, спасибо.
 
E

etc

Там не символы, там нолики и единички бегают.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!