/* * 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 int speed_val: 0 property var speedImg: [ "qrc:/image/speed_0.png", "qrc:/image/speed_1.png", "qrc:/image/speed_2.png", "qrc:/image/speed_3.png", "qrc:/image/speed_4.png", "qrc:/image/speed_5.png", "qrc:/image/speed_6.png", "qrc:/image/speed_7.png", "qrc:/image/speed_8.png", "qrc:/image/speed_9.png" ] 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.toFixed(0) 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) } background: Rectangle { color: "#111111" } Image{ id: background anchors.centerIn: parent source: "qrc:/image/speed_blue_L.png" } Image{ id: backpoint anchors.centerIn: parent source: "qrc:/image/speed_meter.png" } Image{ id: unit anchors.centerIn: parent source: "qrc:/image/speed_meter_mph.png" } Rectangle { color: "#111111" } Image { visible: (speed_val < 10) ? false : true anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenterOffset: 5 anchors.verticalCenter: parent.verticalCenter anchors.verticalCenterOffset: 25 source: (speed_val < 10) ? speedImg[0] : speedImg[(speed_val - speed_val%10)/10%10] } Image { anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenterOffset: (speed_val < 10) ? 25 : 45 anchors.verticalCenter: parent.verticalCenter anchors.verticalCenterOffset: 25 source: speedImg[speed_val%10] } }