• Генерация PDF/DOC на C#?

    @Lol4t0
    Для генерации PDF из из шаблона файла, с подстановкой значений отлично подходит какой-нибудь XSL-FO процессор (собственно вы пишите XSLT шаблон, который по XML данным генерит вам документ). Генераторов много существует, что лучше всего для вашего случая, не смогу сказать, потому что с .NET не работаю.
    Ответ написан
    Комментировать
  • Структура данных для хранения точек на карте

    @Lol4t0
    В принципе, можно построить граф связей между точками, таким образом, что каждая точка будет связана только с ближайшими соседями. Пользователь находится ближе всего к некоторой вершине графа Р, считаем, что он привязан к ней. При каждом обновлении нужно проверить, не оказался ли пользователь ближе к какой нибудь из вершин графа, связанной с Р. В последнем случае, нужно изменить вершину привязки. Если связей между любой P и другими вершинами значительно меньше, чем число вершин, то обновлять приходится меньше.

    Самым сложным видится определить, какие вершины считать «ближайшими». Можно считать ближайшими те, которые будут видны, если видна данная вершина. Плюс, можно разбить карту на направления и находить вершину с наимаеньшим расстоянием по данному направлению, если по направлению нет вершин «в зоне видимости». Но тут можно еще подумать:)

    А вообще, обновлять вектор из 1500 объектов раз в секунду — не такая сложная задача. Если не требуется экномия вычислительных ресусрсов (какое-нибудь встравиваемое оборудование или работа от аккумулятора), то я бы не стал заморачиваться.
    Ответ написан
  • Запустить vim из приложения как в git'е?

    @Lol4t0
    Если у программы уже есть консоль, то можно запускать не терминал, а шелл:

    sh -c 'vim /tmp/tmpfile'
    
    Ответ написан
    2 комментария
  • драйвер(программа) посредник между системой Windows и RS232-принтером

    @Lol4t0
    Сам по себе com-порт не может быть «принтерным». RS-232 не обладает достаточным уровнем самосознания.

    Создать пару виртуальных com-портов можно, например, с помощью com2com.

    Тогда можно связять логический порт принтера с одним портом из пары com2com, повесить программу посредника между вторым портом виртуальной пары и физическим портом принтера.

    На мой взгляд, должно работать, проблемы возможны только если при общении с принтером требуется соблюдения определенного тайминга.
    Ответ написан
    1 комментарий
  • QItemDelegate (как сделать таблицу с виджетами)?

    @Lol4t0
    Насколько я знаю, прямого решения данная проблема не имеет. А вот вариантов, как это реализовать — довольно много.

    1. Использовать QML. Вот, есть пример. Но я с ним не разбирался.

    2. Добавлять виджеты для каждой строки в treeView. Решение на самом деле довольно кривое, потому что сразу появляются проблемы синхронизации виджетов с моделью. Сами разработчики пишут, что
    This function should only be used to display static content within the visible area corresponding to an item of data. If you want to display custom dynamic content or implement a custom editor widget, subclass QItemDelegate instead.
    К тому же, есть вероятность, что при числе строк в модели порядка нескольких тысяч, все начнет тормозить.

    3. Разработать полноценный делегат.
    Нужно будет переопределить не только paint, но и установить eventFilter на treeView.

    4. Отображать кнопки только на время редактирования, при этом можно настроить editTriggers.

    5. Открывать редактор принудительно.
    Ответ написан
    Комментировать
  • Как получить на Raspberry Pi три серийных порта RS-232?

    @Lol4t0
    Выдержать тайминги на такой скорости на GPIO — почти нереально.

    Это точно будет невозможно в usermode, но даже в режиме ядра это сложно осуществить. Семплирование должно производиться на частоте хотя бы в несколько раз превышающей частоту работы порта, то есть времена там порядка нескольких микросекунд. При этом контроллер должен успевать обслуживать все три порта. Кроме того, он по идее должен еще и выполнять какую-то полезную нагрузку.

    Теперь к хорошим новостям: во-первых, один UART у R PI уже есть.
    Для остальных можно воспользоваться другими интерфейсами — например, есть переходники для USB, которых потенциально через HUB можно подключить сколько угодно. Кроме того, есть мосты между UART и SPI. Привожу ссылку на описание микросхемы, но мне кажется, должны быть и какие-ниубдь «шилды для ардуинки» на ее основе.
    Ответ написан
  • Что подразумевает C++ класс с private конструктором и парным auto_ptr?

    @Lol4t0
    const foo::Bar& myfunc(); 
    

    В своем C-адаптере я переопределяю ее так:

    const foo_Bar_t* myfunc();
    

    Вообще говоря, это уже неопределенное поведение, потому что стандарт не гарантирует, что ссылки будут реализованы посредством указателей.

    Правильно ли я понимаю, что я не могу хранить этот указатель после возврата из функции?

    Все зависит от того, что делает функция:

    const int g = 1;
    struct S
    {
    	const int & foo() const
    	{
    		return v;
    	}
    	const int & bar() const
    	{
    		return g;
    	}
    	int v = 0;
    };
    
    const int & foobar()
    {
    	S s;
    	//return s.foo(); // oops
    	return s.bar(); //ok
    }
    
    int main(int argc, char const *argv[])
    {
    	return foobar();
    }
    


    Дальше у вас идет некорректный код:
    Как должен работать static_cast от std::auto_ptr<Baz>* в Baz?
    Я предполагаю, что у вас там на самом деле написано:
    this->operator=(*static_cast<BazAutoPtr*>(&std::auto_ptr<element_type>(Baz_Constructor())));
    

    Что в общем тоже неопределенное поведение, потому что
    error: taking address of temporary
    static_cast объекта к типу, объектом которого он на самом деле не является.

    Выражать эта конструкция должна была видимо примерно то же, что и
    inline BazAutoPtr():std::auto_ptr<Baz>(Baz_Constructor()){}
    


    В общем, самый дельный совет тут — завязывать с кодом, в котором такое написно.
    Ответ написан
    6 комментариев