Re: snmp мониторинг

scopus wrote:

как понял он текст понимает в кодировке ansi а при этом принтер передает в кодировке utf-8

вот какой ответ я получаю от принтера .1.3.6.1.2.1.43.11.1.1.6.1.1 = Черный картридж 14X HP CF214X
вот какой ответ я получаю через мониторинг который сделал в вашей среде разработки Черный картридж 14X HP CF214X

в чем может быть проблема?

С этим увы не могу разобраться без тестирования с реальным устройством.

Dmitry.

Re: snmp мониторинг

scopus wrote:

Нет как раз модель известна и просто для него указать опрашивать oid только ЧБ а для другого уже все цвета опрашивать а для третьего предположим только красный картридж опрашивать. Тоесть при добавлении ip еще и указывать какой oid будет использоваться при опросе этого принтера (только ЧБ, Цветной  все цвета или каждый цвет отдельно)

Можно в таблице Printer создать поле Да/Нет, затем если ставите галочку в компоненте CheckBox, то значит принтер цветной и используете необходимый OID


Либо можно создать отдельную таблицу, с моделями принтеров, и еще одну таблицу, где будут храниться OID принадлежащие к конкретной модели принтера, затем опрашивать принтер теми OID, которые принадлежат опрашиваемой модели.

Dmitry.

Re: snmp мониторинг

Либо можно создать отдельную таблицу, с моделями принтеров, и еще одну таблицу, где будут храниться OID принадлежащие к конкретной модели принтера, затем опрашивать принтер теми OID, которые принадлежат опрашиваемой модели.

Вот про этот способ можно подробнее или лучше пример кинуть

54 (edited by scopus 2019-04-10 05:29:48)

Re: snmp мониторинг

добавил как вы сказали

            if sTipCartBlack <> '' then SQLExecute('UPDATE printer SET TipCartBlack = '''+escape_special_characters(sTipCartBlack)+''' WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));  // значение для получения типа картриджа черного
            if sTipCartBlue <> '' then SQLExecute('UPDATE printer SET TipCartBlue = '''+escape_special_characters(sTipCartBlue)+''' WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));  // значение для получения типа картриджа черного
            if sTipCartMagento <> '' then SQLExecute('UPDATE printer SET TipCartMagento = '''+escape_special_characters(sTipCartMagento)+''' WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));  // значение для получения типа картриджа черного
            if sTipCartYellow <> '' then SQLExecute('UPDATE printer SET TipCartYellow = '''+escape_special_characters(sTipCartYellow)+''' WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));  // значение для получения типа картриджа черного
            if sPrintModel <> '' then SQLExecute('UPDATE printer SET PrintModel = '''+escape_special_characters(sPrintModel)+''' WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));  // значение для получения модели принтера

именно при этом опросе получаю ошибку

но это не важно потом сам как нибудь решу лучше подскажите по этому способу

Либо можно создать отдельную таблицу, с моделями принтеров, и еще одну таблицу, где будут храниться OID принадлежащие к конкретной модели принтера, затем опрашивать принтер теми OID, которые принадлежат опрашиваемой модели.

Post's attachments

Attachment icon Безымянный.png 14.45 kb, 208 downloads since 2019-04-10 

Re: snmp мониторинг

Постараюсь на следующей неделе доработать пример, к сожалению пока нет времени.

Dmitry.

Re: snmp мониторинг

Спасибо)! Буду ждать

57 (edited by scopus 2019-04-12 05:27:10)

Re: snmp мониторинг

еще вопрос можно сделать отображение столбца пароля в таблице звездочками ****** ?

Post's attachments

Attachment icon Безымянный.png 40.79 kb, 187 downloads since 2019-04-12 

Re: snmp мониторинг

scopus wrote:

Спасибо)! Буду ждать

Скачайте последнюю бета версию
https://www.dropbox.com/s/xfjcvk0z7je6i … a.zip?dl=0


Протестируйте пожалуйста.
Сперва необходимо нажать на кнопку Settings, где необходимо заполнить типы результатов, возвращающих OID, затем заполнить устройства и их OID.

Post's attachments

Attachment icon SNMP ex.zip 7.96 kb, 391 downloads since 2019-04-17 

Dmitry.

Re: snmp мониторинг

scopus wrote:

еще вопрос можно сделать отображение столбца пароля в таблице звездочками ****** ?

Можно, но зачем? Проще просто убрать этот столбец из компонента TableGrid.

Dmitry.

60 (edited by scopus 2019-04-17 10:42:02)

Re: snmp мониторинг

можно убрать но нужно редактировать прям в таблице поле с паролем

Post's attachments

Attachment icon Снимок.PNG 67.39 kb, 172 downloads since 2019-04-17 

Re: snmp мониторинг

scopus wrote:

можно убрать но нужно редактировать прям в таблице поле с паролем

Можно

procedure Form1_TableGrid1_OnChange (Sender: TObject);
begin
    TNxTextColumn(Form1.TableGrid1.Columns[0]).PasswordChar := '*'; // для первой колонки, нумерация колонок начинается с нуля
end;
Dmitry.

Re: snmp мониторинг

Скачайте последнюю бета версию 5.4
https://www.dropbox.com/s/xfjcvk0z7je6i … a.zip?dl=0

Dmitry.

63 (edited by scopus 2019-04-18 09:00:04)

Re: snmp мониторинг

Попробовал пример в итоге получается что если более 1 oid он зацикливается и так же не понял как привязать к моему проекту так как мне нужна запись в таблицу и + там еще идет расчет количества картриджа в зависимости от максимального и текущего.
https://drive.google.com/file/d/1YdJRak … sp=sharing

Post's attachments

Attachment icon Снимок.PNG 42.45 kb, 200 downloads since 2019-04-18 

Re: snmp мониторинг

вот такой ответ я получаю от принтера. Например 797 строчка это модель принтера. Если преобразовать в UTF-8 то текст виден нармально но через программу я получаю именно такой ответ.

Post's attachments

Attachment icon 10.7.46.42.txt 76.29 kb, 508 downloads since 2019-04-18 

Re: snmp мониторинг

Попробуйте в моем примере заменить 34 строку, забыл добавить кавычки

sResultName := SQLExecute('SELECT TypeResult.ResultName FROM oIDS LEFT OUTER JOIN TypeResult ON TypeResult.id=oIDS.id_TypeResult WHERE oIDS.OID='''+SNMP.Reply.ValueOID[idx] + ''' AND id_device='+Form1.cbDevice.sqlValue);
Dmitry.

Re: snmp мониторинг

scopus wrote:

так же не понял как привязать к моему проекту так как мне нужна запись в таблицу и + там еще идет расчет количества картриджа в зависимости от максимального и текущего.

Увы я не смогу это сделать за вас.

Dmitry.

Re: snmp мониторинг

Спасибо большое все работает. Остается пока вопрос с некоректным ответом в виде Черный картридж 14A HP CF214A и еще вопрос можно ли как то сделать что бы модели хранились и подгружались из файла txt или таблицы?

Re: snmp мониторинг

scopus wrote:

Спасибо большое все работает. Остается пока вопрос с некоректным ответом в виде Черный картридж 14A HP CF214A и еще вопрос можно ли как то сделать что бы модели хранились и подгружались из файла txt или таблицы?

С кодировкой к сожалению не смогу помочь, т.к. не на чем тестировать.
Подгружались куда? в базу данных? Скрипт импорта можно найти здесь
http://myvisualdatabase.com/forum/viewtopic.php?id=1373

Dmitry.

Re: snmp мониторинг

Да вполне подходит спасибо

70 (edited by scopus 2019-05-07 05:59:27)

Re: snmp мониторинг

Подскажите как можно сделать если в таблице во 2 столбце есть число -2 то вместо этого числа отображать надпись или просто заменить его на 0. при этом этот столбец вычисляемое число по формуле 100 / (MaxDrum / NowDrum)

Re: snmp мониторинг

scopus wrote:

Подскажите как можно сделать если в таблице во 2 столбце есть число -2 то вместо этого числа отображать надпись или просто заменить его на 0. при этом этот столбец вычисляемое число по формуле 100 / (MaxDrum / NowDrum)

Есть пара вариантов:


1) В обработчике события таблицы OnChange пробежаться в цикле по всем ячейкам ( Cells[x,y] ) столбца и произвести замену
2) Для вычисляемого поля использовать конструкцию CASE

Визуальное программирование: блог и телеграм-канал.

72 (edited by scopus 2019-05-14 07:57:05)

Re: snmp мониторинг

Подскажите как еще сделать что бы по нажатию на кнопку открывался его веб интерфейс выбранного устройства в таблице?

Re: snmp мониторинг

scopus wrote:

Подскажите как еще сделать что бы по нажатию на кнопку открывался его веб интерфейс выбранного устройства в таблице?

Примерно так

procedure Form1_Button1_OnClick (Sender: TObject; var Cancel: boolean);
var
    sURL: string;
begin
    sURL := SQLExecute('SELECT ip FROM tablename WHERE id='+Form1.TableGrid1.sqlValue);
    if sURL <> '' then OpenURL(sURL);
end;
Dmitry.

74 (edited by scopus 2019-05-15 13:11:51)

Re: snmp мониторинг

пробовал ваш способ и так же измени вот так

procedure Form1_Button12_OnClick (Sender: TObject; var Cancel: boolean);
var
    sURL: string;
begin
    sURL := SQLExecute('SELECT printerIP FROM printer WHERE id='+IntToStr(Form1.TableGrid1.dbItemID));
    if sURL <> '' then OpenURL(sURL);
end;

никакой реакции

если сделать так

procedure Form1_Button12_OnClick (Sender: TObject; var Cancel: boolean);
var
    sURL: string;
    i: integer;
begin
    for i := 0 to Form1.TableGrid1.RowCount-1 do
    sURL := SQLExecute('SELECT printerIP FROM printer WHERE id='+IntToStr(Form1.TableGrid1.dbIndexToID(i)));
    if sURL <> '' then OpenURL(sURL);
end;

тоже не работает

Re: snmp мониторинг

попробуйте добавить http://

OpenURL(sURL);

замените на

OpenURL('http://'+sURL);
Dmitry.