Вопрос № 52680: Всем привет!
13 августа задавал вопрос № 51976. Но из экспертов никто на его не ответил. Лишь Bochvarov NikB в местном форуме попытался помочь. Спасибо ему. Однако задача не решена. Повторю ею. На форме лежит TxtNumber:TEdit и две кнопки: BtnCall...Вопрос № 52725: Добрый день, уважаемые Эксперты!
Подскажите, пожалуйста, а существует ли в природе компонент, типа TLabel с совершенно прозрачным фоном. Надо сделать надпись поверх TImage....
Вопрос № 52.680
Всем привет!
13 августа задавал вопрос № 51976. Но из экспертов никто на его не ответил. Лишь Bochvarov NikB в местном форуме попытался помочь. Спасибо ему. Однако задача не решена. Повторю ею. На форме лежит TxtNumber:TEdit и две кнопки: BtnCall (Набрать номер) и BtnCancel (Отмена). В TxtNumber ввожу номер телефона. Щелчок по BtnCall, и набирается номер телефона, указанный в TxtNumber. Щелчок по BtnCancel разрывает установленною связь. Телефон подключен через модем. Исходя из ответа Bochvarov'a NikB'a, стало ясно: COM-порту
надо посылать команды AT. Т.е. для набора, например, номер "088" посылается команда "ATDT088", a "ATH" – разорвать связь. Для эксперимента я упростил задачу. Щелчок по "Набрать номер" набирает лишь номер "088". Так вот мой вопрос сейчас стоит так: каким образом средствами Delphi 5 посылать АТ-команды СОМ-порту. Я попытался это сделать следующим образом:
procedure TForm1.BtnCallClick(Sender: TObject);
var
Comanda : string;
begin
Form1.BtnCall.Enabled:=false;
Form1.BtnCancel.Enabled:=true;
assignfile(f, 'COM3');
Comanda:='ATDP088'+#13+#10;
{$I-}filemode:=2; reset(f, length(Comanda));{$I+}
if ioresult<>0 then
begin
rewrite(f, length(Comanda));
end;
blockwrite(f, Comanda, 1);
end;
procedure TForm1.BtnCancelClick(Sender: TObject);
var
Comanda : string;
begin
Form1.BtnCall.Enabled:=true;
Form1.BtnCancel.Enabled:=false;
Comanda:='ATH';
closefile(f)
end;
Однако данный код должным образом не работает. Щелчок по "Набрать номер" – слышно лишь как программа "нашла" СОМ-порт, и все. Кстати, попробовал решить данную проблему в VB6. Там я нашел компонент MSComm, и с его помощью через свойство Output мне таки удалось послать СОМ-порту команду 'ATDP088'. Хотелось бы подобного добиться средствами Delphi 5. Итак вопрос: как в Delphi 5 послать СОМ-порту АТ-команду? С примером.
Надеюсь, на этот раз я ответов дождусь.
Отправлен: 20.08.2006, 17:31
Вопрос задал: Бурда Саша (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Mexes
Здравствуйте, Бурда Саша!
Посмотри http://articles.org.ru/cfaq/index.php?catid=48. PS Модема не имею, так что не прокомментирую...
Ответ отправил: Mexes (статус: 2-ой класс)
Ответ отправлен: 20.08.2006, 18:03 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: Jadd
Здравствуйте, Бурда Саша!
Не совсем понятно зачем напрямую использоваь СОМ-порт, если у винды есть хороший API для работы с телефонами, модемами и факсами - TelephonyAPI или TAPI. Для этого API есть и компонентs djn nen http://www.torry.net/pages.php?id=199. Если интересо самому разобраться с этим API, тогда идем вот сюда http://msdn.microsoft.com/library/en-us/tapi/tapi3/tapi_3_1_overview.asp для версии 3.1 (она СОМ-based) или сюда http://msdn.microsoft.com/library/en-us/tapi/tapi3/tapi_3_1_overview.asp.
Удачи.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ICQ: 28260749 ---- Ответ отправлен: 21.08.2006, 09:01 Оценка за ответ: 4
Отвечает: chikanok
Здравствуйте, Бурда Саша!
Я только приехал с отдыха,а так-бы и раньше ответил на ваш вопрос!!!
В приложении пример на поставленый вами вопрос "как в Delphi 5 послать СОМ-порту АТ-команду?", но я считаю что лучше использовать TAPI. Могу выслать вам модули и пример по емаил (отправьте свой емаил по внутренней почте)!
Удачи!!!
Приложение:
--------- Главное желание,а там разберёмся!
Ответ отправил: chikanok (статус: 2-ой класс)
Ответ отправлен: 22.08.2006, 12:11 Оценка за ответ: 5 Комментарий оценки: Спасибо! Вышлите обязательно модули и примеры
Вопрос № 52.725
Добрый день, уважаемые Эксперты!
Подскажите, пожалуйста, а существует ли в природе компонент, типа TLabel с совершенно прозрачным фоном. Надо сделать надпись поверх TImage.
Отвечает: sir henry
Здравствуйте, Дмитрий Александрович!
Конечно существует. Это он самый и есть - обычный TLabel. Поставите у него свойство Transparent в True и фон у него будет совершенно прозрачным.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 21.08.2006, 09:48 Оценка за ответ: 5 Комментарий оценки: Спасибо!Я был не прав, задавая вопрос. Нужен компонент типа TStaticText. Что б его можно было бы таскать мышкой по форме.
Отвечает: D.M.
Здравствуйте, Дмитрий Александрович!
В приложении описание, как сделать перетаскивание компонентов по форме.
Можно применять к перетаскиванию самой формы... :)
Приложение:
--------- Зёзики руллллят :)
Ответ отправил: D.M. (статус: 2-ой класс)
Ответ отправлен: 21.08.2006, 12:03 Оценка за ответ: 5 Комментарий оценки: Спасибо. Так и сделал!