Oliverar Ответов: 1

Поиск и выбор механизмов в C#


Я использую Xamarin в C# для создания кросс-платформенного приложения BLE. Он основан на этом примере приложения с использованием Обезьяна.Робототехника плагин. Во всех примерах используется a
ObservableCollection<IDevice> devices;
строка, чтобы заполнить ListView всеми отсканированными результатами, которые пользователь затем может выбрать вручную, установив переменную равной этому значению. т. е.
var device = e.SelectedItem as IDevice;
Я подключаюсь к известному типу устройства, поэтому после выбора этого устройства я хочу автоматически установить служебные и характеристические переменные. Структура "IDevices" кажется немного сложной, поэтому я подумал, что будет проще всего перечислить службы, а затем автоматически выбрать ту, которая соответствует идентификатору, который я ищу. подобный этому:

IAdapter adapter;
IDevice device;
IService AppService;

ObservableCollection<IService> services;

    adapter.DeviceConnected += (s, e) => {

        device = e.Device;
        // when services are discovered
        device.ServicesDiscovered += (object se, EventArgs ea) => {
            if (services.Count == 0)
                Device.BeginInvokeOnMainThread (() => {
                    foreach (var service in device.Services) {
                        if (service.ID == 0x2A37.UuidFromPartial ()) {
                            AppService = service as IService;
                        }  else {
                            services.Add (service);
                        }
                    }
                } );
        } ;

        // start looking for services
        device.DiscoverServices ();
    };

Это то, как вы это сделаете, или вы соберете все результаты, а затем проверите их? В таком случае, как бы вы это структурировали?

Я также мог бы иметь функцию " SearchFor(x)`, настроить вездесущую `ObservableCollection` и просто бросить в нее x? Не уверен, что он может иметь дело как с "IService", так и с "ICharacteristic", если только у меня нет 2 операторов if и для каждого из них определено разное поведение. Тем не менее, было бы хорошо увидеть некоторые предложения для лучшего способа двигаться вперед.

Любые мысли / предложения будут очень признательны. Спасибо.

1 Ответов

Рейтинг:
2

Chris Maunder

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


Richard Deeming

Хммм...

Сентябрь 2015, и ОП, похоже, не был активен с тех пор, как опубликовал этот вопрос.

Так как же этот человек оказался в списке "активных"? :)

(Или вы просто убираете старые, оставшиеся без ответа вопросы?)

Chris Maunder

На самом деле я работал над тем же самым фрагментом кода, что и он, у меня возникли проблемы с ним, я искал и нашел это. Я полагал, что чрезвычайно поздний 2С сотворит чудеса, чтобы запутать проблему.