|
Вопрос # 1 928/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Я не спец в Дельфи, но с грехом пополам написал программку для работы с виртуальным СОМ портом, использующую Win API. (на самом деле я собрал ее из различных примеров, найденных в сети). Хотел еще включить в программу контроль паритета при обмене, но примеров найти не могу. Может подскажете, как это делается или ткнете носом в примерчик. Заранее спасибо.
 |
Вопрос задал: ttron (статус: Посетитель)
Вопрос отправлен: 23 сентября 2008, 11:49
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, ttron!
Если уж так сильно хочеться писать на АПИ - пишите. Но не стоит даром тратить время. Для работы с COM портом я использую вот эту библиотеку. Она не слишком далеко ушла от апи, но есть хорошей объёрткой. Изучение исходников ее даст ответы на многие вопросы.
По поводу паритета. Вы должны в коде создавать структуру и заполнять её (без этого никак). вот и допишите туда такое
//эти две строки обязаны быть у Вас, если у Вас АПИ
FillChar(dcb, SizeOf(dcb), 0);
dcb.DCBlength := SizeOf(dcb);
//.....
//по типу паритета заполняем поле
case parity of
'N', 'n': dcb.parity := 0;
'O', 'o': dcb.parity := 1;
'E', 'e': dcb.parity := 2;
'M', 'm': dcb.parity := 3;
'S', 's': dcb.parity := 4;
end;
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 23 сентября 2008, 12:04
Оценка за ответ: 4
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 9 октября 2008, 20:48; участников в обсуждении: 3.
|
ttron (статус: Посетитель), 23 сентября 2008, 21:57 [#1]:
Спасибо, но переделывать уже не хочется, тем более, что прога работает. Как устанавливать поле DCB я знаю. Видимо API возьмет на себя функции установки бита паритета в посылке при прередаче. Проблема в том, как обнаружить, что произошла ошибка паритета при приеме? Я обязательно изучу тексты библиотеки, но слету не смог там обнаружить ничего подобного. Может подскажете, где это, я попробую сделать по аналогии. Заранее спасибо.
|
|
Вадим К (статус: Академик), 23 сентября 2008, 23:21 [#2]:
Ну так это и включает. Просто сам контроль идет на аппаратном уровне и мешаться туда виндовс не даст. Если сбой произошёл - то просто потеряются данные и сгенерируется ошибка.
В приведённой выше библиотеке ищите по слову ErrRxParity.
Если хочеться внятных ответов надо писать конкретно что хочеться.
И ещё. Если этот параметр не передаётся железякой, которая подключена к СОМ порту, то включай/не включай - толку не будет. Точнее - просто перестанет работать. Правда в некоторых случаях девайс умеет определять наличии, но это скорее исключение.
Учитывая всё вышесказанное, подумайте, скорее всего, что бы включить контроль четности, надо будет проверить девайс. А добавить одну строку в программу - это не переделка. это так.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
ttron (статус: Посетитель), 24 сентября 2008, 10:29 [#3]:
Спасибо. Под переделкой я понимал переход с АПИ на использование вышеупомянутой библиотеки, этого не хотелось бы. Одну-две строки добавить к рабочей программе, это не проблема, согласен. Боюсь, только, этим не обойдется, ну это мои проблемы.
Железку я сам делал, поэтому она будет слать то, что мне потребуется 
В любом случае, спасибо за наводку.
|
|
ttron (статус: Посетитель), 9 октября 2008, 20:48 [#5]:
Спасибо, полезная информация.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|