|
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
|
|
Delphi 7 COM-port11.02.2015, 12:15. Показов 31317. Ответов 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,608
|
|
| 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,608
|
|
| 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 и С++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|