Страница 1 из 1
RS 232 прием на ПК
Добавлено: Ср июн 22, 2011 00:24:15
romanF1
подскажите компонент для написания программы Delphi с примером для приема данных с ком порта
Re: RS 232 прием на ПК
Добавлено: Ср июн 22, 2011 07:27:34
МитяРа
romanF1 писал(а):программы Delphi
Это к пушистому
Ploop-у - он у нас тут по Дэлфям специализируется..
Re: RS 232 прием на ПК
Добавлено: Ср июн 22, 2011 08:34:26
ploop
Это к гладкошёрстному гуглу. Пушистый ploop с com-портом не работал, и чтобы ответить - ему тоже придётся договариваться с гуглом

Re: RS 232 прием на ПК
Добавлено: Ср июн 22, 2011 08:37:48
orinoko
1.
+----------+
| ComPort Library version 3.10 |
| for Delphi 3, 4, 5, 6, 7, 2005, 2006 |
| and C++ Builder 3, 4, 5, 6 |
| |
| by Dejan Crnila 1998-2002 |
| maintained by Lars Dybdahl and Paul Doland |
+----------+
2.
// UNIT : CPDrv.pas
// CONTENTS : TCommPortDriver component
// VERSION : 2.1
// TARGET : (Inprise's) Borland Delphi 4.0
// AUTHOR : Marco Cocco
// STATUS : Freeware
3. TurboPower Async Professional
Второй мне нравится больше. А вообще таких компонентов - океан
Re: RS 232 прием на ПК
Добавлено: Ср июн 22, 2011 09:28:22
Engineer_Keen
Чтобы работать с ком портом необязательно использовать компоненты, достаточно стандартных функций типа CreateFile, WriteFile, ReadFile. Только с настройками нужно будет немного повозиться (одна DCB чего стоит).
Скачайте
DRKB, там помимо кучи примеров есть и работа с портами.
Re: RS 232 прием на ПК
Добавлено: Ср июн 22, 2011 10:26:11
Мастер Ломастер
простой, надежный и достаточно удобный компонент с открытым исходным кодом, бесплатный - это comm32. находится поиском, если не найдете - скажите и я вам его вышлю.
что касается функций Windows API, то это весьма и весьма замороченное дело - работать с ними. хотя принципиально можно и тупо при помощи стандартных TFileStream или даже процедуры read работать - но тоже не фонтан. советую comm32
Re: RS 232 прием на ПК
Добавлено: Чт июн 23, 2011 10:29:00
ChipKiller
romanF1 писал(а):подскажите компонент для написания программы Delphi с примером для приема данных с ком порта
... вот этого вполне хватит, чтобы читать/писать в СОМ-порт с помощью WinApi. На паскаль переписать недолго ИМХО
Код: Выделить всё
hCom=CreateFile(pChar,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0, NULL);
if(hCom!=INVALID_HANDLE_VALUE) {
GetCommState(hCom, &dcb);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hCom, &dcb); //
cto.ReadTotalTimeoutConstant = 2100;
SetCommTimeouts(hCom, &cto);
Engineer_Keen писал(а):Чтобы работать с ком портом необязательно использовать компоненты, достаточно стандартных функций типа CreateFile, WriteFile, ReadFile. Только с настройками нужно будет немного повозиться (одна DCB чего стоит). .....
... как видим настройка DCB - 4 строчки. Еще забыли COMMTIMEOUTS, но настройка тоже проста... При использовании WinApi, с СОМ-портом можно работать хоть из Excel...

Re: RS 232 прием на ПК
Добавлено: Чт июн 23, 2011 11:02:15
Engineer_Keen
ChipKiller писал(а):как видим настройка DCB - 4 строчки
Ну да, просто остальные остаются по-умолчанию, но я их на всякий случай тоже настраиваю
ChipKiller писал(а):При использовании WinApi, с СОМ-портом можно работать хоть из Excel...

Я ушел от компонентов после того, как при переходе с win98 на XP, они работать отказались, хотя наверно они просто устаревшие были...
Re: RS 232 прием на ПК
Добавлено: Чт июн 23, 2011 11:12:06
Мурик
Для работы с COM портом, можно использовать DLL из архива, которую можно вызвать из любой среды программирования в т. ч. и дельфи.
Там же в архиве есть описание функций DLL и ее исходный текст.
Re: RS 232 прием на ПК
Добавлено: Чт июн 23, 2011 11:27:09
ChipKiller
Engineer_Keen писал(а):Я ушел от компонентов после того, как при переходе с win98 на XP, они работать отказались, хотя наверно они просто устаревшие были...
... а компоненты зачем? все делается с помощью Declare из VBA
Код: Выделить всё
Declare Function CloseHandle Lib "kernel32" (ByVal Handle As Long) As Long
... и остальные ф-ции так же...
Мурик писал(а):Для работы с COM портом, можно использовать DLL из архива, которую можно вызвать из любой среды программирования
... ну так это и есть WinApi - использование встроенных функций из dll Windows
Re: RS 232 прием на ПК
Добавлено: Чт июн 23, 2011 12:48:09
Мурик
ChipKiller писал(а): ну так это и есть WinApi - использование встроенных функций из dll Windows
Работать проще чем напрямую с WinAPI.
Re: RS 232 прием на ПК
Добавлено: Чт июн 23, 2011 12:59:34
Мастер Ломастер
ChipKiller писал(а):... вот этого вполне хватит, чтобы читать/писать в СОМ-порт с помощью WinApi. На паскаль переписать недолго ИМХО
во-первых, в паскале для этого вообще не надо особо мудрить:
Код: Выделить всё
var ft : Text;
Assign(ft, 'COM1');
Reset(ft);
write(ft,'Hello, World!');
Close(ft);
все это в конечном итоге и сведется к вызову функции WinApi...
во-вторых, очень маловероятно, что этого хватит... ибо СОМ-порт очень медленное устройство, работа напрямую вот так, как показано мною или
ChipKiller-ом, приведет к постоянному подвисанию программы в момент вывода в порт и тем более в момент чтения оттуда... а если вы решите прочесть строку, которая еще не пришла в порт - вы зависните наглухо секунд на 20 - пока не вылетит ошибка системы. поэтому надо работать с
OVERLAPPED-режимом, т.е. с асинхронным, а это сразу потянет за собой отдельную
Thread для постоянного контроля порта, либо создание CallBack-функций и т.п. гемор - это весьма трудоемко и требует неслабых познаний в WinApi. В делфи проще использовать готовые компоненты -
comm32 один из них, снова рекомендую!
Re: RS 232 прием на ПК
Добавлено: Чт июн 23, 2011 21:47:25
ChipKiller
Мурик писал(а):Работать проще чем напрямую с WinAPI
... возможно - все зависит от задачи. В любом случае все эти библиотеки есть не что иное, как надстройка над WinApi.
Мастер Ломастер писал(а):... ибо СОМ-порт очень медленное устройство, работа напрямую вот так, как показано мною или ChipKiller-ом, приведет к постоянному подвисанию программы в момент вывода в порт и тем более в момент чтения оттуда... а если вы решите прочесть строку, которая еще не пришла в порт - вы зависните наглухо секунд на 20 ...
... а никто и не рассчитывает на "стремительную" работу Cом-порта (приведенный код из "живой" программы программатора - великолепно работает на 57,6Кбит/с ) для борьбы с зависаниями помогает
cto - можно конечно работать с асинхронным выводом через отдельный поток .... а оно надо ??? ... тем более, что топикстартер об этом ничего не упоминал ....
Re: RS 232 прием на ПК
Добавлено: Сб июн 25, 2011 16:09:33
romanF1
а если я использую переходных FT232R от ком порта микроконтроллера к usb то программу на компьютере нужно писать под usb или под виртуальный ком порт?
Re: RS 232 прием на ПК
Добавлено: Сб июн 25, 2011 16:44:59
Мурик
romanF1 писал(а):или под виртуальный ком порт
Ага, под него.
Re: RS 232 прием на ПК
Добавлено: Сб июн 25, 2011 16:57:22
romanF1
спс )))