public IRegSEDeviceInfo GetDeviceInfo() { if (_deviceInfo == null) { if (!IsConnected) { return(null); } using (var session = new SerialPortSession(_commport)) { var deviceNameCommand = new DeviceNameCommand(); deviceNameCommand.Execute(session.Port); var deviceName = deviceNameCommand.GetDeviceName(); var nameCommand = new NameCommand(); nameCommand.Execute(session.Port); var name = nameCommand.GetName(); var numberOfPointsCommand = new NumOfPointsCommand();; numberOfPointsCommand.Execute(session.Port); var numberOfPoints = numberOfPointsCommand.GetNumOfPoints(); var softwareVersionCommand = new SoftwareVersionCommand();; softwareVersionCommand.Execute(session.Port); var softwareVersion = softwareVersionCommand.GetVersion(); var hardwareVersionCommand = new HardwareVersionCommand();; hardwareVersionCommand.Execute(session.Port); var hardwareVersion = hardwareVersionCommand.GetVersion(); _deviceInfo = new RegSEDeviceInfo(deviceName, name, softwareVersion, hardwareVersion, numberOfPoints); } } return(_deviceInfo); }
private void LoadTracks() { lock (this) { _loadCompleted = false; if (!IsConnected) { SendReadError(new RegSEError("No connection with device!")); SendReadCompleted(); return; } using (var session = new SerialPortSession(_commport)) { var getNumOfPointsCommand = new NumOfPointsCommand(); getNumOfPointsCommand.Execute(session.Port); int total = getNumOfPointsCommand.GetNumOfPoints(); int current = 0; var loadPointsCommand = new LoadPointsCommand(current*16); loadPointsCommand.Execute(session.Port); var points = new List<IRegSETrackPoint>(); points.AddRange(loadPointsCommand.GetPoints()); current += loadPointsCommand.GetPoints().Count; SendProgressChanged(String.Format("Read track data... ({0}/{1})", current, total), current, total); do { loadPointsCommand = new LoadPointsCommand(current*16); loadPointsCommand.Execute(session.Port); points.AddRange(loadPointsCommand.GetPoints()); current += loadPointsCommand.GetPoints().Count; SendProgressChanged(String.Format("Read track data... ({0}/{1})", current, total), current, total); } while (current < total); // split into tracks if (points.Count > 0) { _tracks = new List<IRegSETrack>(); _trackInfos = new List<IRegSETrackInfo>(); var startPoint = points[0]; if (!startPoint.HasMark(RegSEPointType.TrackStart)) { SendReadError(new RegSEError("First point does not marked as track's start point!")); SendReadCompleted(); return; } var startPointIndex = 0; var numOfPoints = 0; for (var i = 1; i < points.Count; i++) { numOfPoints++; IRegSETrackPoint point = points[i]; if (point.HasMark(RegSEPointType.TrackStart)) { var duration = (int) (points[i - 1].Time - startPoint.Time).TotalSeconds; IRegSETrackInfo trackInfo = new RegSETrackInfo(startPoint.Time, duration, numOfPoints); _trackInfos.Add(trackInfo); _tracks.Add(new RegSETrack(trackInfo, points.GetRange(startPointIndex, numOfPoints).ToArray())); startPoint = point; startPointIndex = i; numOfPoints = 0; } } { var duration = (int) (points[points.Count - 1].Time - startPoint.Time).TotalSeconds; IRegSETrackInfo trackInfo = new RegSETrackInfo(startPoint.Time, duration, numOfPoints); _trackInfos.Add(trackInfo); _tracks.Add(new RegSETrack(trackInfo, points.GetRange(startPointIndex, numOfPoints).ToArray())); } } _loadCompleted = true; SendReadCompleted(); } } }
private void LoadTracks() { lock (this) { _loadCompleted = false; if (!IsConnected) { SendReadError(new RegSEError("No connection with device!")); SendReadCompleted(); return; } using (var session = new SerialPortSession(_commport)) { var getNumOfPointsCommand = new NumOfPointsCommand(); getNumOfPointsCommand.Execute(session.Port); int total = getNumOfPointsCommand.GetNumOfPoints(); int current = 0; var loadPointsCommand = new LoadPointsCommand(current * 16); loadPointsCommand.Execute(session.Port); var points = new List <IRegSETrackPoint>(); points.AddRange(loadPointsCommand.GetPoints()); current += loadPointsCommand.GetPoints().Count; SendProgressChanged(String.Format("Read track data... ({0}/{1})", current, total), current, total); do { loadPointsCommand = new LoadPointsCommand(current * 16); loadPointsCommand.Execute(session.Port); points.AddRange(loadPointsCommand.GetPoints()); current += loadPointsCommand.GetPoints().Count; SendProgressChanged(String.Format("Read track data... ({0}/{1})", current, total), current, total); } while (current < total); // split into tracks if (points.Count > 0) { _tracks = new List <IRegSETrack>(); _trackInfos = new List <IRegSETrackInfo>(); var startPoint = points[0]; if (!startPoint.HasMark(RegSEPointType.TrackStart)) { SendReadError(new RegSEError("First point does not marked as track's start point!")); SendReadCompleted(); return; } var startPointIndex = 0; var numOfPoints = 0; for (var i = 1; i < points.Count; i++) { numOfPoints++; IRegSETrackPoint point = points[i]; if (point.HasMark(RegSEPointType.TrackStart)) { var duration = (int)(points[i - 1].Time - startPoint.Time).TotalSeconds; IRegSETrackInfo trackInfo = new RegSETrackInfo(startPoint.Time, duration, numOfPoints); _trackInfos.Add(trackInfo); _tracks.Add(new RegSETrack(trackInfo, points.GetRange(startPointIndex, numOfPoints).ToArray())); startPoint = point; startPointIndex = i; numOfPoints = 0; } } { var duration = (int)(points[points.Count - 1].Time - startPoint.Time).TotalSeconds; IRegSETrackInfo trackInfo = new RegSETrackInfo(startPoint.Time, duration, numOfPoints); _trackInfos.Add(trackInfo); _tracks.Add(new RegSETrack(trackInfo, points.GetRange(startPointIndex, numOfPoints).ToArray())); } } _loadCompleted = true; SendReadCompleted(); } } }
public IRegSEDeviceInfo GetDeviceInfo() { if (_deviceInfo == null) { if (!IsConnected) { return null; } using (var session = new SerialPortSession(_commport)) { var deviceNameCommand = new DeviceNameCommand(); deviceNameCommand.Execute(session.Port); var deviceName = deviceNameCommand.GetDeviceName(); var nameCommand = new NameCommand(); nameCommand.Execute(session.Port); var name = nameCommand.GetName(); var numberOfPointsCommand = new NumOfPointsCommand(); ; numberOfPointsCommand.Execute(session.Port); var numberOfPoints = numberOfPointsCommand.GetNumOfPoints(); var softwareVersionCommand = new SoftwareVersionCommand(); ; softwareVersionCommand.Execute(session.Port); var softwareVersion = softwareVersionCommand.GetVersion(); var hardwareVersionCommand = new HardwareVersionCommand(); ; hardwareVersionCommand.Execute(session.Port); var hardwareVersion = hardwareVersionCommand.GetVersion(); _deviceInfo = new RegSEDeviceInfo(deviceName, name, softwareVersion, hardwareVersion, numberOfPoints); } } return _deviceInfo; }