Подтвердить что ты не робот

Как визуализировать данные из буфера протокола Google?

Я хотел бы хранить данные с помощью буферов протокола Google (также будет работать другой сериализованный формат), а затем пользовательский интерфейс для просмотра этих данных. Есть ли С++ framework/API, который позволил бы мне это сделать?

Например, он может использовать интерфейс отражения protobuf, а затем заполнять данные в Qt QTableView (или из другого инструментария). Я мог бы написать такой код сам - однако, скорее, я бы повторно использовал существующий код, поэтому я прошу совета здесь!

Или существуют ли более общие инструменты пользовательского интерфейса, которые могут визуализировать данные, доступные через некоторый API отражения?

4b9b3361

Ответ 1

Один графический интерфейс, с которым я только что столкнулся, - protobufeditor - он кажется довольно эффективным для просмотра общих данных. Он написан на Java, поэтому его нельзя легко использовать и расширять с С++. (И в данный момент это не особенно полируется, например, нужно максимизировать главное окно, чтобы получить полудоступную компоновку под-окон.) Таким образом, это довольно временное решение.

Screenshot protobufeditor

Ответ 2

Wireshark имеет плагин protobuf, который позволяет визуализировать содержимое сообщений protobuf. Я также буду копаться в DebugString() в google/protobuf/message.h или message_lite.h(я забыл, что с моей головы) и посмотреть, можете ли вы легко одеть это для представления пользователю.

http://code.google.com/p/protobuf-wireshark/

Ответ 3

Если вы хотите написать его самостоятельно, одним из вариантов может быть использование Python/PySide вместе с QML, обработка ваших данных и сохранение их в QAbstractListModel, который подключен к вашему QML ListView. В зависимости от сложности ваших данных делегат списка должен надеяться, что он сможет его визуализировать.

Этот вопрос может быть полезен в этом случае: Как предоставить данные из подкласса PySide QAbstractItemModel в QML ListView?

Если XML является опцией, QML XmlListModel очень удобен и прост в использовании.

Ответ 4

В прошлом году я работал над таким решением, используя Qt. К сожалению, приложение еще не завершено, но я думаю, что я был в точке, где можно было более или менее успешно визуализировать данные из общего потока буфера протокола. Вы можете проверить код на

https://github.com/oneamtu/QProtoViewer

Опять же, это не готовое решение, и вам придется работать, чтобы он соответствовал вашим собственным потребностям/проекту. Я был бы более чем счастлив помочь, если вы решите это сделать.

Ответ 5

Один из вариантов: Протокол Buffer Workbench. Хорошей особенностью этого инструмента является то, что вы можете использовать его для легкого преобразования JSON в буфер закодированного протокола и наоборот.

Ответ 7

Если вы хотите, вы можете использовать web ui для создания сообщения protobuf

https://github.com/Groterik/protobuf-webui

Это проект python, и у него есть образец, который выполняет HTTP-сервер, составляющий желаемый тип сообщения импортированного модуля protobuf. Но это python, поэтому вы можете написать простой способ обхода, который динамически импортирует компилируемый модуль protobuf и выбирает тип сообщения во время выполнения.

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

Ответ 8

Для решения двоичного представления без схемы сложно. Но если вы хотите просто лучше просмотреть текстовый формат pb или DebugString(), вы можете попробовать Protobuf Visualizer:

http://codingstory.com/pv