|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Предложение за "читав" COMM компонент?
|
|
Автор |
ИвKo (особняк) |
Публикувано | 09.12.08 08:03 |
|
Търся "читав" COM (RS 232) компонент за Делфи 6?
Както и малко помощ за работа с него.
Ще се опитвам да "чета/управлявам" модем, по специално GSM модеми.
Някаква идея?
| |
|
Аз работя с тези двата:
Първият е простичък и лекичък. Втория има много богата функционалност. И двата имат добри примери, а този на TurboPower си има и нелоши ръководства (два големи PDF-а).
Linux isn't free, it's worthless.
| |
|
Благодаря за информацията.
Спрях се на comport. Така или иначе, това което трябва да направя е да взема списък с всички потдържани АТ команди, да мога да набирам номер, да отговарям на позвъняване, както и да затворя слушалката. Дано да няма проблеми, когато е част от DLL, по точно от TSP (Telephone Service Provider)...
| |
|
Някой да има опит с използването на TComPort (cport) в DLL?
Натъквам се на проблем, че мога да "пиша", т.е. да изпращам команди, но по някаква причина не мога да "слушам" COM порта... т.е. събитията, например OnRing, OnRxChar не се случват.... Всичко е ОК, когато кода е в интерактивно приложение (GUI)... Делфи 6, cport ver. 4 от http://sourceforge.net/projects/comport/
| |
|
Опитай да си компилираш exe-то и dll-а с run-time packages. Не знам как точно работи вътрешно ComPort компонента, но може би това е проблем за него.
Linux isn't free, it's worthless.
| |
|
Не мога - приложението, не би трябвало да е зависимо от делфи пакети.
Тествам тук - нещата отиват към писане от "нулата"
| |
|
Не става въпрос за зависимо или не. Когато приложението и DLL-а се компилират с run-time пакети нещата стоят по съвсем различен начин. Например компилирай си ги без пакети и си предай на dll-а една форма да речем. След това от dll-а направи следното:
procedure Test(Form: TObject);
begin
if Form is TForm then
ShowMessage('Form is TForm)
else
ShowMessage('Form is not TForm);
end;
След това си я извикай от ехе-то:
procedure Test(Form: TObject); external 'Project2';
procedure TForm1.FormCreate(Sender: TObject);
begin
Test(Self);
end;
Може би ще се изненадаш от резултата
След това си билдни двата проекта с runtime packages и иопитай пак.
Като цяло когато не са ти компилирани с пакети двата ти модула се държат като две отделни приложения, просто са в общо адресно пространство. А и какво означава "не би трябвало да е зависимо от делфи пакети"? Компилирай си ги само с необходимите ти пакети и освен твоя dll ще си дистрибутираш и още 1 или няколко bpl-а.
Linux isn't free, it's worthless.
| |
|
Да, да... Така е... Работя с Делфи от версия 1
Просто не ми трябват в случая "ремаркета". BPL-те имат значение, когато на един компютър се инсталират повече от едно приложение компилирани с един и същ компилатор (версия), и когато има предаване на обекти между две приложения създадени от един и същ Делфи компилатор. Иначе няма никакъв смисъл - само главоболия. Просто едно време Борланд се опитаха да направят нещо като MSVCRTD, но разликата между Борланд и Майкрософт е ... Както и да е... В моя случай, DLL-а се извиква от C/C++ приложение, работещо в svchost.exe.
Открих проблема. Всички COMM компоненти, използват PostMessage или SendMessage към някакъв Window който синхронизира ReadFile/WriteFile и "запалва" обработката на събитията. Всичко е ОК, ако процеса има определени права - INTERACTIVE със Десктопа, иначе - създавания Window е невидим за PostMessage/SendMessage и нищо не се случва, т.е. компонента си чете от порта, но не може да "запали" OnЕдикакво си . Така че изхода е писане от нулата, тъй като присвояване на допълнителни права е неприемливо, да не кажа невъзможно...
Весели празници от мен...
| |
Тема
|
Re: Предложение за "читав" COMM компонент?
[re: ИвKo]
|
|
Автор |
naki (Power User) |
Публикувано | 07.01.09 21:36 |
|
Ами аз имам доста написани програми, ползващи сериен порт, не на Делфи, но на C++ Builder.
Ползвам директно Windows API - ReadFile, WriteFile, SetCommTimeOuts и т.н.
| |
Тема
|
Re: Предложение за "читав" COMM компонент?
[re: naki]
|
|
Автор |
ИвKo (особняк) |
Публикувано | 08.01.09 17:17 |
|
Май това е най-чистото решение. И аз стигнах до него, макар и след няколко дена лутане. Получи се много семпло решение...
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|