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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2013, 07:37   #11
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

OFFTOP >
Цитата:
Здесь скорее проблема в ... я уже очень давно не програмил
вы знаете, вы так часто упоминаете сие в своих постах, что надоедать начинает. Я вот тоже часто не "программлю", я вообще радиоинженер. Так что давайте в партизанов не играть и назовем конкретную модель GSM-терминала с которым вы работаете, благо для этого есть все предпосылки.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.08.2013, 13:48   #12
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
OFFTOP >
вы знаете, вы так часто упоминаете сие в своих постах, что надоедать начинает. Я вот тоже часто не "программлю", я вообще радиоинженер. Так что давайте в партизанов не играть и назовем конкретную модель GSM-терминала с которым вы работаете, благо для этого есть все предпосылки.
Я еще раз повторяю:в глаза его не видел.Находится он где-то в 800 километрах от моего места проживания.Человек,который попросил написать под него софт сам о нем не имеет никакой информации.Единственное,что удалось выпытать из терминала - жрет wavecom-овские команды.Примерное описание,которое мне передали:"Хреновина из Китая,в которую вставляются сим карты.Других данных нет."Совсем забыл.Можно-ли как-то организовать фильтр по 2-м байтам,а не по одному?Сейчас стоит вариант фильтра по возврату каретки ,но входящая информация(аля смс пришло и т.д.) начинается с 0x0A(клавиша энтер).Фильтр через dsb структуру (параметр EvtChar).

Последний раз редактировалось Zadovatel; 29.08.2013 в 13:53.
Zadovatel вне форума Ответить с цитированием
Старый 29.08.2013, 14:38   #13
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Я еще раз повторяю:в глаза его не видел.Находится он где-то в 800 километрах от моего места проживания.Человек,который попросил написать под него софт сам о нем не имеет никакой информации.Единственное,что удалось выпытать из терминала - жрет wavecom-овские команды.
выше я дал команды, которые дадут производителя, модель и версию прошивки. Дело за вами.

Цитата:
Совсем забыл.Можно-ли как-то организовать фильтр по 2-м байтам,а не по одному?Сейчас стоит вариант фильтра по возврату каретки ,но входящая информация(аля смс пришло и т.д.) начинается с 0x0A
можно, вручную самому. Pos(), PosEx().
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.09.2013, 11:25   #14
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Как правильно чистить буфер?На сегодняшний момент функция чтения следующая:
Код:
procedure ReadComm;
  begin
     while true do
   begin
    TransMask:=0;
    WaitCommEvent(CommHandle,TransMask,@Ovr); //æäåì
    if (TransMask and EV_RXFLAG)=EV_RXFLAG then //ïðîâåðÿåì íóæíîå ñîáûòèå
     begin
     ClearCommError(CommHandle,Errs,@Stat);//ñáðàñûâàåì ôëàã
      Kols := Stat.cbInQue;
      fillChar(Resive, sizeOf(Resive), 0); //Î÷èùàåì áóôåð
      ReadFile(CommHandle,Resive,Kols,Kols,@Ovr);//÷èòàåì
      {òóò äîëæíà èäòè îáðàáîòêà ïðèíÿòîé èíôîðìàöèè èç Resive}
      ReadMyBuff;
     end;//mask
    end;//while
  end;
Жирным выделил очистку.Проблема в том,что после нескольких циклов чтения приложение завершается с критической ошибкой из-за переполнения буфера.С размером все в порядке.И так ему уже 1кб выделил...
Zadovatel вне форума Ответить с цитированием
Старый 02.09.2013, 12:11   #15
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
На сегодняшний момент функция чтения следующая:
...пример чтения у меня:
Код:
// обработчик потока приема
procedure DoEvent;
var Resive :array [0..255] of char;
    comstat: TComStat;
    mask, signal, temp, btr: dword;
    //
    str: string;
    i: Integer;
begin
 ovr.hEvent:= CreateEvent(nil, true, true, nil);

 while true do begin
  WaitCommEvent(h, mask, @ovr);
  signal:= WaitForSingleObject(ovr.hEvent, INFINITE);

  if (signal = WAIT_OBJECT_0) then
   if (GetOverlappedResult(h, ovr, temp, true)) then begin

    if ((mask and EV_RXCHAR)<>0) then begin
      ClearCommError(h, temp, @comstat);
      btr:= comstat.cbInQue;
      str:= '';

      ReadFile(h, Resive, btr, temp, @ovr);
      for i:= 0 to temp-1 do
       str:= str + Resive[i];
      // визуализируем принятый пакет
      show_tn(1, str, 'Copyright © RS-232/USB Test Monitor and Control');
    end;
   end;

 end
end;
Цитата:
Как правильно чистить буфер?
когда игнорируют мои вопросы, желание отвечать все меньше и меньше.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.09.2013, 20:59   #16
Zadovatel
Пользователь
 
Регистрация: 25.08.2013
Сообщений: 46
По умолчанию

Большое спасибо за код.Проблема оказалось не в переполнении.Если я не ответил на Ваш вопрос,то возможно я его банально не заметил.Надежнее через личку спрашивать.
Zadovatel вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа функциями "ЕСЛИ", "И" и вывод текстового результата johny_03 Microsoft Office Excel 3 04.08.2014 11:01
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
настроить при открытии Excel 2003 в окошке "Тип файлов" вывод пункта "Все файлы (*.*)" по умолчанию? Unior Microsoft Office Excel 2 01.03.2009 02:42