LINUX.ORG.RU

Сообщения billy_bob

 

переопределение функций в си

Здравствуйте.

Пишу на Си под stm32, но это не суть. Gcc схож. Проблема в следующем.

Поскольку система встраиваемая нужно переопределить printf, чтобы он выводил данные в USART. Есть рабочий код переписанных функций, изменяющих printf под эту цель, вынесенный в отдельный файл stdio/printf.c

Вот только при линковке выдаётся следующая ругань:

compile:
    [mkdir] Created dir: C:\CoIDE\workspace\print\Debug\bin
    [mkdir] Created dir: C:\CoIDE\workspace\print\Debug\obj
       [cc] 9 total files to be compiled.
       [cc] arm-none-eabi-gcc -mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -O0 -g -c -DSTM32F10X_HD -DUSE_STDPERIPH_DRIVER -D__ASSEMBLY__ -DSTM32F103ZE -IC:\CoIDE\workspace\print -IC:\CoIDE\workspace\print\stm_lib -IC:\CoIDE\workspace\print\stm_lib\inc -IC:\CoIDE\workspace\print\cmsis_boot -IC:\CoIDE\workspace\print\cmsis C:\CoIDE\workspace\print\cmsis\core_cm3.c C:\CoIDE\workspace\print\cmsis_boot\system_stm32f10x.c C:\CoIDE\workspace\print\cmsis_boot\startup\startup_stm32f10x_hd.c C:\CoIDE\workspace\print\stm_lib\src\stm32f10x_gpio.c C:\CoIDE\workspace\print\main.c C:\CoIDE\workspace\print\stdio\printf.c C:\CoIDE\workspace\print\stm_lib\src\stm32f10x_rcc.c C:\CoIDE\workspace\print\stm_lib\src\stm32f10x_usart.c C:\CoIDE\workspace\print\syscalls\syscalls.c
       [cc] Starting link
       [cc] arm-none-eabi-gcc -O0 -nostartfiles -Wl,-Map=print.map -mcpu=cortex-m3 -mthumb -LC:\CoIDE\workspace\print -Wl,--gc-sections -Wl,-TC:\CoIDE\workspace\print\link.ld -g -o print.elf ..\obj\core_cm3.o ..\obj\system_stm32f10x.o ..\obj\startup_stm32f10x_hd.o ..\obj\stm32f10x_gpio.o ..\obj\main.o ..\obj\printf.o ..\obj\stm32f10x_rcc.o ..\obj\stm32f10x_usart.o ..\obj\syscalls.o
       [cc] c:/coide/arm-2011.03-coocox/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/lib/thumb2\libc.a(lib_a-impure.o):(.data+0x0): multiple definition of `_impure_ptr'
       [cc] collect2: ld returned 1 exit status
       [cc] ..\obj\printf.o:(.data+0xf0): first defined here

BUILD FAILED
Total time: 3 seconds

Встаёт вопрос - как адекватно подменить системный printf на свой?

Если нужно дополнительно запостить комманды компилятора/линкера - напишите.

Заранее спасибо.

 , ,

billy_bob
()

Полосовой фильтр на python

Здравствуйте. Есть задача - замутить разложение в спектр цифрового сигнала с полосовой фильтрацией на пайтоне. Причем спектр нужно вывести не в совсем обычном виде - амплитуда сигнала на определённой частоте - это как часто эта частота встречается в общем сигнале. Саму амплитуду сигнала отбросить. В какую сторону стоит копать?

billy_bob
()

[PyQt] QTreeWidgetItem и selectedIndexes()

Здравствуйте.

Проблема пришла откуда не ждал. Вроде простая операция, а допереть не могу.

Есть одна тян QTreeWidget, каждая строка - 4 поля. Выделение построчное. Нужно перебрать все выделенные строки (т.е. QTreeWidgetItem-ы).

Первое, что бросилось в глаза в документации QTreeWidget.selectedIndexes(). Вот только используя эту функцию перебираются не строки (содержащие по 4 поля), а отдельные поля. Я подумал - ерунда, и выдал на гора следующий код:

    itm = []
    x = 0
    for index in self.ui.treExportProbes.selectedIndexes():
      i = self.ui.treExportProbes.model().data(index,QtCore.Qt.DisplayRole)
      itm.append(i)
      x = x + 1
      if x == 4:
        self.patLst.changeProbeStatus( itm[0].toString(), str(itm[2].toString()), itm[3].toString() )
        itm = []
        x = 0

Вот только «for index in self.ui.treExportProbes.selectedIndexes()» перебирает поля не построчно, по очереди, слева на право, как ожидалось, а по своему, весьма хитрому принципу.

Обход выделенного происходит не просто по горизонтали, а в зависимости от количества выбранных элементов. Для одной выделенной строки - всё Ок. Для 2-х он берёт 2 с 3 столбца, и 2 с 4, для 3-ч он берет 1 с 3 и 3 с 4, для 4 он берет все 4 с 4.

Вот так и повис в воздухе вопрос - как перебрать выделенные item-ы в QTreeWidget?

 

billy_bob
()

RSS подписка на новые темы