Made the Buzzer connection modular to be able to connect multiple devices to the app (like a startpad)
This commit is contained in:
parent
c9c83e3f5b
commit
94af5e7da5
3 changed files with 115 additions and 50 deletions
|
@ -38,4 +38,7 @@ Item {
|
|||
}
|
||||
}
|
||||
|
||||
function connect(){
|
||||
return(_cppBuzzerConn.connect())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,56 @@ Popup {
|
|||
modal: true
|
||||
dim: false
|
||||
|
||||
property var connecting: {
|
||||
'active': false, 'ret': false
|
||||
};
|
||||
|
||||
signal connectRequested(var type)
|
||||
|
||||
function connect(type) {
|
||||
connecting.active = true
|
||||
root.closePolicy = Popup.NoAutoClose
|
||||
options_stack.opacity = 0
|
||||
|
||||
prog.arcEnd = 0
|
||||
prog.colorCircle = "grey"
|
||||
prog.opacity = 1
|
||||
prog.text = qsTr("connecting...")
|
||||
prog_refresh.running = true
|
||||
switch(type){
|
||||
case "buzzer":
|
||||
connectRequested("buzzer")
|
||||
break
|
||||
}
|
||||
if(connecting.ret){
|
||||
prog_refresh.running = false
|
||||
prog.colorCircle = "green"
|
||||
prog.text = qsTr("success")
|
||||
prog.arcEnd = 360
|
||||
}
|
||||
else {
|
||||
prog_refresh.running = false
|
||||
prog.colorCircle = "red"
|
||||
prog.text = qsTr("error")
|
||||
prog.arcEnd = 360
|
||||
}
|
||||
//make a short delay and go back to normal options
|
||||
shortDelay.start()
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: shortDelay
|
||||
running: false
|
||||
repeat: false
|
||||
interval: 1000
|
||||
onTriggered: {
|
||||
prog.opacity = 0;
|
||||
options_stack.opacity = 1
|
||||
root.closePolicy = Popup.CloseOnPressOutside;
|
||||
connecting.active = false
|
||||
}
|
||||
}
|
||||
|
||||
enter: Transition {
|
||||
NumberAnimation { properties: "scale"; from: 0; to: 1; duration: 300; easing.type: Easing.Linear }
|
||||
}
|
||||
|
@ -80,6 +130,8 @@ Popup {
|
|||
arcBegin: 0
|
||||
arcEnd: 0
|
||||
|
||||
onColorCircleChanged: prog.repaint()
|
||||
|
||||
Timer {
|
||||
id: prog_refresh
|
||||
running: false
|
||||
|
@ -110,6 +162,8 @@ Popup {
|
|||
}
|
||||
height: parent.height * 0.13
|
||||
width:height
|
||||
opacity: root.connecting.active === true ? 0:1
|
||||
enabled: opacity > 0
|
||||
|
||||
background: Rectangle {
|
||||
radius: width * 0.5
|
||||
|
@ -142,6 +196,7 @@ Popup {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
StackView {
|
||||
|
@ -150,6 +205,8 @@ Popup {
|
|||
initialItem: settings
|
||||
width: headlineUnderline.width
|
||||
|
||||
enabled: opacity !== 0 //disable when not visible
|
||||
|
||||
anchors {
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
|
@ -173,56 +230,24 @@ Popup {
|
|||
/*----Connect to buzzer----*/
|
||||
ItemDelegate {
|
||||
id: connect_del
|
||||
width: parent.width
|
||||
text: _cppBuzzerConn.get("connected")===1 ? qsTr("connected to buzzer"):qsTr("connect to buzzer")
|
||||
text: qsTr("connections")
|
||||
font.pixelSize: options_stack.text_pixelSize
|
||||
Timer {
|
||||
running: connect_del.scale === 1
|
||||
repeat: true
|
||||
interval: 10
|
||||
onTriggered: {
|
||||
connect_del.text = _cppBuzzerConn.get("connected")===1 ? qsTr("connected to buzzer"):qsTr("connect to buzzer")
|
||||
width: parent.width
|
||||
|
||||
Image {
|
||||
id: connect_del_image
|
||||
source: "qrc:/graphics/icons/back_black.png"
|
||||
rotation: 180
|
||||
height: options_stack.text_pixelSize
|
||||
width: height
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
right: parent.right
|
||||
rightMargin: 10
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
root.closePolicy = Popup.NoAutoClose
|
||||
options_stack.opacity = 0
|
||||
|
||||
prog.arcEnd = 0
|
||||
prog.colorCircle = "grey"
|
||||
prog.opacity = 1
|
||||
prog.text = qsTr("connecting...")
|
||||
prog_refresh.running = true
|
||||
|
||||
if(_cppBuzzerConn.connect()){
|
||||
prog_refresh.running = false
|
||||
prog.colorCircle = "green"
|
||||
prog.text = qsTr("success")
|
||||
prog.arcEnd = 360
|
||||
}
|
||||
else {
|
||||
prog_refresh.running = false
|
||||
prog.colorCircle = "red"
|
||||
prog.text = qsTr("error")
|
||||
prog.arcEnd = 360
|
||||
}
|
||||
|
||||
//make a short delay and go back to normal options
|
||||
shortDelay.start()
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: shortDelay
|
||||
running: false
|
||||
repeat: false
|
||||
interval: 1000
|
||||
onTriggered: {
|
||||
connect_del.enabled = true;
|
||||
prog.opacity = 0;
|
||||
options_stack.opacity = 1
|
||||
root.closePolicy = Popup.CloseOnPressOutside;
|
||||
}
|
||||
options_stack.push(connect)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,6 +287,34 @@ Popup {
|
|||
}
|
||||
}
|
||||
|
||||
/*-----Page to connect to sensors like a startpad or buzzer-----*/
|
||||
Component {
|
||||
id: connect
|
||||
Column {
|
||||
id: connect_col
|
||||
property string title: "connections"
|
||||
property int delegateHeight: height*0.18
|
||||
ItemDelegate {
|
||||
id: connect_buzz_del
|
||||
width: parent.width
|
||||
text: _cppBuzzerConn.get("connected")===1 ? qsTr("connected to buzzer"):qsTr("connect to buzzer")
|
||||
font.pixelSize: options_stack.text_pixelSize
|
||||
Timer {
|
||||
running: connect_buzz_del.scale === 1
|
||||
repeat: true
|
||||
interval: 10
|
||||
onTriggered: {
|
||||
connect_buzz_del.text = _cppBuzzerConn.get("connected")===1 ? qsTr("connected to buzzer"):qsTr("connect to buzzer")
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
root.connect("buzzer")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*-----Page to setup automatc start sequence-----*/
|
||||
Component {
|
||||
id: autostart
|
||||
|
|
17
qml/main.qml
17
qml/main.qml
|
@ -33,7 +33,6 @@ Window {
|
|||
|
||||
|
||||
Page {
|
||||
|
||||
id:root
|
||||
anchors.fill: parent
|
||||
|
||||
|
@ -45,8 +44,8 @@ Window {
|
|||
property double last_button_pressed
|
||||
|
||||
property var last_run : {
|
||||
'stopp_type': "", 'time': 0
|
||||
};
|
||||
'stop_type': "", 'time': 0
|
||||
};
|
||||
|
||||
//set default state to IDLE
|
||||
state: "IDLE"
|
||||
|
@ -63,6 +62,7 @@ Window {
|
|||
}
|
||||
|
||||
BuzzerConn {
|
||||
id: buzzerConn
|
||||
onPushed: {
|
||||
// the buzzer was pushed
|
||||
root.stop("buzzer")
|
||||
|
@ -367,6 +367,15 @@ Window {
|
|||
------*/
|
||||
SettingsDialog{
|
||||
id: settingsDialog
|
||||
|
||||
onConnectRequested: {
|
||||
switch(type){
|
||||
case "buzzer":
|
||||
|
||||
settingsDialog.connecting.ret = buzzerConn.connect()
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ProfilesDialog {
|
||||
|
@ -627,7 +636,7 @@ Window {
|
|||
console.log("STOPPED: "+root.stoppedTime)
|
||||
break
|
||||
case "manual":
|
||||
//te stop button was pressed
|
||||
//the stop button was pressed
|
||||
root.stoppedTime = new Date().getTime() - root.startTime
|
||||
time.text = ( root.stoppedTime / 1000 ).toFixed(3) + " sec"
|
||||
root.state = "STOPPED"
|
||||
|
|
Reference in a new issue