xml地图|网站地图|网站标签 [设为首页] [加入收藏]
code高cpu占用率问题,Linux中的官方源
分类:操作系统

(microsoft.vscode.cpp.extension.darwin进程高cpu占用问题)

转载一篇文章,很有用

用树莓派和DS18B20做个汽车温度记录仪[原创]

图片 1
免费的vs-code现在已经成为mac/linux平台的码农新宠,毕竟从windows平台开发virsul studio多年的经验积累不是白给的。
我也从诸多的代码编辑器环境,逐渐迁移、统一到了vs-code。最近发现一启动vs-code,风扇就呼呼转,才开始还没注意,以为微软的Windows中二病做派再次发作了。后来逐渐感觉系统响应速度严重下降,仔细检查发现是一个进程CPU占用高企不坠:microsoft.vscode.cpp.extension.darwin,如果是在linux平台则是:microsoft.vscode.cpp.extension.linux。
在网上搜索,发现这个问题早已有之,社区中投诉帖汗牛充栋,大致可以把问题界定向vs-code的插件机制和扩展插件的问题,但实际解决问题的方法一直没有,大家都寄期望于软件的升级。
不过花费大量时间后,最终在一个帖子的很靠后位置找到一个解决办法:
编辑文件:.vscode/extensions/ms-vscode.cpptools-0.17.7/out/src/LanguageServer/client.js,注意如果你的c++插件不是0.17.7版本(当前最新版),请修改为你当前版本的文件夹。
修改内容:

(一)、企业站

     很想知道夏日阳光暴晒下,汽车内的最高温度以及温度的变化情况。觉得用树莓派和DS18B20来实现应该很简单,于是就尝试捣鼓了一下,半天时间就搞定了,写下来和大家分享。以下原创内容欢迎网友转载,但请注明出处:

-        extensionProcessName += '.linux';
+        //extensionProcessName += '.linux';
+        extensionProcessName += '.linux.sh';
     }
     else if (plat == 'darwin') {
        extensionProcessName += '.darwin';

搜狐:

一、树莓派读取DS18B20的温度值

随后再建立一个文件:~/.vscode-insiders/extensions/ms-vscode.cpptools-0.17.7/bin/Microsoft.VSCode.CPP.Extension.linux.sh,同样注意版本号跟文件夹对应。内容为:

    Raspbian系统已经能够支持DS18B20单总线(1-wire)温度传感器,只要简单配置就可以直接读取,无需自己编写底层驱动。

#!/bin/bash
exec /opt/glibc-2.18/lib/ld-linux-x86-64.so.2 
        --library-path /opt/glibc-2.18/lib:/lib64:/lib64  
   "${0//.sh/}" ${1+"$@"}

网易:

   配置过程也很简单:

原文的修改方式是对linux。尝试修改完重启vs-code,故障排除了。
但是在mac电脑,这种方式就不灵了,macOS所使用的链接库不是这种方式,而且签名机制也不太容易搞定。
所以建议先卸载微软提供的c/c++扩展,可以安装第三方的c++扩展工具,用起来没太大的区别。比如austin出品的C++ Intellisense。

   打开Raspbian系统的/boot/config.txt文件,在最后一行添加如下代码。

参考文档

阿里云:

   dtoverlay=w1-gpio-pullup,gpiopin=17

   其中最后一个数字17表示:树莓派和DS18B20连接所使用的扩展引脚编号,即下表中BCM编码列中对应的数字。可根据需要选择树莓派40pin扩展口中的任意引脚。

腾讯:

 图片 2

图1 树莓派40Pin引脚对照表

淘宝:

    修改完config.txt后关机,将DS18B20的数据脚(TO-92封装的中间一个引脚)连接到树莓派的17pin,同时连接电源和地引脚。另外,还要在DS18B20的数据引脚和VCC之间连接一个4.7K的上拉电阻方可正常使用。

   重新开启树莓派后就可以在/sys/bus/w1/devices下找到名为28-XXXXXXX(XXXXXXX为实际DS18B20的编号)的目录了,其中的文件w1_slave包含了实际温度值,用cat指令查看文件内容如下图所示。

 

图片 3

(二)、教育站上海交通大学:

图2 命令行读取温度数值

    其中第一行末尾都会有一个YES或NO,如果是YES,那第二行紧接着就是温度,以1/1000摄氏度为单位。

华中科技大学:

    在使用中我发现,如果直接使用DS18B20芯片和树莓派相连,则由于DS18B20和树莓派的CPU过近,往往会使测量得到的温度偏高近10℃。因此我在某宝购买了一个带有金属外壳和较长连线的DS18B20,价格不过7-8元,但测量准确度大大提高。另外由于有较长的连线,4.7K电阻的焊接也变得很容易。完成的传感器如下图3所示。

 图片 4

清华大学:

图3 完成后的DS18B20探头

二、用Python读取并保存温度值

北京理工大学:

      编写一个简单的Python程序,每分钟读取一个温度值,并将其按照固定格式保存在文件中,方便查看和分析。具体代码如下所示,其核心思路是每5秒查看一次系统时间,如果达到1分钟就读取并保存一次数据。

图片 5图片 6

兰州大学:

 1 # -*- coding: utf-8 -*-
 2 import time
 3 while True:
 4     time.sleep(5)#休眠5秒再次查看有没有到分钟数字发生改变
 5     year=time.localtime(time.time()).tm_year
 6     mon=time.localtime(time.time()).tm_mon
 7     mday=time.localtime(time.time()).tm_mday
 8     hour=time.localtime(time.time()).tm_hour
 9     min=time.localtime(time.time()).tm_min
10     sec=time.localtime(time.time()).tm_sec
11     if sec <= 5:
12         tp=open("/home/pi/temp_data/temp.csv","a")
13         #用末尾添加的方式在temp.csv文件的末尾添加新的时间和温度数据
14         tp.write(str(year))
15         tp.write("/")
16         tp.write(str(mon))
17         tp.write("/")
18         tp.write(str(mday))
19         tp.write("/")
20         tp.write(str(hour))
21         tp.write("/")
22         tp.write(str(min))
23         tp.write("/")
24         tp.write(str(sec))
25         tp.write(",")#csv文件的分隔符
26        #读取温度传感器
27         tfile=open("/sys/bus/w1/devices/28-000003e6d2d2/w1_slave",'r')
28         lines=tfile.readlines()
29         tfile.close()
30         k=lines[1].find('t=')
31         temp_str = lines[1][k+2:k+7]
32         temperature=float(temp_str)/1000.0
33         print(temperature)
34         tp.write(str(temperature))
35         tp.write("n")
36         tp.close()
37  

View Code

中国科技大学:

三、将保存温度值配置成系统启动任务

    由于汽车内没有显示器,也不方便每次开机还要用终端启动上边的Python程序。因此有必要将这个程序配置为开机就运行的系统任务。

大连东软信息学院:

   首先,安装用于配置和查看启动任务的chkconfig,在终端中更实用如下命令行:sudo apt-get install chkconfig

   其次,编写启动Python程序的脚本tmp_rec.sh如下所示。

东北大学:

#!/bin/bash

python3 /home/pi/python_ex/DS18B20/wr_time_temp.py

大连理工大学:

    为这个脚本增加可执行权限,并将其拷贝到/etc/init.d/下

mv tmp_rec.sh /etc/init.d/

哈尔滨工业大学:

chmod +r /etc/init.d/tmp_rec.sh

   第三,将tmp_rec.sh添加到启动运行的服务进程中:

北京交通大学:

chkconfig --add tmp_rec.sh

     添加后可以通过以下命令行查看该服务的状态:

天津大学:

chkconfig --list tmp_rec.sh

   第四,如果需要关闭该启动运行的服务则可以执行以下命令行:

中国地质大学:

chkconfig --del tmp_rec.sh

四、记录温度车内温度变化曲线

浙江大学:

    将连接了DS18B20的树莓派放入车内,采用点烟器车载充电器的USB口供电,即可实现车内温度变化曲线记录功能。

图片 7

厦门大学:

图4 车内连接树莓派和DS18B20

     使用时值得注意的是,树莓派3没有实时时钟,每次上电需要连接网络获取时间来作为系统时间。而本记录程序在温度的同时还要记录当前时间。因此除非你的车停在有WIFI信号的地方,否则需要打开手机热点供树莓派连接网络获取系统时间。

中山大学:

     前面的Python程序在记录温度数据文件(*.csv)时采用了ASCII码,因此可以使用Matlab、Excel和Python matplot等任意流行的绘图工具来绘制车内温度变化曲线。 

 图片 8

重庆大学:

图5 车内温度曲线

     由上图可以基本看出一天中车内温度变化趋势,中午10:00左右放入后数小时达到最高值29℃左右,随后由于下午和晚间有雨,从而导致温度逐渐降低。刚开始阶段的温度骤降,是由于手握DS18B20的原因造成的。另外由于下雨全天温度峰值并不如想象中高,下次可以选择一个晴朗的日子再次测试。

北京化工大学:

 

SDK镜像仅供校内使用,当前已用容量估计:1.72T)

南阳理工学院:

中国科学院:

电子科技大学:

电子科技大学星辰工作室:

本文由澳门新葡亰手机版发布于操作系统,转载请注明出处:code高cpu占用率问题,Linux中的官方源

上一篇:解决gdb运行文件报错During,SSH远程登陆 下一篇:没有了
猜你喜欢
热门排行
精彩图文