MathCore.HackRF
0.0.0
Requires NuGet 3.3.0 or higher.
dotnet add package MathCore.HackRF --version 0.0.0
NuGet\Install-Package MathCore.HackRF -Version 0.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MathCore.HackRF" Version="0.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="MathCore.HackRF" Version="0.0.0" />
<PackageReference Include="MathCore.HackRF" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add MathCore.HackRF --version 0.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: MathCore.HackRF, 0.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package MathCore.HackRF@0.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=MathCore.HackRF&version=0.0.0
#tool nuget:?package=MathCore.HackRF&version=0.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
MathCore.HackRF
Высокоуровневая C# библиотека для управления SDR-устройством HackRF One.
🚀 Быстрый старт
Установка
dotnet add package MathCore.HackRF
Базовый пример
using MathCore.HackRF;
// Инициализация
HackRFLib.Initialize();
try
{
// Открытие устройства
var result = HackRFLib.Open(out var device);
if (result != HackRfError.Success)
throw new Exception($"Ошибка: {result}");
// Настройка
HackRFLib.SetFreq(device, 100_000_000); // 100 МГц
HackRFLib.SetSampleRate(device, 10_000_000); // 10 МГц
HackRFLib.SetLnaGain(device, 16); // 16 дБ
HackRFLib.SetVgaGain(device, 20); // 20 дБ
// Приём данных
HackRfDelegate callback = (ref TransferInfo transfer) =>
{
var data = transfer.RxBytes;
// Обработка данных
return 0;
};
HackRFLib.StartRx(device, callback);
// Ваша логика обработки...
HackRFLib.StopRx(device);
HackRFLib.Close(device);
}
finally
{
HackRFLib.Exit();
}
📋 Основные возможности
Управление устройством
- Инициализация и подключение к HackRF One
- Получение информации об устройстве
- Поддержка нескольких устройств одновременно
- Безопасное управление ресурсами
Настройка радиопараметров
- Частота: 30 МГц - 6 ГГц
- Частота дискретизации: 2-20 МГц
- Полоса пропускания: 1.75-28 МГц
- Усиление LNA: 0-40 дБ (шаг 8 дБ)
- Усиление VGA: 0-62 дБ (шаг 2 дБ)
- Усиление TX VGA: 0-47 дБ (шаг 1 дБ)
Режимы работы
- Приём (RX): потоковый приём с callback-обработкой
- Передача (TX): потоковая передача данных
- Развёртка: автоматическое сканирование частот
🔧 API Reference
Основные методы
// Инициализация библиотеки
HackRfError Initialize()
void Exit()
// Управление устройствами
HackRfError Open(out IntPtr device)
HackRfError Close(IntPtr device)
DeviceListSafeHandle GetDeviceList()
// Настройка параметров
HackRfError SetFreq(IntPtr device, ulong freq_hz)
HackRfError SetSampleRate(IntPtr device, double freq_hz)
HackRfError SetLnaGain(IntPtr device, uint value)
HackRfError SetVgaGain(IntPtr device, uint value)
HackRfError SetBasebandFilterBandwidth(IntPtr device, uint bandwidth_hz)
// Приём и передача
HackRfError StartRx(IntPtr device, HackRfDelegate callback)
HackRfError StopRx(IntPtr device)
HackRfError StartTx(IntPtr device, HackRfDelegate callback)
HackRfError StopTx(IntPtr device)
// Развёртка частот
HackRfError InitSweep(IntPtr device, ushort[] frequency_list, int num_ranges,
uint num_bytes, uint step_width, uint offset, int style)
Структуры и перечисления
// Информация о передаче данных
public struct TransferInfo
{
public IntPtr Device { get; set; }
public byte[] Buffer { get; set; }
public int BufferLength { get; set; }
public int ValidLength { get; set; }
public byte[] RxBytes => Buffer[..ValidLength];
}
// Коды ошибок
public enum HackRfError
{
Success = 0,
InvalidParam = -2,
NotFound = -5,
Busy = -6,
NoMem = -11,
LibUsb = -1000,
Thread = -1001,
StreamingThreadErr = -1002,
StreamingStopped = -1003,
Other = -9999
}
// Типы плат
public enum BoardType : byte
{
JawBreaker = 0,
HackRfOne = 1,
Rad1o = 2,
Unknown = 0xFF
}
💻 Системные требования
- .NET: 8.0 или 9.0
- ОС: Windows x64
- Оборудование: HackRF One или совместимое устройство
- Драйверы: установленные драйверы HackRF
- Библиотеки: hackrf.dll, libusb-1.0.dll, pthreadVC2.dll (включены в пакет)
📚 Дополнительные примеры
Получение информации об устройстве
// Получение списка устройств
using var device_list = HackRFLib.GetDeviceList();
var serials = HackRFLib.GetSerialNumbers(device_list);
Console.WriteLine($"Найдено устройств: {serials.Length}");
foreach (var serial in serials)
Console.WriteLine($"Серийный номер: {serial}");
// Информация о плате
if (HackRFLib.Open(out var device) == HackRfError.Success)
{
var board_id = HackRFLib.GetBoardId(device);
var version = HackRFLib.GetVersion(device);
Console.WriteLine($"Плата: {board_id}, Версия: {version}");
HackRFLib.Close(device);
}
Развёртка частот
// Настройка сканирования
ushort[] frequencies = [100, 200, 300, 400, 500]; // МГц
uint bytes_per_step = 8192;
uint step_width = 1000; // мкс
HackRFLib.InitSweep(device, frequencies, frequencies.Length,
bytes_per_step, step_width, 0, 0);
// Запуск развёртки
HackRfDelegate sweep_callback = (ref TransferInfo transfer) =>
{
// Обработка данных развёртки
return 0;
};
HackRFLib.StartRx(device, sweep_callback);
🔗 Полезные ссылки
📝 Лицензия
MIT License - Шмачилин Павел (shmachilin@yandex.ru)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
0.0.0 | 11 | 8/10/2025 |
Старт проекта