На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

Не приветствуется поднятие старых тем. Если ваш вопрос перекликается со старой темой, то для вопроса лучше создать новую тему, а старую указать в первом сообщении с описанием взаимосвязи.

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
Страницы: (4) « Первая ... 2 3 [4]  все  ( Перейти к последнему сообщению )  
> Проверка существования подключения к Socket Server со стороны клиента
    Цитата apprentice @
    ExpandedWrap disabled
      output.Socket.SendBuf(BufS,14);

    Мдя....Ну и где ты проверяешь результат вызова этой функции? :huh: Сколько байт у тебя реально отправилось в канал? :huh:
      Решил проблему следующим образом. Знаю что не элегантно. Знаю Вы решили бы красивее но так работает и ответ о отключении приходит с приличной скоростью.

      ExpandedWrap disabled
        unit Unit3;
         
        interface
         
        uses
          Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
         winsock, StdCtrls, IdIcmpClient;
         
        type
          PingTread = class(TThread)
          ind: TIdIcmpClient;
          public
            tex:string;
          private
         
            { Private declarations }
          protected
         
            procedure Execute; override;
            procedure scan();
            procedure FormUpd;
          public
            constructor create_tr(ips: string; port:integer);
          end;
        implementation
          uses unit2, unit1;
         
         
        constructor PingTread.create_tr(ips: string; port:integer);
        begin
          inherited Create(true);
          ind:=TIdIcmpClient.Create(nil);
          ind.Port:=port;
          ind.Host:=ips;
         
          FreeOnTerminate:=true;
          Priority:=tpLower;
          Resume;
         
        end;
         
        procedure PingTread.Execute;
        begin
          while true do
          begin
            scan();
            Synchronize(FormUpd);
            sleep(4000);
          end;
        end;
         
        procedure PingTread.FormUpd;
        begin
          form1.Label3.Caption:=tex;
          if tex='connect' then form1.flagOut:=true
          else form1.flagOut:=false
        end;
         
        procedure PingTread.scan();
        begin
          ind.Ping;
          if ind.ReplyStatus.TimeToLive=100 then tex:='connect'
          else tex:='disconnect'
        end;
         
         
        end.


      Добавлено
      Цитата medved_68 @
      Цитата apprentice @
      ExpandedWrap disabled
        output.Socket.SendBuf(BufS,14);

      Мдя....Ну и где ты проверяешь результат вызова этой функции? :huh: Сколько байт у тебя реально отправилось в канал? :huh:

      вот чисто для себя все таки хочу разобраться. Как это проверить?
        Цитата apprentice @
        ExpandedWrap disabled
          while true do
        :D А поток, стало быть, ты разрушаешь извне? Или "утечка памяти" на неразрушенный объект?
        Цитата apprentice @
        вот чисто для себя все таки хочу разобраться. Как это проверить?
        Ну так почитай справку, что ли, по функции SendBuf. ЧТО ОНА ВОЗВРАЩАЕТ в качестве РЕЗУЛЬТАТА своего ВЫПОЛНЕНИЯ...И сразу станет ясно, как это делается. :D
        Сообщение отредактировано: medved_68 -
          Цитата medved_68 @
          Цитата apprentice @
          ExpandedWrap disabled
            while true do
          :D А поток, стало быть, ты разрушаешь извне? Или "утечка памяти" на неразрушенный объект?
          Цитата apprentice @
          вот чисто для себя все таки хочу разобраться. Как это проверить?
          Ну так почитай справку, что ли, по функции SendBuf. ЧТО ОНА ВОЗВРАЩАЕТ в качестве РЕЗУЛЬТАТА своего ВЫПОЛНЕНИЯ...И сразу станет ясно, как это делается. :D

          он разрушается при закрытии приложения. Он же должен висеть в памяти пока оно запущено конечно можно сделать и по таймеру. Как Вы считаете лучше?
            Цитата apprentice @
            он разрушается при закрытии приложения.

            Я понимаю. Но сомнения. :D Не вяжется вот это:
            Цитата apprentice @
            ExpandedWrap disabled
              FreeOnTerminate:=true;
            с вот этим:
            Цитата apprentice @
            ExpandedWrap disabled
              while true do
            :D
            Цитата apprentice @
            Как Вы считаете лучше?

            Неверно. Считать должен ты. Я же не знаю полного расклада. Так что.....Может у тебя там вообще комп выключается с прекращением работы приложения и такой подход вполне оправдан. :D
              попробовал сделать так

              ExpandedWrap disabled
                  bufS[1]:=30;
                  bufS[2]:=5;
                  bufS[3]:=5;
                  bufS[4]:=0;
                  bufS[5]:=0;
                  bufS[6]:=0;
                  bufS[7]:=0;
                  bufS[8]:=0;
                  bufS[9]:=0;
                  bufS[10]:=0;
                  bufS[11]:=0;
                  bufS[12]:=0;
                  bufS[13]:=0;
                  bufS[14]:=0;
                  i:=output.Socket.SendBuf(BufS,14);
                  form1.Label3.Caption:=inttostr(i);

              если я правильно Вас понял то при отключении число должно стать = 0 это происходит через 40 сек после отключения. Это очень долго.
                Цитата apprentice @
                если я правильно Вас понял то при отключении число должно стать = 0

                Да.
                Цитата apprentice @
                Это очень долго.

                Почему? :unsure:
                  Цитата medved_68 @
                  Неверно. Считать должен ты. Я же не знаю полного расклада. Так что.....Может у тебя там вообще комп выключается с прекращением работы приложения и такой подход вполне оправдан. :D

                  Ну в принципе да если стопорнуть это приложение никто никуда не выйдет и не задет на предприятии. Так что комп будит выключатся только вместе с программой.
                    Цитата apprentice @
                    Ну в принципе да если стопорнуть это приложение никто никуда не выйдет и не задет на предприятии.

                    СКУД? :D
                      Цитата medved_68 @
                      Цитата apprentice @
                      Ну в принципе да если стопорнуть это приложение никто никуда не выйдет и не задет на предприятии.

                      СКУД? :D

                      Вы шпионите за мной :ph34r: Да он самый :D

                      Добавлено
                      Цитата apprentice @
                      Цитата medved_68 @
                      Неверно. Считать должен ты. Я же не знаю полного расклада. Так что.....Может у тебя там вообще комп выключается с прекращением работы приложения и такой подход вполне оправдан. :D

                      Ну в принципе да если стопорнуть это приложение никто никуда не выйдет и не задет на предприятии. Так что комп будит выключатся только вместе с программой.

                      А люди ждать не любят. А выпубать свичи для того что бы телефон подзарядить любят. А я хочу какуюто алярму присобачить что б сразу было видно что какой то из ридеров отвалился.

                      Добавлено
                      Цитата medved_68 @
                      Цитата apprentice @
                      если я правильно Вас понял то при отключении число должно стать = 0

                      Да.
                      Цитата apprentice @
                      Это очень долго.

                      Почему? :unsure:

                      ой чутка не то процитировал
                        Цитата apprentice @
                        Да он самый :D

                        Тогда у тебя неправильная топология. Ридер должен на борту иметь UNIQUE-коды карт. У меня каждый ридер оснащен восемью микросхемами 24С256 (для этой серии это максимальный пул адресации), что мне дает возможность без ОБРАЩЕНИЯ К ЦЕНТРАЛЬНОМУ серверу спокойно пропускать 2000 UNIQUE-кодов формата E-marine. Разумеется, они меняются каждый день в 00.00 в соответствии с поданными заявками мастеров на следующий день (подушевой список смен). :D Обычно в смене не более 125-200 человек, так что запас для ридеров весьма велик. Сам ридер фиксирует до 10 записей прохода и отправляет их на сервер, который на основе данных формирует документ посещения. Этим у меня занимается 1С (ну проще оказалось найти тело, понимающее в 1С, чем в тех же системах доступа, которые бесплатно предлагают все, кому не лень). Разумеется, если сервер почему то недоступен, то вся эта байда начинает сохранятся на mикроSD. Поэтому мой тебе совет - перекраивай топологию, пока не увяз по уши. Сеть не должна стать причиной сбоев СКУД. Иначе тебя могут серьезно и на нехилые бабки прижать те же пожарные, к примеру.... :D
                          Цитата medved_68 @
                          Цитата apprentice @
                          Да он самый :D

                          Тогда у тебя неправильная топология. Ридер должен на борту иметь UNIQUE-коды карт. У меня каждый ридер оснащен восемью микросхемами 24С256 (для этой серии это максимальный пул адресации), что мне дает возможность без ОБРАЩЕНИЯ К ЦЕНТРАЛЬНОМУ серверу спокойно пропускать 2000 UNIQUE-кодов формата E-marine. Разумеется, они меняются каждый день в 00.00 в соответствии с поданными заявками мастеров на следующий день (подушевой список смен). :D Обычно в смене не более 125-200 человек, так что запас для ридеров весьма велик. Сам ридер фиксирует до 10 записей прохода и отправляет их на сервер, который на основе данных формирует документ посещения. Этим у меня занимается 1С (ну проще оказалось найти тело, понимающее в 1С, чем в тех же системах доступа, которые бесплатно предлагают все, кому не лень). Разумеется, если сервер почему то недоступен, то вся эта байда начинает сохранятся на mикроSD. Поэтому мой тебе совет - перекраивай топологию, пока не увяз по уши. Сеть не должна стать причиной сбоев СКУД. Иначе тебя могут серьезно и на нехилые бабки прижать те же пожарные, к примеру.... :D

                          проблема в том что ридер чисто сетевой и контроллер тоже(Данные хранить не умею памяти нет). Замки правда все электромагнитные то есть при отключении света все откроется. Да и на предприятии для которого я пишу эту гадость сейчас стоит обычный домофон еще та система сами понимаете если кто-то теряет карту чтобы её удалить надо все карты перебивать. А Вы насколько я понял используете контроллер с памятью и переходником на Ethernet. Если Вас не затруднит напишите модели оборудования я гляну что оно из себя представляет.

                          Добавлено
                          Хотя судя по всему у вас ети два устройства совмещены в одном блоке и не удивлюсь если там еще есть какая то линуксоидная операционочка которая управляет этим аццким дивайсом :D
                            Цитата apprentice @
                            А Вы насколько я понял используете контроллер с памятью и переходником на Ethernet. Если Вас не затруднит напишите модели оборудования я гляну что оно из себя представляет.

                            Нет. Я использую блочную структуру:
                            1. Считыватель - user posted image
                            2. Цп на микроконтроллере.
                            3. Канал связи либо на Wiznet - user posted image
                            либо Olimex - user posted image
                            либо Wi-Fi или BlueTooth - user posted image. Так проще, ибо то, что подходит мне лично и тем, кто с меня чего то просит, стоит как небольшой ледокол. В готовом виде, разумеется. :)

                            Добавлено
                            Цитата apprentice @
                            и не удивлюсь если там еще есть какая то линуксоидная операционочка

                            Нет. Обычный асм модуль на 2072 байта. :D

                            Добавлено
                            Цитата apprentice @
                            Замки правда все электромагнитные то есть при отключении света все откроется.

                            Для того, что бы открылось - сначала необходимо обесточить. :D Это если в случае ЧП... :)
                              А где само устройство хранящее данные карт? просто в спецификации ридера я не вижу никаких упоминаний про хранение там написано только "Данные обрабатываются и соответствующим рядом передается в последовательной форме
                              в ведущий блок.". в принципе у меня схожий девайс только сразу на интерфейсе Ethernet http://vkmodule.com.ua/Ethernet/Ethernet5.html правда там есть и на RS-232 но под него нужно отдельную сеть тянуть и опять таки никаких гарантий на то что не произойдет обрыв. Ну а вот по поводу ВайФай преобразователей это вы меня порадовали. Приятное известие. Уточните пожалуйста сколько стоит один ВайФай преобразователь.

                              Добавлено
                              Цитата medved_68 @
                              Для того, что бы открылось - сначала необходимо обесточить. :D Это если в случае ЧП... :)

                              Ну у них для выхода наружу кнопка вообще :D . Но да и разработчики контроллера постарались сделали его сервером при отключении связи устройство еще долго не узнает что клиент отвалился. Поэтому я и уделяю столько времени вопросам контроля соединения. А бюджетик выделенный на все ледокол купить не позволит. Да и так как скуд не совсем полноценный (кнопки для выхода внутри) выдают его бюджетность думаю у контролирующих структур вопросов быть не должно. Тут задача лишних не пускать и время писать когда пришли.
                              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                              0 пользователей:


                              Рейтинг@Mail.ru
                              [ Script execution time: 0.1167 ]   [ 15 queries used ]   [ Generated: 24.10.26, 03:05 GMT ]