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

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

GreyPhantom

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

GreyPhantom

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

GreyPhantom

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

etc

Гость
#6
:( вы невнимательно смотрели пример
Сам символ задаем в 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

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

etc

Гость
#8
Там не символы, там нолики и единички бегают.