Господа, не знает ли кто где можно скачать компоненты (или как можно обойтись без них), чтобы заставить C++ Builder (или Delphi) работать с COM портом?
Я скачал несколько подобных компонентов, но ни один не удалось реально заставить работать
Особенно интересует мнение тех, у кого есть действительно работающие программы
программирование COM порта для C++ Builder / Delphi
-
- Уже с Приветом
- Posts: 2741
- Joined: 17 Jul 2000 09:01
- Location: Одесса -> Лос-Анджелес -> Делавер -> Мэриленд -> Вирджиния. Хочу снова в Одессу.
программирование COM порта для C++ Builder / Delphi
А я все чаще замечаю, что меня как будто кто-то подменил...
-
- Уже с Приветом
- Posts: 956
- Joined: 04 Mar 2002 10:01
Re: программирование COM порта для C++ Builder / Delphi
KOT MATPOCKUH wrote:Господа, не знает ли кто где можно скачать компоненты (или как можно обойтись без них), чтобы заставить C++ Builder (или Delphi) работать с COM портом?
Я скачал несколько подобных компонентов, но ни один не удалось реально заставить работать
Особенно интересует мнение тех, у кого есть действительно работающие программы
Берешь фриварный компонент с исходниками, к примеру ComPort непомню-кого и затачиваешь напильником. Я так когда-то и сделал, когда с кардридерами да сканерами баркодов работал. Не бог весть какая сложность,
день работы максимум. Примеров и документации море.
-
- Уже с Приветом
- Posts: 3040
- Joined: 13 Sep 2000 09:01
- Location: Обнинск
А в чем проблема? Можно обойтись Win32 API
Открыть порт:
Установить скорость обмена, паритет, количество бит и тд:
Дальше можно использовать обычные функции ReadFile WriteFile, при ошибке вызывать функцию ClearCommError.
Открыть порт:
Code: Select all
HANDLE hF=CreateFile(cPort, GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
0,
NULL );
Установить скорость обмена, паритет, количество бит и тд:
Code: Select all
DCB dcb;
dcb.DCBlength=sizeof(DCB);
dcb.BaudRate=9600;
dcb.fBinary=1;
dcb.fParity=0;
dcb.fOutxCtsFlow=FALSE;
dcb.fOutxDsrFlow=FALSE;
dcb.fDtrControl=DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity=FALSE;
dcb.fOutX=FALSE;
dcb.fInX=FALSE;
dcb.fErrorChar=FALSE;
dcb.fRtsControl=RTS_CONTROL_DISABLE;
dcb.fAbortOnError=TRUE;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=TWOSTOPBITS;
dcb.XonChar=0;
dcb.XoffChar=0;
dcb.ErrorChar=0;
dcb.EofChar=0;
dcb.EvtChar=0;
SetCommState(hF,&dcb);
Дальше можно использовать обычные функции ReadFile WriteFile, при ошибке вызывать функцию ClearCommError.
-
- Уже с Приветом
- Posts: 2638
- Joined: 17 Sep 2002 08:29
- Location: Riga, Latvia
Regal wrote:Может Turbo Power Async Professional подойдет?
http://sourceforge.net/projects/tpapro/
Удачи.
Да, TurboPower Async Pro - это лучшее что было когда-либо создано. А теперь еще и OpenSource.
А я даже и не знал, что TurboPower сдохли. Видать действительно настал конец эпохи Борланда.
Но и молодцы мужики (я имею ввиду TurboPower). Красиво ушли. И дело свое людям оставили.
Думаю, не ошибусь, если больше ничего не скажу.
-
- Уже с Приветом
- Posts: 2741
- Joined: 17 Jul 2000 09:01
- Location: Одесса -> Лос-Анджелес -> Делавер -> Мэриленд -> Вирджиния. Хочу снова в Одессу.
Re: программирование COM порта для C++ Builder / Delphi
IA72 wrote: Берешь фриварный компонент с исходниками, к примеру ComPort непомню-кого и затачиваешь напильником. Я так когда-то и сделал, когда с кардридерами да сканерами баркодов работал. Не бог весть какая сложность,
день работы максимум. Примеров и документации море.
ComPort пробовал - не пошел. Пытаюсь обратиться к какому-то свойству компонента (хотя бы просто прочесть его) - и получается exception, что-то не туда в памяти пишется. Может потому что у меня хитрая комбинация старого Билдера 3.0 и Windows XP?
И можно ссылочку на примеры плз?
А я все чаще замечаю, что меня как будто кто-то подменил...
-
- Уже с Приветом
- Posts: 2741
- Joined: 17 Jul 2000 09:01
- Location: Одесса -> Лос-Анджелес -> Делавер -> Мэриленд -> Вирджиния. Хочу снова в Одессу.
Regal wrote:Может Turbo Power Async Professional подойдет?
http://sourceforge.net/projects/tpapro/
Удачи.
спасибо, попробую
А я все чаще замечаю, что меня как будто кто-то подменил...