Работа с COM портом

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
pirotehnick
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж
Контактная информация:

Работа с COM портом

Сообщение pirotehnick »

Вот захотел поработать с COM портом. Первым делом я решил протестить линии RTS и DTR, т.е. отобразить сигнал на светодиодах. Схему и прочий материал я брал здесь http://www.pcports.ru/articles/com_1.php Написал программу, спаял схему. Всё вроде бы хорошо, порт открывается, ошибок в программе нету. Подключил схему,…ни чего не происходит, т.е. светодиоды так и оставались гореть. Интересно, а они вообще должны гореть, после подачи питания на схему?
Ещё меня насторожила сама схема, т.е. её правильность . Во-первых не понятно с полярностью конденсаторов, похоже её перепутали, во-вторых нумерация выводов тоже кажется не правильной. По другим источникам RTS- 7, DTR-4.
И вообще как можно проверить сигнал на этих линиях без использования MAX232?. Тестером померить не получилось.

Помогите, пожалуйста, разобраться с этой проблемой.
Реклама
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

На том сайте если не ошибаюсь проги на Си, и работа с портом ведётся посредством API функций?
Лично я не очень API люблю (запутано там слишком) поэтому пишу проги на PureBasic
С его помощью можно написать прогу без API. :)
Например, с помощью библиотеки MVCOM можно легко с портом работать не используя API. :)
Скажем, для управления линией DTR существует функция ComSetDTR( Handle , Status )
где Handle идентификатор порта, Status - необходимый логический уровень на выходе (возможные значения 0,1).
Реклама
pirotehnick
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж
Контактная информация:

Сообщение pirotehnick »

Я же сказал, что с прогой всё в порядке, проблема скорее всего в схеме.
Ещё я использовал прогу, специально предназначеннную для тестов COM портов.
Всё равно ни чего не работает :(

http://www.pcports.ru/files/articles/Se ... rminal.rar
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

PB_EXPERT писал(а):Например, с помощью библиотеки MVCOM можно легко с портом работать не используя API. :)
Скажем, для управления линией DTR существует функция ComSetDTR( Handle , Status )
где Handle идентификатор порта, Status - необходимый логический уровень на выходе (возможные значения 0,1).
я с вас балдею - API-шную функцию переименовали - вы и рады, что с API не работаете.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

pirotehnick, почитай на моем сайте статью о работе с портами через API.

выкинь МАХ232, подключайся напрямую к сигналам относительно общего провода - только обязательно ограничивай ток резистором - не более 20 мА!!!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

я с вас балдею - API-шную функцию переименовали - вы и рады, что с API не работаете
Я имел в виду не только работу с портом используя API, но и вообще работу с API при написании программы.
что с прогой всё в порядке, проблема скорее всего в схеме
Возможно, чтобы быть полностью в этом увереным проверте порт с помощью моей проги, написаной на PureBasic.
Она позволяет изменять логические уровни на выводе DTR (4 контакт) порта. Исходник с комментариями прилагается. Можете сами убедится, ни одной API функции. :)))
Вложения
PureBasic__For_COM_Port.rar
(9.76 КБ) 650 скачиваний
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

PB_EXPERT писал(а):Исходник с комментариями прилагается. Можете сами убедится, ни одной API функции. :)))
то, что в вашем бейсике вызовы API-функций заменены синонимами - сути дела не меняет. Даже параметры почти совпадают в них. Если нравится - я совсем ни чего не имею против, просто обращаю ваше внимание, на как бы истину :) может, вы искренне заблуждаетесь, думая что API тут не используется...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

то, что в вашем бейсике вызовы API-функций заменены синонимами - сути дела не меняет
Да нет, как раз меняет! :)
Это упрощает написание программы. Согласитесь, что проще использовать одну встроеную функцию чем несколько API, это экономит не только вреня но и нервы.
Например, работа встроеных функций достаточно хорошо описана в справке PureBasic, а вот полное описание API-функций на русском мне так и не удалось найти.
может, вы искренне заблуждаетесь, думая что API тут не используется...
Естествено встроеные функции переводятся в API при компиляции, только так можно объяснить небольшёй размер EXEшника. Главное приемущество встроеных функций это простота написания программ. :))
sevastianov
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Ср июн 06, 2007 07:02:13
Откуда: Ульяновск
Контактная информация:

По схеме

Сообщение sevastianov »

pirotehnick писал(а):Я же сказал, что с прогой всё в порядке, проблема скорее всего в схеме.
Ещё я использовал прогу, специально предназначеннную для тестов COM портов.
Всё равно ни чего не работает :(

http://www.pcports.ru/files/articles/Se ... rminal.rar
Схема верная, даташитам соответствует. Правда сомнение вызывают номиналы конденсаторов 10 мкФ. В даташитах они 0.1мкФ и только для одного типа 1.0 мкФ.
Возможно это не важно, но лучше выполнять требования разработчика чипа.
.
О программе: При использовании MSComm может не получиться установки какого-либо сигнала USART отдельно от других. Они там как-то завязаны между собой. Один установите - другой сбросится!
Была у меня такая проблема, когда я пытался сделать ICSP протокол для JDM программатора.
Только когда сделал обращение к COM через API функции - всё прошло!
:)
Но это так, на всякий случай. Поскольку схема готовая, то надо полагать автор её тестировал и проблем не должно быть.
pirotehnick
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж
Контактная информация:

Re: По схеме

Сообщение pirotehnick »

Народ, извиняюсь за тупизну. :oops:
Причина неполадки оказалась самой неожиданной, т.е. причины было две:

- ПЕРВАЯ - неисправный шнур... :evil: , каковы шансы, что шнур купленный в фирменном магазине и запечатанный в заводскую упаковку окажется неисправным!!!??? Более половины пинов в нём неисправны. Чтож... будет для меня уроком, как говорится "доверяй, но проверяй"

-ВТОРАЯ - на предложенной схеме (http://www.pcports.ru/articles/com_1.php) не правильно указано расположение линий RTS и DTR (в действительности RTS-7, DTR-4).

sevastianov писал(а): надо полагать автор её тестировал и проблем не должно быть.
что-то сильно сомневаюсь,...как надо было умудриться, что бы собрать и сфоткать неправильную схему (расположение RTS и DTR), заверяя что она работает.... не хорошо... :?
sevastianov
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Ср июн 06, 2007 07:02:13
Откуда: Ульяновск
Контактная информация:

А ведь верно!

Сообщение sevastianov »

Подключение и правда не то.
Усыпил мою бдительность горящий светодиод на фотографии...
8)
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Сообщение radteh »

Если программе от сюда http://www.pcports.ru/articles/com_1.php
добавить пару кнпок, и прописать в обрабтке их нажатия следующий код: EscapeCommFunction(hFile, 7); - для включения, EscapeCommFunction(hFile, 8); - для выключения, то можно дополнительно управлять выводом №3 (TXD).
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

ARV писал(а):то, что в вашем бейсике вызовы API-функций заменены синонимами - сути дела не меняет. Даже параметры почти совпадают в них. Если нравится - я совсем ни чего не имею против, просто обращаю ваше внимание, на как бы истину :) может, вы искренне заблуждаетесь, думая что API тут не используется...
В пуре не заменяются снонимами .Он легко позволяет работать и с API (которые сами являются dll) так и с любыми другими библиотеками(dll).
Другое дело либа про которую говорит PB_EXPERT она может юзать API .Но работа с ней проще .
И зря ты так про пуре , это не визуал барсик с его извращениями и мусором.
Достаточно екзешник компилированный пуре , прогнать в Олле - чистый асм .
ARV писал(а):pirotehnick, почитай на моем сайте статью о работе с портами через API.
Кстати на пуре будет все также , только проще и меньше размером.
Всего то загрузить длл и использовать ее функции .
Последний раз редактировалось dosikus Пт авг 01, 2008 00:41:40, всего редактировалось 1 раз.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

PB_EXPERT писал(а):Исходник с комментариями прилагается. Можете сами убедится, ни одной API функции. :)))
А вот это ты зря , если ты не пишешь обращение к API ,это еще не значит что пуре его не использует.
ComOpen вызов функции из MVCOM которая в свою очередь юзает API .
Другое дело что это проходит незаметно для тебя.
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

А вот это ты зря , если ты не пишешь обращение к API ,это еще не значит что пуре его не использует.
ComOpen вызов функции из MVCOM которая в свою очередь юзает API
dosikus, ну так в исходнике нет ни одной API функции, а что в библиотеках твортится я не знаю. Я именно за исходник писал.
Я не спорю, MVCOM основана на API, но её использовать намного проще чем API. Это моё личное мение, подкреплённое практикой, можешь со мной не согласится.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Ну в принципе с твоей точки зрения ты прав.
В дебри тебе не зачем лезть.
С другой стороны представь себе ситуацию - ты составил схему в ней
одна только микросхема и ты говоришь -я не использую резисторы и транзисторы и знать их не хочу ,как они работают и зачем они нужны.
Сравнение конечно грубое ....
PB_EXPERT
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

Не, так мы скоро до машинных кодов (ассемблера) дойдём! :))

Итак ясно что все проги под Windows той или иной мере используют API.
Другое дело что в PureBasic есть более 800 встроеных функций, большенство которых по видимому построены на API но ими (встроеными функциями) гораздо проще пользоватся.
Если какой функции нехватает, то можно использовать дополнительную библиотеку функций, т. е. в самом исходнике могут даже отсутствовать вызовы API или их быть очень мало.

Например, у меня есть прога, состоящая почти из 12 тысяч строк и в ней ну максимум 10 вызовов API из исходника.
Естествено что в ней очень мого вызовов различных API функций, но они (вызовы) порождаются встроеными функциями.
Аватара пользователя
Smallmen
Родился
Сообщения: 14
Зарегистрирован: Пт сен 19, 2008 22:34:40
Откуда: Россия Екатеринбург
Контактная информация:

Сообщение Smallmen »

Ребята всем огромный респект, то что вы делаете ето супер, у меня тут возникла проблемка, может ктонибудь поможет, надо написать програмку на Дельфи 7 чтоб по нажатии кнопки уходил код в ком порт, помогите кто чем может )) в дельфи не разбираюсь.
Это точно, но стоит подумать!!!
Аватара пользователя
NiTr0
Друг Кота
Сообщения: 3051
Зарегистрирован: Пт авг 10, 2007 12:49:55
Откуда: kr.ua
Контактная информация:

Сообщение NiTr0 »

Инициализация порта:

Код: Выделить всё

var
    hCom:cardinal;
    com:ansistring;

procedure TForm1.init;
var
  cto: TCommTimeOuts;
  dcb: TDCB;
  com_name: string;
begin
  com_name:=com+#0;
  if (hCom<>INVALID_HANDLE_VALUE) then CloseHandle(hCom);
  hCom:=CreateFile(@com_name[1],GENERIC_READ or GENERIC_WRITE,
                    FILE_SHARE_READ or FILE_SHARE_WRITE,//0, {exclusive access}
                    nil, {no security attrs}
                    OPEN_EXISTING,
                    FILE_ATTRIBUTE_NORMAL,{not overlapped}
                    0 {hTemplate}
                    );
  if hCom=INVALID_HANDLE_VALUE then
  begin
    exit;
  end;
  GetCommState(hCom,dcb);
  dcb.BaudRate:=19200;
  dcb.ByteSize:=8;
  dcb.Parity:=evenparity{NoParity};
  dcb.StopBits:=ONESTOPBIT{};
  dcb.Flags:=DTR_CONTROL_DISABLE or RTS_CONTROL_DISABLE;

  SetCommState(hCom,dcb);
  GetCommTimeOuts(hCom,cto);
  with cto do
  begin
    ReadIntervalTimeout:=1;
    ReadTotalTimeoutMultiplier:=1;
    ReadTotalTimeoutConstant:=1;
    WriteTotalTimeoutMultiplier:=1;
    WriteTotalTimeoutConstant:=1;
  end;
  SetCommTimeOuts(hCom,cto);

  PurgeComm(hCom,PURGE_RXCLEAR);
end;
Дальше - чтение-запись АПИ ф-ями работы с файлами:

Код: Выделить всё

  ReadFile(hCom,data,count,t,nil);
  WriteFile(hCom,data,count,t,nil);
Описание переменных ф-й - есть в хелпе.
В конце - закрытие файла

Код: Выделить всё

CloseHandle(hCom);
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

если устраивают параметры настройки СОМ-порта по умолчанию (как через панель управления настроено), в Delphi можно гораздо проще:

Код: Выделить всё

var F : file of byte;
assign(F,'COM1');
reset(F);
write(F,23); //отправка числа 23 через СОМ1
close(F);
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «Интеграция с ПК»