На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Как работать с модемом в Delphi...
    Не подскажет ли кто как работать с модемом на Delphi? Конкретно: как заставить дозвониться/ответить, переслать/принять данные... (хотя-бы байт :)
    Подскажите протоколы, которые использует модем?

    Это сообщение было перенесено сюда или объединено из темы "Как работать с модемом в Delphi..."
      Если хочешь использовать модем на низком уровне грамотнее было бы использовать TAPI (читай Microsoft Windows Telephony API Programmer's reference).
      -- Но можно и руками ;-)
      Открыть СОМ порт (есть компоненты для работы с СОМ портами)и давать модему AT команды (найди где ни будь описание АТ команд).
      Например, что бы дозвонится по номеру 1234567
      напишешь:
      Port.Send('ATDP1234567')

      Это сообщение было перенесено сюда или объединено из темы "Как работать с модемом в Delphi..."
        Ну например есть такой пример, позволяющий проверить состояние модема (состояние его регистров)под Win32.
        procedure TForm1.Button1Click(Sender: TObject);
        var
        CommPort : string;
        hCommFile : THandle;
        ModemStat : DWord;
        begin
        CommPort := 'COM2';
        {Открываем COM порт}
        hCommFile := CreateFile(PChar(CommPort),
        GENERIC_READ,
        0,
        nil,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,
        0);
        if hCommFile = INVALID_HANDLE_VALUE then
        begin
        ShowMessage('Unable to open '+ CommPort);
        exit;
        end;
        {Get the Modem Status}
        if GetCommModemStatus(hCommFile, ModemStat) <> false then begin
        if ModemStat and MS_CTS_ON <> 0 then
        ShowMessage('The CTS (clear-to-send) is on.');
        if ModemStat and MS_DSR_ON <> 0 then
        ShowMessage('The DSR (data-set-ready) is on.');
        if ModemStat and MS_RING_ON <> 0then
        ShowMessage('The ring indicator is on.');
        if ModemStat and MS_RLSD_ON <> 0 then
        ShowMessage('The RLSD (receive-line-signal-detect) is
        on.');
        end;
        {закрываем COM порт}
        CloseHandle(hCommFile);
        end;
          А вот, например, как устанавливать настройки ком порта под Виндами:
          procedure TForm1.Button1Click(Sender: TObject);
          var
          CommPort : string;
          hCommFile : THandle;
          Buffer : PCommConfig;
          size : DWORD;
          begin
          CommPort := 'COM1';
          {Open the comm port}
          hCommFile := CreateFile(PChar(CommPort),
          GENERIC_WRITE,
          0,
          nil,
          OPEN_EXISTING,
          FILE_ATTRIBUTE_NORMAL,
          0);
          if hCommFile=INVALID_HANDLE_VALUE then
          begin
          ShowMessage('Unable to open '+ CommPort);
          exit;
          end;
          {Allocate a temporary buffer}
          GetMem(Buffer, sizeof(TCommConfig));
          {Get the size of the CommConfig structure}
          {as it may be different than documented}
          size := 0;
          GetCommConfig(hCommFile, Buffer^, size);
          {Free the temporary buffer}
          FreeMem(Buffer, sizeof(TCommConfig));
          {Allocate the CommConfig structure}
          GetMem(Buffer, size);
          GetCommConfig(hCommFile, Buffer^, size);
          {Change the baud rate}
          Buffer^.dcb.BaudRate := 1200;
          {Set the comm port to the new configuration}
          SetCommConfig(hCommFile, Buffer^, size);
          {Free the buffer}
          FreeMem(Buffer, size);
          {Close the comm port}
          CloseHandle(hCommFile);
          end;
          А модему, наверное, надо отправлять простые команды (его, модемные) через COM порт.
            Спасибо всем, кто откликнулся. Теперь я умею дозваниваться и передавать строку текста по модему методом WriteFile(). Сложность возникла при чтении с модема - не могу :-( Как мне получить данные? Подскажите еще протоколы работы (или ССЫЛКИ, где можно покопать.) ПЛИЗ!!!

            Это сообщение было перенесено сюда или объединено из темы "RE: Как работать с модемом в Delphi..."
              Если тебе нравиться программировать ручками смотри:
              http://msdn.microsoft.com/library/techart/msdn_serial.htm
              Лучше всего найди компонент для работы с СОМ портом. У меня есть пару, самые мелкие кину счас тебе мылом...

              Это сообщение было перенесено сюда или объединено из темы "RE: Как работать с модемом в Delphi..."
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0632 ]   [ 15 queries used ]   [ Generated: 20.05.24, 01:09 GMT ]