Форум: "Прочее";
Текущий архив: 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.064 c