|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
Delphi 7 COM-port11.02.2015, 12:15. Показов 31470. Ответов 30
Метки нет (Все метки)
Здравствуйте! Нужна Ваша помощь!
Я начинающий программист, у меня задача отправить команду в СОМ-порт и получить ответ. Нашел литературу (ссылка - http://www.ssau.ru/files/resou... in_a_v.pdf) и в этой литературы написана все как делать, но в странице 40 написана что надо скопировать файл comport.pas. Я питался найти файл но не нашел. Вопрос такой что это за файл откуда мне найти этот файл. Срочно надо!! Файл с кодами закружен. Delphi7-COM-port.rar Спасибо большое заранее!!! Delphi7-COM-port.rar
0
|
|
| 11.02.2015, 12:15 | |
|
Ответы с готовыми решениями:
30
ARDUINO + COM PORT + DELPHI
Работа Scilab Serial Port Library (COM port) |
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 11.02.2015, 14:23 | |
|
В Вашей литературе приведёно руководство для работы с конкретным оборудованием. Исходники я так понимаю от туда же. Собственно там же от куда эти исходники и литература бралась должен быть и этот модуль.
Но это если Вам нужно писать именно для этого устройства. Если Вам нужно вообще с портами работать, то это можно делать либо через Windows API, либо задействовать какую-то готовую объектную обвёртку над API. Например, такая обёртка есть в библиотеке synapse http://synapse.ararat.cz/doku.php/download, модуль synaser.pas. Я правда ею не пользовался, так как у меня самописная. Добавлено через 8 минут Кстати, только что обратил внимание в вашей литературе тоже упоминается эта библиотека, и как раз есть упоминание модуля synaser.pas. Добавлено через 2 минуты Ваш модуль comport.pas это тоже какая-то обёртка над Windows API, только и всего.
3
|
|
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
| 12.02.2015, 10:30 [ТС] | |
|
С СОМ -порта хочу отправить на RS-485? что скажите на счет этой библиотеки http://sourceforge.net/projects/comport/. Можете какой нибудь конкретный пример подсказать ?
Спасибо большое заранее !
0
|
|
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 12.02.2015, 10:55 | |
|
Работа с портом шутка не сложная. Это по сути несколько API-шных функций. Поэтому мне не нравится для этой цели устанавливать дополнительные компоненты в среду, а здесь как раз это и нужно. У меня для этого просто один модуль подключается, в котором реализован один класс. Но я вообще не большой любитель установки компонентов в среду и если есть возможность этого не делать, я так и делаю. Поэтому подход synapce мне тоже нравится, там как раз такой же подход используется. Но как известно на вкус и цвет ... поэтому всё это ерунда, если Вам нравится так почему бы и нет.
В работе с портами возможно два режима: синхронный (блокирующий) и асинхронный (неблокирующий). Мне однозначно больше нравится первый. Я работаю только в синхронном режиме, т.к. это сильно упрощает логику программы. С портом всегда работаю во втором потоке, чтобы эта блокировка не сказывалась в работе интерфейса. В synapce тоже используется синхронный режим. Какой режим реализован в той библиотеке я не знаю, не смотрел. При работе с 485 рекомендую использовать аппаратные конверторы с автоматическим переключением направления передачи данных. В этом случае для Вас всё будет прозрачно и одинаково что 485, что 232.
1
|
|
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 12.02.2015, 11:53 | |
|
Пример отправки пакета в COM1 на скорости 9600: ComTest.zip
Сделала правда на synapce, не на вашем компоненте ![]() Работу проверил с терминалкой: у меня два порта закальцованых кабелем, на одном была эта программа, на другом терминалка. Программа отправляла, терминалка принимала, всё работало. Сделал на 2009, на 7 скорее всего пути нужно будет прописать к synapse40\source\lib\
2
|
|
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 12.02.2015, 11:57 | |
|
Терминалка: http://www.compt.ru
2
|
|
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
||||||
| 12.02.2015, 12:42 [ТС] | ||||||
|
Здравствуйте! Спасибо что помогаете!!
Обязательно воспользуюсь Вашем советом, просто я новичок и плохо в этом понимаю, вот я кое что сделал используя эту библиотеку http://sourceforge.net/projects/comport/ но выдает ошибку если будет возможность подскажите пожалуйста что здесь не так? не судите строго) ![]()
0
|
||||||
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
| 12.02.2015, 12:44 [ТС] | |
|
Вот файлы программы сом-порт.rar
Заранее спасибо !
0
|
|
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 12.02.2015, 12:53 | |
|
И какую ошибку выдаёт?
0
|
|
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
|
|
| 12.02.2015, 13:17 | |
|
0
|
|
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 12.02.2015, 13:24 | |
|
Глянул исходники компонента.
Для TComPort функция записи такая: function Write(const Buffer; Count: Integer): Integer; Тогда в Вашем примере нужно делать вызов так: ComPort.Write(arrBytes[0],length(arrBytes));
2
|
|
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
| 12.02.2015, 15:03 [ТС] | |
|
Спасибо!! вроде компилирует ошибки нет , скажите пожалуйста пока у меня нет возможности проверить программку на RS-485 можно ли как то проверить, т.е. отправить сигнал или код какой то и получить ответ, читал что можно создать два виртуальных портов и на них проверить, можно так сделать? если есть какая нибудь литература подскажите плизз!!
Спасибо большое заранее! вы мне очень помогли \!!
0
|
|
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 12.02.2015, 15:36 | |
|
Вот этого не знаю, как-то не требовалось никогда.
Я для этого использую конвертер USB/RS-232, продаётся в компьютерных магазинах. У меня на компьютере один обычный порт, один такой порт, который на USB. Порты между собой соединены нуль-модемных кабелем. Для тестирования этого как раз достаточно.
1
|
|
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
||||||
| 12.02.2015, 16:40 [ТС] | ||||||
|
Теперь есть возможность проверить программу на конвертер USB/RS-485 и есть модуль i-87068. В программе добавил код чтобы получить ответ от модуля но программа никак не реагирует, компилируется но не отправляет и не получает ответ от модуля, посмотрите пожалуйста код может быть подскажите что то ?
Спасибо большое!! исходники Scada - копия - копия.rar Delphi_I7000.rar
0
|
||||||
|
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
|
|
| 12.02.2015, 16:47 | |
|
0
|
|
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 13.02.2015, 06:58 | |
|
При работе с железом причин почему не работает может быть достаточно много и просто так сразу винить код не стоит. Может не работать программа, может не работать модуль, может быть проблемы в конвертере, может быть проблемы в кабеле. Проверять нужно всё отдельно, т.е. сужать поиски. Я не просто так упомянул про терминалку. Свяжите модуль с терминалкой. Убедитесь что он что-нибудь посылает. Если он работает по запросу, ну так из терминалки и пошлите ему это запрос. Если там всё работает, то тогда нужно связать программу с терминалкой и убедиться, что программа посылает данные. Только после этого имеет смысл проверять всё вместе.
Добавлено через 1 час 3 минуты Обратил внимание: ComPort.Free; нужно заменить: ComPort.Close; Добавлено через 1 минуту Но от этого она не заработает. Нужно сделать то о чём я написал выше. Добавлено через 12 часов 14 минут Да, ещё забыл сказать про настройки, т.к. это вроде как очевидно, но всё-таки, нужно не забыть убедиться что все параметры передачи выставлены корректно (скорость, ...) и соответствуют требованиям модуля.
1
|
|
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
| 13.02.2015, 08:47 [ТС] | |
|
Я проверил с помощью DCON-Utility все работает (результат на рис.), отправил код (сигнал) и получил ответ. Но сомневаюсь на счет настройки, когда через этот код Comport.ShowSetupDialog; выбираю параметры сом-порта и нажимаю ОК все выбранные параметры сохраняются? С терминалкой пока еще не проверял. Спасибо заранее!
0
|
|
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 13.02.2015, 10:06 | |
|
По поводу того, сохраняются ли параметры или нет не подскажу. Я говорил уже я сам не использую этот компонент, и не планирую в будущем это делать.
Я думаю имеет смысл попробовать жёстко прописать настройки. В компоненте есть свойства, их и нужно установить на нужные значения: TComPort = class(TCustomComPort) property Port; property BaudRate; property Parity; property StopBits; property DataBits; Ещё полезно будет заюзать мониторы порта (что-то вроде снифера), чтобы посмотреть какие реальные пакеты посылает и принимает та работающая программа и Ваша, чтобы можно было сравнить. Я иногда пользуюсь LGComSpy++, но она вроде не работает на виртуальных портах. Терминалка, про которую я писал, тоже вроде умеет, но у меня самого не зарегистрированная её версия и там этого режима нет, а так вроде была эта функция. С другими подобными программами не работал, не в курсе.
1
|
|
|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
||||||
| 13.02.2015, 12:12 [ТС] | ||||||
|
Решил воспользоваться библиотекой synapse, создал класс унаследованный от TThread, который будет реализовывать параллельный поток опроса от сом порта и отображать ответ модуля в полях "ОТВЕТ" и "История выполненных команд" , но выдает ошибку в MainForm.Receive.Text := m_buffer; ? Что делать скажите пожалуйста очень надо!!! Спасибо большое заранеее!!!!!!!
Сом-порт.rar
0
|
||||||
|
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
|
|
| 13.02.2015, 13:05 | |
|
Так у Вас там код не правильный, т.е. не ошибки какие-то, и именно код банально не дописан. Ссылки на переменную, которой нет и всё такое. Тут и подсказывать вроде как нечего, нужно код довести до хотя бы какого-то рабочего состояния, чтобы компилировался хотя бы
![]() Ну и если Вы всё-таки начали с другого компонента, ну так и использовали бы его. Я сомневаюсь, что дело в компоненте, скорее всего какие-то другие проблемы, тем более у Вас есть на руках работающая программа. Добавлено через 15 минут MainForm - нет (у Вас она Form1), Receive - то же нет Добавлено через 2 минуты Поэтому и ошибки Добавлено через 14 минут Вы попробуйте наладить сначала общение с модулем через какую-нибудь другую программу вроде той терминалки, которую я посоветовал, или через неё саму, а потом уже пишите свою программу, когда точно будите знать какие команды нужно посылать, и что должно приходить. Когда точно убедитесь, что всё работает. Если что я пример свой первый подправлю, чтобы он посылал команды и принимал ответы. Это просто.
2
|
|
| 13.02.2015, 13:05 | |
|
Помогаю со студенческими работами здесь
20
COM port COM port Well-known Port Com port Com port и С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|