Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Нечеткое сравнение строк или что посоветуете?   Найти похожие ветки 

 
AV ©   (2012-05-10 16:37) [0]

Одна железка глючит страшно, что только админы не делали, не помогает.
Глюк заключается в том, что в процессе обмена командами, "выпадают" символы.
Например, подаём 5 раз команду
 4294:DN=K"NUMBER,INTCP=REMOVE.
по логам железки 1 команда пришла как
 4294:DN=K"NUMBER,INTCP=REMVE.
Железка в ступоре.
Это ладно.. в ступоре она TimeOut времени, потом командуем "срыв", повторяем.

Но еще и ответы так же приходят - может быть выбит любой байт из любого места (может, не однократно)
Например, ответ нормальный
MODIFY SUBSCR                                               SUCCESSFUL
приходит как
MODFY SUBSCR                                               SUCCESSFUL
или
MODIFY SUBSCR                                               SUCESSFUL
или
MODIF SUBCR                                               SUCESSFU
Тут программа в ступоре.
Опять ждем таймаут, программа считает, что тупит железка, командует срыв, повторяет команду. Время уходит.

А как бы Вы сделали?
(пока сам подумываю расстояние Левинштайна прикрутить к ответам железки )


 
sniknik ©   (2012-05-10 16:40) [1]

дешевле всего обычно поменять железку.


 
sniknik ©   (2012-05-10 16:45) [2]

кстати, для фискалников которые начинали непонятно"тупить"  часто помогало поставить скорость обмена поменьше, с 115200 на 4800 (кстати на скорости печати почти не сказывается... просто юзеры считают большие цифры лучше).


 
Mystic ©   (2012-05-10 16:48) [3]

Я за Левенштейна


 
Омлет ©   (2012-05-10 16:56) [4]


> А как бы Вы сделали?

Если железка не в космосе летает, то лучше её заменить или искать ошибку в другом месте.


 
Ega23 ©   (2012-05-10 17:27) [5]


> Если железка не в космосе летает, то лучше её заменить или
> искать ошибку в другом месте.


+100500, с причиной нужно бороться, а не со следствием.


 
tesseract ©   (2012-05-10 17:39) [6]


> с 115200 на 4800 (кстати на скорости печати почти не сказывается.
> .. просто юзеры считают большие цифры лучше).


А можно еще проверить питание  железки или кабель, таки считать CRC по пакетам пришедшим. Вариант с багом чтения в прошивки железки - тоже вариант.

Проверка кабеля  - тупо ставим заглушку с запаянным 2-3 контактами и смотрим свое эхом.


 
Германн ©   (2012-05-11 00:30) [7]

+ Смотреть Portmon"oм что шлём и что получаем в ответ.


 
AV ©   (2012-05-11 09:28) [8]

не касса, АТС, подороже будет. Вряд ли менять можно
Скорость вообще 1 200 попробовали
вариант с заменой кабеля/Portmon.. это меня не пустят. Это админы делают.
А они
>  что только админы не делали, не помогает.

правда, возможен вариант, что "что только админы не делали" = "мало что делали, но сказали что делали"

Архитектура такова
Железка связана с com-портом админского компа. На админском компе запущена штатная утилита из комплекта железки, которая слушает порт tcp и пересылает, преобразовав как надо, через порт в железку. Ответ в обратном порядке.

Мне виден только tcp порт и могу запросить файл-лог у этой штатной утилиты.
Вот судя по логу, такая ситуация и происходит, т.е. теряются байты.
то ли по пути, то ли утилитой
Скорее всего, по пути.

Потому что железка же впадает в ступор, недополучив байт. Хотя, вроде бы опять не факт. Утилита могла не до дать, неверно расшифровав/зашифровав..
Но, почему одинаковые команды в 80% случаев правильно, а иногда нет.
Вряд ли утилита.

Короче, железку менять дорого и не будут.
Сам смотреть кабеля и устанавливать софт - не дадут. Служебку если накатать только. Пока рассмотрять, не факт что подорвались сразу делать :)

А надо, как обычно, вчера :)
Короче, только Лопиталя прикручивать.


 
AV ©   (2012-05-11 09:28) [9]

отставить Лопиталя :)))
Левинштейна.


 
RWolf ©   (2012-05-11 09:47) [10]

и как он поможет распознать, что число 10 в аргументах команды — это на самом деле 150?


 
Inovet ©   (2012-05-11 09:51) [11]

> [8] AV ©   (11.05.12 09:28)
> не касса, АТС, подороже будет. Вряд ли менять можно

На ней можно заменить блок.


 
Anatoly Podgoretsky ©   (2012-05-11 09:56) [12]


> правда, возможен вариант, что "что только админы не делали"
> = "мало что делали, но сказали что делали"

Правильно - мало ли чего не делали


 
Anatoly Podgoretsky ©   (2012-05-11 09:57) [13]

Короче пусть админы не делают, их работа


 
sniknik ©   (2012-05-11 10:17) [14]

> Короче пусть админы не делают, их работа
нифига. их работа - сделать так чтобы ничего не делать... а там судя по всему у них не очень то получается.


 
Омлет ©   (2012-05-11 10:24) [15]

Не работает устройство - в ремонт. Че фигней страдать?


 
Anatoly Podgoretsky ©   (2012-05-11 10:26) [16]

> sniknik  (11.05.2012 10:17:14)  [14]

Я тоже за тех админов, которые могут сделать, чтобы ничего не делать.


 
AV ©   (2012-05-11 10:28) [17]


> что число 10 в аргументах команды — это на самом деле 150?

в командах - нет..

В ответах - поможет.
if DamerauLevenshteinDistance( RealAnswert, WaitAnswert) < PossibleDistance
then AllOk;

function DamerauLevenshteinDistance(s, t: string):integer;
var
  d: array [0..50, 0..50] of integer; // хорошее число 50, если 4 отнять, и на 46 поделить - 1 будет :)
  i,j,cost:integer;
  m,n:integer;
begin
  m:=length(s);
  n:=length(t);
  for i := 0 to m do d[i, 0] := i; // deletion
  for j := 0 to n do d[0, j] := j; // insertion
  for j := 1 to n do
  begin
    for i := 1 to m do
    begin
      if s[i] = t[j] then cost := 0
                     else cost := 1;
      d[i, j] := min(d[i-1, j  ] + 1,     // deletion
                     d[i  , j-1] + 1,     // insertion
                     d[i-1, j-1] + cost   // substitution
                    );
      if (i > 1)
         and (j > 1)
         and (s[i] = t[j-1])
         and (s[i-1] = t[j]) then
        d[i, j] := min(  9999,
                         d[i, j],
                         d[i-2, j-2] + cost   // transposition
                       );
    end;
  end;
  Result := d[m,n];
end;


 
boriskb ©   (2012-05-11 10:52) [18]

Я старый стал?
Вообще ничего не понимаю.
Явно устройство работает не правильно.
И вместо того чтобы найти причину и устранить ее мы "узакониваем" ошибки - говорим что это "нормально/допустимо"  и начинаем уменьшать их последствия.

Так теперь принято?


 
AV ©   (2012-05-11 11:01) [19]


> вместо того чтобы найти причину и устранить ее мы "узакониваем"
> ошибки - говорим что это "нормально/допустимо"  и начинаем
> уменьшать их последствия.
Так теперь принято?

Кроме "нет", что-то ожидается? :)

Служебку уже пишу.
Но и надо, что бы уже работало (и работает :))


 
boriskb ©   (2012-05-11 11:09) [20]


> Но и надо, что бы уже работало (и работает :))

Левинштайн помог?
Надеюсь что эта штука работает не на атомной станции, не в банке где у меня счет или в тому подобном месте :))


 
AV ©   (2012-05-11 11:14) [21]

конечно, помог
после выкидывания пробелов MODIFYSUBSCRSUCCESSFUL по Дамерау-Левинштейну не сильно отличается от ответов.
А без этого, пришлось бы сравнивать с кучей вариантов, выбрасывая по 1(или 2) символа.


> эта штука работает не на атомной станции

к счастью, нет :)
Ну а было бы лучше, если там вообще ничего не работало?


 
boriskb ©   (2012-05-11 11:16) [22]


> Ну а было бы лучше, если там вообще ничего не работало?

Так смотря где.
А то может и лучше было бы :)


 
RWolf ©   (2012-05-11 11:18) [23]


> [21]

когда машина не едет, это лучше, чем когда она едет куда попало.


 
AV ©   (2012-05-11 11:19) [24]


Так смотря где.
А то может и лучше было бы :)

Это не тот случай ^)
*AV джедайски проводит рукой*


 
boriskb ©   (2012-05-11 11:20) [25]


> AV ©   (11.05.12 11:19) [24]

Я очень рад
Засну спокойно :))


 
Anatoly Podgoretsky ©   (2012-05-11 11:25) [26]

> AV  (11.05.2012 11:14:21)  [21]

Конечно лучше, быстрее бы устранили бардак


 
Styx   (2012-05-11 13:46) [27]


> Скорость вообще 1 200 попробовали

Вообще очень похоже на неправильное количество стоповых бит...


 
Cobalt ©   (2012-05-12 10:54) [28]

Прочтите, наконец, мануал к устройству :)


 
miek   (2012-05-15 22:51) [29]

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


 
Styx   (2012-05-15 23:54) [30]


> экранировать линию, надо полагать, не пробовали.
> проверять, к одной ли фазе подключены передатчик и приемник.
> поставить на админский комп платку com-портов.
> легкие пути никому не нужны.


В принципе автор прав. От него хотят, чтобы он написал программу - он напишет. Это его работа, и он за неё получает деньги.

А с проводами и прочим разбираться - я думаю, в случае таких железок - работа Lucent-овской поддержки. Я бы 10 раз подумал, прежде чем в "провода" лезть.


 
miek   (2012-05-17 11:16) [31]

программисты лампочек не меняют, ага.


 
asail ©   (2012-05-17 14:44) [32]


> miek   (17.05.12 11:16) [31]

> программисты лампочек не меняют, ага.

И слава всевышнему, что так! :)


 
Inovet ©   (2012-05-17 15:02) [33]

> [31] miek   (17.05.12 11:16)
> программисты лампочек не меняют, ага.

Там для лампочек есть целая служба, которая не может ровно вкрутить их, а программист должен их косяки исправлять.


 
sniknik ©   (2012-05-17 16:17) [34]

> а программист должен их косяки исправлять.
не должен.
стоит сделать, так через месяц забывается чей косяк исправляли, "костыль" в силу "работает же!" становится постоянным в пару с багом, а через 2 месяца уже идут претензии "у тебя в программе глюки, исправьте" невзирая на предварительные договоренности типа "ну нам лишь бы как, на пока новое не купим/с проблемой не разберемся/...".
не, если это "последний аккорд", типа - "сделаешь получишь расчет", то почему бы и нет?... а по нормальному не стоит. всегда "боком выходит". должен "отбиваться" от подобного.


 
MsGuns ©   (2012-05-18 10:47) [35]

для чоткости нужна поллитра.
а для очень чоткости - две


 
zzz   (2012-05-18 12:00) [36]

Согласен с [34]. Нафик, нафик костыли. Через месяц-другой в том кабеле появится очередной баг... и чо новую прогу писать будешь?


 
AV ©   (2012-05-18 12:44) [37]

Да все правильно вы говорите.
Но я - наемник. Сказали сделать - надо сделалать.
Что смог - написать служебку чтобы исправили, и в логи хатэмеэльные пишу с h1 тэгом, что обнаружен сбой, применено нечеткое сравнение, требуется исправление - сделал.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.07 c
15-1331018645
Unknown user
2012-03-06 11:24
2013.03.22
TStringList.AddObject добавление строки вместо TObject


15-1342466570
MsGuns
2012-07-16 23:22
2013.03.22
Умер Джон Лорд


3-1276263885
zsv
2010-06-11 17:44
2013.03.22
Транзакции в Access


15-1348839643
888888
2012-09-28 17:40
2013.03.22
Снять видео с экрана + звук.


15-1331053532
vrem
2012-03-06 21:05
2013.03.22
телевизор 42" как монитор для компьютера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский