用网页显示工控仪表

一.起因

现在工控也越来越多的使用web页面来显示电压,电流,温度,转速等物理量.本例使用js控制网页显示速度仪表.

二.代码

csharp 复制代码
<html>
<head>
    <script type="text/javascript">
        var ctx;
        var px0;
        var movePoint={
            x0:0,
            x1:0
        };
      function init(){
          drawFace();
          movePoint.x0=30;
          movePoint.x1=30;
          px0=movePoint.x1;         
          drawPoint(movePoint);
      }
      function drawFace()
      {
        var c=document.getElementById("myCanvas");
        ctx=c.getContext("2d");
        ctx.lineWidth=3;
      
        ctx.strokeStyle="#FFFFFF";
        ctx.fillStyle="#FFFFFF";
        ctx.beginPath();
        ctx.arc(150,150,100,4/6*Math.PI,2/6*Math.PI);
        
        for (i=0;i<=300;i=i+10){
            x1=150+100*Math.cos((i+120)/180*Math.PI);
            y1=150+100*Math.sin((i+120)/180*Math.PI);
            ctx.moveTo(x1,y1);
            x=150+95*Math.cos((i+120)/180*Math.PI);
            y=150+95*Math.sin((i+120)/180*Math.PI);
            ctx.lineTo(x,y);
        }      
        ctx.font="11px 宋体";
        for (i=0;i<=300;i=i+20){
              x=143+85*Math.cos((i+120)/180*Math.PI);
              y=150+85*Math.sin((i+120)/180*Math.PI);
              ctx.fillText(i,x,y);
        } 
        ctx.stroke();
      }
      function drawPoint(movePoint){
          //抹旧针
        if (movePoint.x0!=movePoint.x1){   
            ctx.beginPath();
           ctx.strokeStyle="#000000";
            ctx.lineWidth=4;            
            var y=150+91*Math.sin((movePoint.x0+120)/180*Math.PI);
            var x=150+91*Math.cos((movePoint.x0+120)/180*Math.PI);
            ctx.moveTo(150,150);
            ctx.lineTo(x,y);
            ctx.stroke();
            ctx.beginPath();
            ctx.font="11px 宋体";
            ctx.fillStyle="#FFFFFF";
            ctx.strokeStyle="#FFFFFF";
            var i=Math.round( movePoint.x0/20);
            var iP1=i*20;
            x=143+85*Math.cos((iP1+120)/180*Math.PI);
            y=150+85*Math.sin((iP1+120)/180*Math.PI);
            ctx.fillText(iP1,x,y);
            ctx.stroke();           
        }        
        ctx.beginPath();
        ctx.strokeStyle="#FFFFFF";
        ctx.fillStyle="#FFFFFF";
        ctx.lineWidth=3;
        movePoint.x0=movePoint.x1;
        y=150+90*Math.sin((movePoint.x0+120)/180*Math.PI);
        x=150+90*Math.cos((movePoint.x0+120)/180*Math.PI);
        ctx.moveTo(150,150);
        ctx.lineTo(x,y);
        ctx.stroke();
    }
    function pointMove()
    {
        movePoint.x0=px0;
        movePoint.x1=px0;
        movePoint.x1+=5;
        if (movePoint.x1>296)
        {
            movePoint.x1=0;
        }
        drawPoint(movePoint);
        px0=movePoint.x1;
       
    }
    </script>
</head>
<body onload="init()">
  
    <canvas id="myCanvas" width="300" height="300" style="border:1px solid #130013;background-color:black">
        Your browser does not support the HTML5 canvas tag.
    </canvas>
    <br/>
    <input id="b1" type="button" onclick="pointMove()" value="指针转"/>

</body>
</html>

三.显示效果

相关推荐
梦帮科技16 分钟前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
VT.馒头1 小时前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
css趣多多1 小时前
一个UI内置组件el-scrollbar
前端·javascript·vue.js
C澒1 小时前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架
C澒1 小时前
Remesh 框架详解:基于 CQRS 的前端领域驱动设计方案
前端·架构·前端框架·状态模式
Charlie_lll1 小时前
学习Three.js–雪花
前端·three.js
onebyte8bits2 小时前
前端国际化(i18n)体系设计与工程化落地
前端·国际化·i18n·工程化
C澒2 小时前
前端分层架构实战:DDD 与 Clean Architecture 在大型业务系统中的落地路径与项目实践
前端·架构·系统架构·前端框架
BestSongC2 小时前
行人摔倒检测系统 - 前端文档(1)
前端·人工智能·目标检测
0思必得02 小时前
[Web自动化] Selenium处理滚动条
前端·爬虫·python·selenium·自动化