Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2013, 11:10   #1
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию Отправка SMS через Com-порт

Добрый день.
Помогите разобраться.
Пишу программу для отправки СМС и не получается отправить. Сразу, первый раз после подключения телефона и отправки из программы, телефон пишет сообщение отправлено, но не приходит, и больше не отправляется.
Вот код
Открытие порта
Код:
hCom := CreateFile('COM7',GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED,0);
if hCom=INVALID_HANDLE_VALUE then begin
   ShowMessage('не удалось открыть'); //не удалось открыть
    end
    else begin ShowMessage('удалось открыть');
    end;

SetupComm(hCom,1600,1600);   //  установкf размеров внутренних буферов приема и передачи

SetCommState(hCom,DCB);        //  чтение/запись структуры DCB порта
with DCB do begin              //  настроить нужным образом
    BaudRate := CBR_19200;               //  скорость порта, 115200 деленная на значение
    ByteSize := 8;               //  число информационных бит в передаваемых и принимаемых байтах
    Parity:=NoParity;          //  Бит чесности
    StopBits:=OneStopBit;      //  1 стоповый бит
end;
if not SetCommState(hCom,DCB) then ShowMessage('Не передали настройки порта');

SetCommTimeouts(hCom,Timeouts);    //установка таймаутов
 with TimeOuts do begin
  ReadIntervalTimeout := 1;
  ReadTotalTimeoutMultiplier := 0;
  ReadTotalTimeoutConstant := 1;
  WriteTotalTimeoutMultiplier := 2;
  WriteTotalTimeoutConstant := 2;
 end;

 if not PurgeComm(hCom, PURGE_TXCLEAR or PURGE_RXCLEAR) then   // очищает очередь приема\передачи
 raise Exception.Create('Error purging port');        // и завершает все находящиеся в ожидании запросы ввода/вывода.

 if not SetCommMask(hCom, EV_RXCHAR) then             //ожидаybt прием одного или нескольких символов (байт)
 raise Exception.Create('Error setting port mask');
и отправка
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
lpModems : DWORD;
nomer, textsms : string;
begin
nomer := '+375291023638';
textsms := 'Hello, world';

 SendCom('AT+CMGF=0' + #13#10);
 Sleep(5000);
 ShowMessage('Прошло 1');

  SendCom('AT+CMGS="' + nomer + '" '+ #13#10);
  Sleep(5000);
  ShowMessage('Прошло 2');

    SendCom(textsms + #26);
    Sleep(5000);
    ShowMessage('Прошло 3') ;


ShowMessage('Наверно записалось');
end;


procedure SendCom(s: string);
var TempArray: array[1..255] of Byte;
    Count    : Integer;
    TX_Count : Cardinal;
    OverWrite: TOverlapped;
begin
 OverWrite.hEvent := CreateEvent(nil, True, False, nil);
 if OverWrite.hEvent = Null then
  raise Exception.Create('Error creating write event');

 for Count:= 1 to Length(S) do
   TempArray[Count]:= Ord(S[Count]);
   if (not WriteFile(hCom, TempArray, SizeOf(TempArray), TX_Count, @OverWrite)) // пишет строку в порт
   and (GetLastError <> ERROR_IO_PENDING) then
  raise Exception.Create('Error writing port');

end;
Подскажите, что не так.

Последний раз редактировалось lord24; 21.05.2013 в 11:12.
lord24 вне форума Ответить с цитированием
Старый 21.05.2013, 11:10   #2
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

Да, и по ходу вопрос, как вставлять код?
lord24 вне форума Ответить с цитированием
Старый 21.05.2013, 13:32   #3
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Я выкладывал ссылки по этой теме и код... поищите по форуму... если что пишите...
у меня организовано СМС уведомление и обзвон клиентов.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 21.05.2013, 16:48   #4
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

Кое что по форуму нашел, но разобраться сложно. Как-то навернуто получилось.
lord24 вне форума Ответить с цитированием
Старый 22.05.2013, 09:28   #5
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ну если работает то всё хорошо
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 24.05.2013, 09:49   #6
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

Слишком мудрено, у меня нет такого опыта. Хоть и исходники есть, но куча всего там и непонятно что за чем. Мне бы только смс отправить. Но как?
lord24 вне форума Ответить с цитированием
Старый 24.05.2013, 10:05   #7
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

Да, и прога та не работает у меня.
lord24 вне форума Ответить с цитированием
Старый 26.07.2013, 16:33   #8
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

Народ помогите!
lord24 вне форума Ответить с цитированием
Старый 26.07.2013, 17:36   #9
Стертор
Заблокирован
 
Регистрация: 24.07.2013
Сообщений: 41
По умолчанию

Возможно, немного не в тему, но зачем же мучить телефон, когда существует столько сайтов для бесплатной отправки смс? Налагается, правда, лимит на количество сообщений с одного и того же IP - адреса, но ведь прокси не грех юзать?
Стертор вне форума Ответить с цитированием
Старый 26.07.2013, 18:11   #10
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,453
По умолчанию

можете воспользоваться компонентом nrComm - если надо компонент исходник, пишите в лс
beegl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка SMS через USB модем? Leximus Общие вопросы Delphi 18 18.03.2011 22:11
Отправка нескольких SMS через мобильник Spot Работа с сетью в Delphi 4 24.02.2011 03:18
Отправка SMS посредством АТ команд через мобильник alenkov Работа с сетью в Delphi 22 28.12.2010 17:11
Отправка SMS через клик по строке таблицы RUBEY Microsoft Office Excel 4 25.12.2008 11:07
отправка sms Promise Работа с сетью в Delphi 12 16.07.2008 18:10