![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
ХРЕНЕЮ с ИНДИ
Пользователь
Регистрация: 08.02.2009
Сообщений: 92
|
![]()
Всем привет! Если у кого информация по работе с 232 интерфейсом? Как (своей программой) считать или послать данные? Может кто разбирался с железом ?
Велкам! :D http://radiomedtech.ucoz.ru
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
в любом help-е (delphi-world, DRKB, dFAQ от Михалыча) есть примеры работы с COM портом
Код:
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 08.04.2021
Сообщений: 10
|
![]()
подскажите как прописать совпадение в label код который приходит из ком порта 0f 0f 0f 05 00 00 eb 0a 00 00 00 eb отправлять в ком не надо а только читать и пересылать в label голову сломал как написать код, помогите может у кого есть заготовка?
[11/04/2021 16:26:43] 181 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4) STATUS_SUCCESS IOCTL_SERIAL_GET_COMMSTATUS - Request returns information about the communication status of a COM port Errors - 0 HoldReasons - 0 AmountInInQueue - 12 AmountInOutQueue - 0 EofReceived - 0 WaitForImmediate - 0 ---------------------------------------------------------------------------------- [11/04/2021 16:26:43] 183 IRP_MJ_READ - Transfers data from a COM port to a client (COM4) - 12 bytes of 12 STATUS_SUCCESS 0f 0f 0f 05 00 00 eb 0a 00 00 00 eb ......л....л ---------------------------------------------------------------------------------- [11/04/2021 16:26:43] 185 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4) STATUS_SUCCESS IOCTL_SERIAL_WAIT_ON_MASK - Request is used to wait for the occurrence of any wait event specified by using an IOCTL_SERIAL_SET_WAIT_MASK request Mask - 0x00000001 (EV_RXCHAR) ---------------------------------------------------------------------------------- [11/04/2021 16:26:43] 187 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM4) STATUS_SUCCESS IOCTL_SERIAL_GET_WAIT_MASK - Request returns the event wait mask that is currently set on a COM port Mask - 0x00000119 (EV_CTS | EV_DSR | EV_RING | EV_RXCHAR) ---------------------------------------------------------------------------------- вот такая команда приходит Последний раз редактировалось VGuller; 13.04.2021 в 14:43. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 28.02.2009
Сообщений: 42
|
![]()
VGuller использовал для промышленного применения.
работает стабильно до сих пор - правда уже через переходник USB-COM. на чипе от FTDI. Платы расширения на PCI тоже видел. правда требоваалась настройка. вобщем сам unit и пример терминала. вариант для отладки был. поэтому извеняй. пользование терминалом. запускаешь две копии программы. одну настраиваешь на com3 другую на com4. порты соединил нуль теринальным кабелем. ну или на разных машинах с ком портом. уже все не помню. давно было. нашел драйвер виртуальных портов что пользовал для отладки.... надеюсь поможет. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 08.04.2021
Сообщений: 10
|
![]()
stalkernet, благодарю вас за помощь , я хочу до конца понять процедуру отслеживания и реагирование объектом в форме на поступление команды в ком порт, сейчас попытаюсь объяснить свои задачи, вот среди этих команд и информации поступающих в порт мне нужно отследить и передать в объект находящийся в форме и который будет менять цвет при поступлении команды прописанной в нем и при совпадении этих данных будет происходить это действие , это как если писать для микроконтроллера вольтметр, градация ацп выдает двоичный код который можно прописать в любом из портов который в последствии будет включаться, вроде правильно сформулировал )))))
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 28.02.2009
Сообщений: 42
|
![]()
VGuller с точки зрения как делается в промишленности. но предупреждаю сразу. забросил ле 7 назад уже, после 20 лет разработок....
шаг первый и самый главный. Жестко Определиться с форатом пакета\кадра. например: 1 байт - признак данных. (1 - данные АЦП) 2,3 байт - данные ацп - где старший\младший решай сам. 4 байт - контрольная сумма. итого 4 байта. теперь надо опредилится как будеш передовать из UART. посимвольно или бинарно. в зависимости от языка для контроллера. в программе на коммпе. тут несколько вариантов. или через отдельный поток или таймер. нужно постоянно мониторить буфер СОМ порта. таймер. на форму кидаешь таймер. в обработчике читаешь буфер. обнуляешь его. у тебя на руках массив из 4 байт. дальше с ним делаешь что тебе надо. все это умеет BCPort. Ну и почитай ModBus. как я понял нужно в зависимости от принятых данных принимать решение. или тебе нужен самописаный монитор ком порта на вхов и выход? тоды там несколько иначе. Последний раз редактировалось stalkernet; 17.04.2021 в 18:59. |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 08.04.2021
Сообщений: 10
|
![]()
stalkernet, в порт летит всякий мусор но среди мусора есть строчка 0f 0f 0f 05 00 00 eb 0a 00 00 00 eb вот ее надо прочитать и такую же строчку прописать в блоке если строка прилетит из порта и совпадет с строкой в блоке то блок должен поменять цвет
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 28.02.2009
Сообщений: 42
|
![]()
VGuller Правильно понял?
ты своей прогой опрашиваешь порт с определенным интервалом. если буфер не равен нулю. его читаешь. буфер представляетиз себя кашу. если эта каша представляет собой вид - каша неизвестной длинны + 0f 0f 0f 05 00 00 eb 0a 00 00 00 eb + каша. то надо чтото кудато записать. записать надо 0f 0f 0f 05 00 00 eb 0a 00 00 00 eb ......л....л ? или просто 0f 0f 0f 05 00 00 eb 0a 00 00 00 eb ? или ......л....л? или 0f 0f 0f 05 00 00 eb 0a 00 00 00 eb - это признак необходимых данных? повторю буфер это массив типа байт. как искать последовательность в массиве думаю обьяснять не нужно. просто с шагом от 0 до длинны перебираешь массив - если все совпало - вот твоя строка. дальше решай сам что с ней делать. или может надо - если она появилась надо сделать отметку. а если она повторно появилась зажечь индикатор? Да и что такое блок и что в него надо записать? или у тебя одна программа сидит смотрит порт и выводит лог в окно. а ты своей хочешь считать из этого окна данные. разобрать их и если есть строчка зажечь индикатор? Последний раз редактировалось stalkernet; 17.04.2021 в 20:42. |
![]() |
![]() |
![]() |
#9 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]()
VGuller, вы сами собираетесь писать программу или нет? Если нет, то может вам лучше обратиться во фриланс и заказать там?
Пока что в ваших постах не было никаких намёков что вы пытались что-то делать сами. Ну кроме освоения (частичного) PortMon'а от брата нашего старшего Марка Руссиновича. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 11.08.2011
Сообщений: 67
|
![]()
Подскажите пожалуйста, все-ли грамотно в коде (создал вопрос по аналогичной тематике):
https://programmersforum.ru/showthread.php?t=340315 Последний раз редактировалось Foxpronet; 17.09.2021 в 00:20. Причина: Чел. фактор |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Delphi. Работа с БД. | Xeon332 | Фриланс | 12 | 22.03.2010 22:22 |
Работа с графикой в Delphi | AlterProger | Помощь студентам | 3 | 20.01.2010 15:59 |
Ibm Anyplace Kiosk и его сканер штрих-кода Rs232 | California | Компьютерное железо | 2 | 06.07.2008 18:41 |
Работа со строками. Delphi | defeat | Помощь студентам | 4 | 10.01.2008 13:39 |