/* * Copyright (c) 2018 TOYOTA MOTOR CORPORATION * Copyright (C) 2016 The Qt Company Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import QtQuick 2.6 import QtQuick.Layouts 1.1 import QtQuick.Controls 2.0 import QtWebSockets 1.0 ApplicationWindow { id: window title: "HUD Speed Demo" width: 480 height: 180 visible: true property string api_str: "low-can" property string verb_str: "subscribe" property var msgid_enu: { "call":2, "retok":3, "reterr":4, "event":5 } property string request_str: "" property string status_str: "" property double speed_val: 0 WebSocket { id: websocket url: bindingAddress onStatusChanged: { if (websocket.status === WebSocket.Error){ console.log ("Error: " + websocket.errorString) websocket.active = false }else if (websocket.status === WebSocket.Open){ console.log ("Socket Open") do_subscribe() }else if (websocket.status === WebSocket.Closed){ console.log ("Socket closed") } } onTextMessageReceived: { var message_json = JSON.parse(message) console.log ("Raw response: " + message) console.log ("JSON response: " + message_json) if (message_json[0] === msgid_enu.event){ //get speed from low-can app var property_name = message_json[2].event.split("/")[1] if(property_name === "messages.vehicle.average.speed") { speed_val = message_json[2].data.value console.log ("speed_val: " + speed_val) } } else{ if (message_json[0] !== msgid_enu.retok) { console.log ("Return value is not ok !") return } } /* refresh happen */ } active: true } //subscribe function do_subscribe() { request_str ='[' + msgid_enu.call + ',"99998","' + api_str +'/'+ verb_str +'",{ \"event\" : \"vehicle.average.speed\" } ]'; websocket.sendTextMessage (request_str) } Rectangle { color: '#111111' anchors.fill: parent Label { id: speed anchors.left: parent.left anchors.top: parent.top text: speed_val.toFixed(0) font.pixelSize: parent.height*4/5 color: "white" } Label { id: unit anchors.right: parent.right anchors.bottom: parent.bottom text: 'MPH' font.pixelSize: parent.height/5 } } }