/// <summary> /// 初始化系统 /// </summary> public void InitSystem() { messager = Singleton.GetMessager; speaker = Singleton.GetSpeaker; if (Currentversion.IsPlayBackgroundMusic) { speaker.InitLoopPlyaMediaTimer(); } if (Currentversion.masterBoxVersion == MasterControlBoxVersion.USB) { if (!OpenSerial()) { Toast.MakeText(this, "串口初始化失败,请就检查串口是否连接正常!", ToastLength.Long).Show(); } } switch (Currentversion.masterBoxVersion) { case MasterControlBoxVersion.SimulatedData: Task.Run(() => { Bootstrapper.InitializeSignalAsyncTest(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; case MasterControlBoxVersion.WifiTcp: case MasterControlBoxVersion.WifiUdp: //数据库加载后,进行提前加载灯光项目 Task.Run(() => { Bootstrapper.InitializeSignalUDPAsync(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; case MasterControlBoxVersion.Bluetooth: Task.Run(() => { Bootstrapper.InitializeSignalAsyncBluetooth(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; case MasterControlBoxVersion.USB: Task.Run(() => { Bootstrapper.InitializeSignalAsyncUSBSerial(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; case MasterControlBoxVersion.Serial: Task.Run(() => { Bootstrapper.InitializeSignalAsyncSerial(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; default: Task.Run(() => { Bootstrapper.InitializeSignalUDPAsync(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; } }
/// <summary> /// 初始化系统 /// </summary> public void InitSystem() { messager = Singleton.GetMessager; speaker = Singleton.GetSpeaker; if (Currentversion.IsPlayBackgroundMusic) { speaker.InitLoopPlyaMediaTimer(); } //TODO:这段是自己通过分辨率判断手动选择界面,建议通过layout多个分辨率实现,如果某个版本出现显示Bug可以考虑打开屏蔽 //TODO:编写界面的时候最好是使用百分比布局。我们界面比较简单基本能够适应大多数分辨率 // GetSystemUITypeByScreenDisplayMetrics(); //TODO;考虑到代码的美观,可以考虑把这段代码移到Bootstrapper 中InitializeSignalAsyncUSBSerial 方法中 if (Currentversion.masterBoxVersion == MasterControlBoxVersion.USB) { //TODO:其实简单的判断就可以了 没有必要用IsOpen和OpenSerial全局变量 //TODO:经过实际测试,串口有问题,重复打开多次也是没有用的 //while (!isOpen && OpenSerialCount < 1) //{ // isOpen = OpenSerial(); // OpenSerialCount++; //} //if (!isOpen) //{ // Toast.MakeText(this, "串口初始化失败,请就检查串口是否连接正常!", ToastLength.Long).Show(); //} //TODO:这样优化后就简单多了 if (!OpenSerial()) { Toast.MakeText(this, "串口初始化失败,请就检查串口是否连接正常!", ToastLength.Long).Show(); } } //TODO:这个Switc Case 应该可以去掉的 //可以考虑使用反射加依赖注入完成 //每一个枚举上面配置对应的信号处理类 switch (Currentversion.masterBoxVersion) { case MasterControlBoxVersion.SimulatedData: Task.Run(() => { Bootstrapper.InitializeSignalAsyncTest(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; case MasterControlBoxVersion.WifiTcp: case MasterControlBoxVersion.WifiUdp: //数据库加载后,进行提前加载灯光项目 Task.Run(() => { Bootstrapper.InitializeSignalUDPAsync(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; case MasterControlBoxVersion.Bluetooth: Task.Run(() => { Bootstrapper.InitializeSignalAsyncBluetooth(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; case MasterControlBoxVersion.USB: Task.Run(() => { Bootstrapper.InitializeSignalAsyncUSBSerial(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; case MasterControlBoxVersion.Serial: Task.Run(() => { Bootstrapper.InitializeSignalAsyncSerial(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; default: Task.Run(() => { Bootstrapper.InitializeSignalUDPAsync(messager, this, DBNAME); }).ContinueWith((task) => { var examItemCreator = Singleton.GetProviderFactory; }); break; } }