mirror of
https://github.com/EEVengers/ThunderScope.git
synced 2025-04-22 17:43:44 +00:00
Horizontal scaling
This commit is contained in:
parent
3f9e46eb67
commit
79608d0273
Software/waveview/src
components
configuration
redux
initialStates
reducers/widgets
util
@ -12,6 +12,9 @@ import {
|
||||
|
||||
import GraphStatus from '../../configuration/enums/graphStatus';
|
||||
import TestPoints from '../../util/testpoints';
|
||||
import { convertTime } from '../../util/convert';
|
||||
import TimeUnit from '../../configuration/enums/timeUnit';
|
||||
import DefaultValues from '../../configuration/defaultValues';
|
||||
|
||||
class Graph extends React.Component<any, any> {
|
||||
static instanceList: Graph[] = [];
|
||||
@ -39,6 +42,9 @@ class Graph extends React.Component<any, any> {
|
||||
}
|
||||
|
||||
render() {
|
||||
let base = this.props.horizontalWidget.horizontalTimeBase.course;
|
||||
let dCount = DefaultValues.divisions.time;
|
||||
let winSize = dCount * convertTime(base.value, base.unit, TimeUnit.NanoSecond);
|
||||
return (
|
||||
<div className="graph_view">
|
||||
<div
|
||||
@ -51,8 +57,8 @@ class Graph extends React.Component<any, any> {
|
||||
</p>
|
||||
</div>
|
||||
<FlexibleXYPlot
|
||||
yDomain={this.props.graph.yDomain}
|
||||
xDomain={this.props.graph.xDomain}
|
||||
yDomain={[-128,128]}
|
||||
xDomain={[0, winSize]}
|
||||
margin={{right:0, bottom:0}}
|
||||
>
|
||||
<HorizontalGridLines
|
||||
@ -97,11 +103,12 @@ class Graph extends React.Component<any, any> {
|
||||
}
|
||||
}
|
||||
|
||||
function mapStateToProps(state: { graph: any, settings: any, verticalWidget: any }) {
|
||||
function mapStateToProps(state: { graph: any, settings: any, verticalWidget: any, horizontalWidget: any }) {
|
||||
return {
|
||||
graph: state.graph,
|
||||
settings: state.settings,
|
||||
verticalWidget: state.verticalWidget
|
||||
verticalWidget: state.verticalWidget,
|
||||
horizontalWidget: state.horizontalWidget
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -3,23 +3,30 @@ import { connect } from 'react-redux';
|
||||
import './../../../css/sidebar/widgets/horizontalWidget.css';
|
||||
import ControlMode from '../../../configuration/enums/controlMode';
|
||||
import TimeUnit from '../../../configuration/enums/timeUnit';
|
||||
import { Plumber } from '../../../util/plumber';
|
||||
|
||||
class HorizontalWidget extends React.Component<any, any> {
|
||||
class HorizontalWidget extends React.Component<any, any> {
|
||||
|
||||
// Horizontal Time Base
|
||||
incrementTimeBase = () => {
|
||||
let i = this.props.horizontalWidget.horizontalTimeBase.index + 1;
|
||||
Plumber.getInstance().handleHoriz(i);
|
||||
this.props.dispatch({ type: 'horizontal/increaseTimeBase'});
|
||||
}
|
||||
|
||||
decrementTimeBase = () => {
|
||||
let i = this.props.horizontalWidget.horizontalTimeBase.index - 1;
|
||||
Plumber.getInstance().handleHoriz(i);
|
||||
this.props.dispatch({ type: 'horizontal/decreaseTimeBase'});
|
||||
}
|
||||
|
||||
incrementTimeBaseFine = () => {
|
||||
//TODO: actually scale
|
||||
this.props.dispatch({ type: 'horizontal/increaseTimeBaseFine'});
|
||||
}
|
||||
|
||||
decrementTimeBaseFine = () => {
|
||||
//TODO: actually scale
|
||||
this.props.dispatch({ type: 'horizontal/decreaseTimeBaseFine'});
|
||||
}
|
||||
|
||||
@ -73,12 +80,12 @@ class HorizontalWidget extends React.Component<any, any> {
|
||||
</div>
|
||||
|
||||
<div className="HorizontalWidgetAdjustBlock-HorizontalTimeBase">
|
||||
<button
|
||||
<button
|
||||
className="MinusButton"
|
||||
onClick={() => this.props.horizontalWidget.horizontalTimeBase.mode === ControlMode.Course ? this.decrementTimeBase() : this.decrementTimeBaseFine()}>
|
||||
-
|
||||
</button>
|
||||
<label
|
||||
<label
|
||||
className="AdjustValueBlockHorizontalTimeBase"
|
||||
style={{color: "white"}}
|
||||
>
|
||||
@ -87,7 +94,7 @@ class HorizontalWidget extends React.Component<any, any> {
|
||||
{this.props.horizontalWidget.horizontalTimeBase.mode === ControlMode.Fine && this.props.horizontalWidget.horizontalTimeBase.fine.value.toString()}
|
||||
{this.props.horizontalWidget.horizontalTimeBase.mode === ControlMode.Fine && this.props.horizontalWidget.horizontalTimeBase.fine.unit.toString() + "/div"}
|
||||
</label>
|
||||
<button
|
||||
<button
|
||||
className="PlusButton"
|
||||
onClick={() => this.props.horizontalWidget.horizontalTimeBase.mode === ControlMode.Course ? this.incrementTimeBase() : this.incrementTimeBaseFine()}>
|
||||
+
|
||||
@ -140,24 +147,24 @@ class HorizontalWidget extends React.Component<any, any> {
|
||||
Offset
|
||||
</div>
|
||||
<div className="HorizontalWidgetAdjustBlock-HorizontalOffset">
|
||||
<button
|
||||
<button
|
||||
className="MinusButton"
|
||||
onClick={() => this.decrementOffset()}>
|
||||
-
|
||||
</button>
|
||||
<label
|
||||
<label
|
||||
className="AdjustValueBlockHorizontalOffset"
|
||||
style={{color: "white"}}
|
||||
>
|
||||
{this.props.horizontalWidget.horizontalOffset.value.toString()}{this.props.horizontalWidget.horizontalOffset.unit}
|
||||
</label>
|
||||
<button
|
||||
<button
|
||||
className="PlusButton"
|
||||
onClick={() => this.incrementOffset()}>
|
||||
+
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ const x10ProbeValues = [
|
||||
];
|
||||
|
||||
// 13 different voltages per divison presets
|
||||
// Start at x1ProbeValues[6] and change accordingly
|
||||
// Start at x1ProbeValues[6] and change accordingly
|
||||
|
||||
const horizontalTimeBases = [
|
||||
{
|
||||
@ -243,8 +243,14 @@ const horizontalTimeBases = [
|
||||
// 31 different voltages per division presets
|
||||
// Start at horizontalTimeBases[15] and change accordingly
|
||||
|
||||
let divisions = {
|
||||
voltage: 10, //TODO: change graph to 8, make this 8
|
||||
time: 10
|
||||
}
|
||||
|
||||
export default {
|
||||
x1ProbeValues,
|
||||
x10ProbeValues,
|
||||
horizontalTimeBases
|
||||
horizontalTimeBases,
|
||||
divisions
|
||||
};
|
@ -3,18 +3,10 @@ import HorizontalWidgetInitialState from "./horizontalWidgetInitialState";
|
||||
import TimeUnit from "../../configuration/enums/timeUnit";
|
||||
import { convertTime } from "../../util/convert";
|
||||
|
||||
let defaultTimeDivisions = 10;
|
||||
let coarse = HorizontalWidgetInitialState.horizontalTimeBase.course;
|
||||
let xLimit = convertTime(coarse.value, coarse.unit, TimeUnit.NanoSecond) * defaultTimeDivisions;
|
||||
|
||||
const GraphInitialState = {
|
||||
currentStatus: GraphStatus.On,
|
||||
singleMode: false,
|
||||
xDomain: [0,xLimit],
|
||||
yDomain: [-128,128],
|
||||
tickCount: 0,
|
||||
voltageDivisions: 10, //TODO: change graph to 8, make this 8
|
||||
timeDivisons: defaultTimeDivisions
|
||||
tickCount: 0
|
||||
};
|
||||
|
||||
export default GraphInitialState;
|
@ -2,13 +2,15 @@ import DefaultValues from '../../configuration/defaultValues';
|
||||
import TimeUnit from '../../configuration/enums/timeUnit';
|
||||
import ControlMode from '../../configuration/enums/controlMode';
|
||||
|
||||
let index = 3; //originally 15
|
||||
|
||||
const HorizontalWidgetInitialState = {
|
||||
horizontalTimeBase: {
|
||||
mode: ControlMode.Course,
|
||||
index: 15,
|
||||
index: index,
|
||||
course: {
|
||||
value: DefaultValues.horizontalTimeBases[3].value, //originally index 15
|
||||
unit: DefaultValues.horizontalTimeBases[3].unit //originally index 15
|
||||
value: DefaultValues.horizontalTimeBases[index].value, //originally index 15
|
||||
unit: DefaultValues.horizontalTimeBases[index].unit //originally index 15
|
||||
},
|
||||
fine: {
|
||||
value: 0,
|
||||
@ -17,7 +19,7 @@ const HorizontalWidgetInitialState = {
|
||||
},
|
||||
horizontalOffset: {
|
||||
value: 0,
|
||||
unit: TimeUnit.MicroSecond
|
||||
unit: TimeUnit.NanoSecond
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -32,7 +32,7 @@ export default function(state = HorizontalWidgetInitialState, action: {type: any
|
||||
}
|
||||
}
|
||||
case "horizontal/increaseTimeBase":
|
||||
if (state.horizontalTimeBase.index >= 30) {
|
||||
if (state.horizontalTimeBase.index >= DefaultValues.horizontalTimeBases.length) {
|
||||
return { ...state };
|
||||
}
|
||||
return {
|
||||
|
@ -1,6 +1,9 @@
|
||||
import CMD from '../configuration/enums/cmd';
|
||||
import { SetChState } from './setChHelper';
|
||||
import MathOperators from '../configuration/enums/mathOperators';
|
||||
import DefaultValues from '../configuration/defaultValues';
|
||||
import { convertTime } from './convert';
|
||||
import TimeUnit from '../configuration/enums/timeUnit';
|
||||
|
||||
export enum SetMathOp {
|
||||
SetMath_None = 0,
|
||||
@ -143,6 +146,22 @@ export class Plumber {
|
||||
this.cycle(mathArgs);
|
||||
}
|
||||
|
||||
public handleHoriz(idx: number) {
|
||||
let bases = DefaultValues.horizontalTimeBases;
|
||||
let targIdx = (idx < 0) ? 0 : ((idx >= bases.length) ? bases.length : idx);
|
||||
let targ = bases[targIdx];
|
||||
let dCount = DefaultValues.divisions.time;
|
||||
let winSize = dCount * convertTime(targ.value, targ.unit, TimeUnit.NanoSecond);
|
||||
let setWinArgs = {
|
||||
headCheck: () => true,
|
||||
bodyCheck: () => true,
|
||||
cmd: CMD.CMD_SetWindowSize,
|
||||
id: 0,
|
||||
writeData: new Int8Array((new Uint32Array([winSize])).buffer)
|
||||
}
|
||||
this.cycle(setWinArgs);
|
||||
}
|
||||
|
||||
public decodeGetMinMax(args: PlumberArgs, a: Int8Array) {
|
||||
let maxCh = 4;
|
||||
let a64u = new BigUint64Array(a.buffer);
|
||||
|
@ -2,6 +2,9 @@ import CMD from '../configuration/enums/cmd';
|
||||
import { PlumberArgs, Plumber, SetMathOp } from './plumber';
|
||||
import store from '../redux/store';
|
||||
import { LineSeriesPoint } from 'react-vis';
|
||||
import DefaultValues from '../configuration/defaultValues';
|
||||
import { convertTime } from '../util/convert';
|
||||
import TimeUnit from '../configuration/enums/timeUnit';
|
||||
|
||||
class TestPoints {
|
||||
scope_data: LineSeriesPoint[][] = []; //[ch-1] for channel, [5] for math
|
||||
@ -43,6 +46,9 @@ class TestPoints {
|
||||
writeData: [74, 0]
|
||||
}
|
||||
|
||||
let base = state.horizontalWidget.horizontalTimeBase.course;
|
||||
let dCount = DefaultValues.divisions.time;
|
||||
let xLimit = dCount * convertTime(base.value, base.unit, TimeUnit.NanoSecond);
|
||||
this.setWinArgs = {
|
||||
headCheck: () => {
|
||||
this.setWinDone = true;
|
||||
@ -51,7 +57,7 @@ class TestPoints {
|
||||
bodyCheck: () => true,
|
||||
cmd: CMD.CMD_SetWindowSize,
|
||||
id: 0,
|
||||
writeData: new Int8Array((new Uint32Array([state.graph.xDomain[1]])).buffer)
|
||||
writeData: new Int8Array((new Uint32Array([xLimit])).buffer)
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,7 +70,8 @@ class TestPoints {
|
||||
update() {
|
||||
if(this.setChDone && this.setFileDone && this.setWinDone) {
|
||||
let state = store.getState();
|
||||
let xLimit = state.graph.xDomain[1];
|
||||
let base = state.horizontalWidget.horizontalTimeBase.course;
|
||||
let xLimit = convertTime(base.value, base.unit, TimeUnit.NanoSecond);
|
||||
let doMath = state.mathWidget.mathEnabled as boolean;
|
||||
let order = state.verticalWidget.getDataChannelOrder as number[];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user