public static async Task InitTrain() { myParamRail = await LoadParamRail(); MySecurityKey = myParamRail.SecurityKey; securityKey = paramSecurityKey + ParamEqual + MySecurityKey; //// then Lego Infrared myLego = new LegoInfrared(); // then Signal mySignal = new Signal(myParamRail.NumberOfSignals); mySwitch = new Switch(myParamRail.NumberOfSwitchs, myParamRail.MinDuration, myParamRail.MaxDuration, myParamRail.MinAngle, myParamRail.MaxAngle, myParamRail.ServoAngle); if (myParamRail.Serial) { mySerial = new Serial(); string aqs = SerialDevice.GetDeviceSelector(); var dis = await DeviceInformation.FindAllAsync(aqs); SerialDevice serialPort = null; for (int i = 0; i < dis.Count; i++) { Debug.WriteLine(string.Format("Serial device found: {0}", dis[i].Id)); if (dis[i].Id.IndexOf("BCM2836") != -1) { serialPort = await SerialDevice.FromIdAsync(dis[i].Id); } } mySerial.SelectAndInitSerial(serialPort).Wait(); isSerialRunning = true; ThreadReading = ThreadPool.RunAsync(ContinuousUpdate, WorkItemPriority.High).AsTask(); } }
public static async Task InitTrain() { myParamRail = await LoadParamRail(); MySecurityKey = myParamRail.SecurityKey; securityKey = paramSecurityKey + ParamEqual + MySecurityKey; mySignal = new Signal(myParamRail.NumberOfSignals); mySwitch = new Switch(myParamRail.NumberOfSwitchs); myTrain = new Train((byte)myParamRail.NumberOfTrains); }
static private async Task <ParamRail> LoadParamRail() { FileStream fileToRead = null; ParamRail myParamRail = new ParamRail(); try { //fileToRead = new FileStream(strDefaultDir + "\\" + strFileProgram, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); fileToRead = new FileStream(await GetFilePath(strFileProgram), FileMode.Open, FileAccess.Read, FileShare.ReadWrite); long fileLength = fileToRead.Length; byte[] buf = new byte[fileLength]; //string mySetupString = ""; // Reads the data. fileToRead.Read(buf, 0, (int)fileLength); //await str.ReadAsync(buf, ) // convert the read into a string List <Param> Params = Param.decryptParam(new String(Encoding.UTF8.GetChars(buf))); byte mSignal = byte.MaxValue; byte mSwitch = byte.MaxValue; byte mTrains = byte.MaxValue; if (Params == null) { return(myParamRail); } if (Params.Count == 0) { return(myParamRail); } mSignal = Param.CheckConvertByte(Params, paramNumberSignal); if ((mSignal <= 0) || (mSignal > ElectricTrain.Signal.NUMBER_SIGNAL_MAX)) { mSignal = (byte)ElectricTrain.Signal.NUMBER_SIGNAL_MAX; } mSwitch = Param.CheckConvertByte(Params, paramNumberSwitch); if ((mSwitch <= 0) || (mSwitch > ElectricTrain.Switch.NUMBER_SWITCH_MAX)) { mSwitch = (byte)ElectricTrain.Switch.NUMBER_SWITCH_MAX; } mTrains = Param.CheckConvertByte(Params, paramNumberTrain); if ((mTrains <= 0) || (mTrains > ParamTrain.NUMBER_TRAIN_MAX)) { mTrains = (byte)ParamTrain.NUMBER_TRAIN_MAX; } myParamRail.SecurityKey = Param.CheckConvertString(Params, paramSecurity); //now load the params for the trains if (mTrains != 255) { myParamRail.NumberOfTrains = mTrains; myParamRail.Trains = new ParamTrain[mTrains]; for (byte a = 1; a <= mTrains; a++) { myParamRail.Trains[a - 1] = new ParamTrain(); byte mSpeed = Param.CheckConvertByte(Params, paramTrainSpeed + a.ToString()); if (mSpeed > 7) { mSpeed = 0; } myParamRail.Trains[a - 1].TrainName = Param.CheckConvertString(Params, paramTrainName + a.ToString()); myParamRail.Trains[a - 1].Speed = mSpeed; } } if (mSignal != 255) { myParamRail.NumberOfSignals = mSignal; myParamRail.Signals = new ParamSignal[mSignal]; for (byte a = 1; a <= mSignal; a++) { myParamRail.Signals[a - 1] = new ParamSignal(); string mName = Param.CheckConvertString(Params, paramNameSignal + a.ToString()); if (mName == "") { mName = "Signal " + a.ToString(); } myParamRail.Signals[a - 1].Name = mName; myParamRail.Signals[a - 1].Left = Param.CheckConvertInt32(Params, paramSignalleft + a.ToString()); myParamRail.Signals[a - 1].Top = Param.CheckConvertInt32(Params, paramSignaltop + a.ToString()); } } if (mSwitch != 255) { myParamRail.NumberOfSwitchs = mSwitch; myParamRail.Switchs = new ParamSwitchs[mSwitch]; for (byte a = 1; a <= mSwitch; a++) { myParamRail.Switchs[a - 1] = new ParamSwitchs(); string mName = Param.CheckConvertString(Params, paramNameSwitch + a.ToString()); if (mName == "") { mName = "Switch " + a.ToString(); } myParamRail.Switchs[a - 1].Name = mName; myParamRail.Switchs[a - 1].Left = Param.CheckConvertInt32(Params, paramleft + a.ToString()); myParamRail.Switchs[a - 1].Top = Param.CheckConvertInt32(Params, paramtop + a.ToString()); } } } catch (Exception e) { if (fileToRead != null) { fileToRead.Dispose(); } } return(myParamRail); }