SDRSharp (SDR#) – Одна из удобных и бесплатных программ для работы с различными SDR-приемниками. Благодаря открытому API, она позволяет дополнять ее различными плагинами. Данная программа позволяет слушать различные радиостанции совместно с Airspy и RTL-SDR донглов. Она так же работает с HackRF One, который может не только принимать радиосигналы, но и передавать. Однако, на просторах Интернета, я не смог найти ни одно дополнение к SDR#, который бы позволял использовать HackRF как трансивер. Но все же, на основе того, что сумел найти, получилось кое-как разобраться с библиотекой HackRF.DLL и добавить возможность передачи радиосигналов через HackRF к SDR#. Это реализовано внедрением промежуточного слоя между SDR# и библиотекой HackRF.DLL, который подготовлен с таким же интерфейсом, что и стандартная библиотека HackRF.DLL, только добавлена форма и несколько функций для формирования сигнала и модуляции в него звука из микрофона. Пока реализована только частотная модуляция.
Для установки данного «дополнения» в SDR#, достаточно переименовать HackRF.DLL, находящийся в папке SDRSharp на UHackRF.DLL, и добавить файл HackRF.DLL из данного проекта.
После этого, при запуске SDR# и выборе HackRF, будет открываться дополнительно окно, позволяющее переключать HackRF в режим передачи.
Здесь частота передачи может отличаться от частоты приема в пределах полосы приема SDR и ее можно задавать верхним ползунком. Для переключения между приемом и передачей используется клавиша левый ctrl.
Так как программа не оптимизирована еще, передача с частотой дискретизации в 20 МГц, скорее всего, будет происходить с искажениями. Чтобы разгрузить ЦП, можно установить более низкую частоту дискретизации в приложении SDR#. Минимальную частоту, которую можно выбрать в приложении – 8 MSPS. Однако ничего не мешает вписать и более низкую частоту.
Библиотека реализована в среде Delphi7. За основу были взяты две публикации, описывающие получение звука из микрофона и оболочку библиотеки над HackRF.DLL.
И над первым и над вторым пришлось немного поработать. Оболочка над DLL-кой не сразу у меня компилировался. Видимо версии Delphi отличались. А потом оказалось, что не все функции, описанные в оболочке, реализованы в файле HackRF.DLL, поставляемый в комплекте с SDR#. С помощью DLL Export Viewer v1.66 получил список функций, описанные в DLL и таким образом подредактировал оболочку, чтобы там были только те функции, которые реализованы в данной DLL-библиотеке.