Триангуляция Wi-Fi

Для swift 5 и наибольшей гибкости

Определите расширение с помощью функции roundCorners

extension UIButton {
    func roundCorners(corners: UIRectCorner, radius: Int = 8) {
        let maskPath1 = UIBezierPath(roundedRect: bounds,
                                     byRoundingCorners: corners,
                                     cornerRadii: CGSize(width: radius, height: radius))
        let maskLayer1 = CAShapeLayer()
        maskLayer1.frame = bounds
        maskLayer1.path = maskPath1.cgPath
        layer.mask = maskLayer1
    }
}

Вызовите roundCorners Функция

myButton.roundCorners(corners: [.topLeft, .topRight])

enter image description here

Или с определенным радиусом

myButton.roundCorners(corners: [.topLeft, .topRight], radius: 20)

enter image description here

31
задан Loki 18 June 2009 в 01:57
поделиться

5 ответов

Интересный вопрос. Первоначально мы думали использовать выходные данные чего-то вроде анализатора спектра WiSpy . Мне нравится идея использования направленной антенны. Похоже, что некоторые исследования (могут) еще продолжаются.

4
ответ дан 27 November 2019 в 22:49
поделиться

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

7
ответ дан 27 November 2019 в 22:49
поделиться

На самом деле я думаю, вам следует попробовать использовать алгоритм, подобный алгоритму GPS ( wikipedia ) .. конечно, вы можете упростить его в соответствии с вашими потребностями, например:

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

, поэтому, если вы разместите по крайней мере 4 вещателя, вы можете выполнить триангуляцию для каждого клиента, чтобы он мог рассчитать свою позицию. Естественно, что bcasters должны быть как можно более похожими в ответах ..

кстати, это всего лишь идеи ..

1
ответ дан 27 November 2019 в 22:49
поделиться

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

3
ответ дан 27 November 2019 в 22:49
поделиться

Вместо тренировки вы можете использовать билинейную интерполяцию. Говорят, что это лучше для нелинейного расстояния, а также данные прочности сигнала, такие как WiFi в городской среде. http://courses.cit.cornell.edu/ee476/finalprojects/s2007/finalprojects/s2007/AYL26_YM82/AYL26_YM82/index.htm имеет фоновую математику и то, что я предполагаю, это AVR C для выполнения его с датчиками магнитного поля. Отказ

4
ответ дан 27 November 2019 в 22:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: