精华内容
下载资源
问答
  • 使用Python读取串口数据

    千次阅读 2020-11-18 16:39:06
    Python读取串口数据使用Python读取串口数据1.面向百度编程2.应用serial库3.编码设计4.编程实现 使用Python读取串口数据 1.面向百度编程 通过百度,定位到可使用Python的serial库进行读写串口数据。接着,开始用pip...

    使用Python读取串口数据

    1.编程流程

    串口数据流程为,

    1.实例化串口连接,
    2.初始化设置连接属性,
    3.连接串口硬件,
    4.读取传输缓存区的串口数据。

    使用Python的serial库进行读写串口数据。

    pip3 install serial
    

    技巧:重复运行上述pip指令,可输出当前serial依赖库的存放位置。

    参考教程:https://www.jb51.net/article/170801.htm.

    2.应用serial库

    分析1中功能流程,进行如下汇总:

    1. 串口连接配置1:实例化串口连接
    2. 串口连接配置2:配置串口参数,并连接串口
    3. 串口连接配置3:读取串口数据
    4. 加上功能:核验接收数据

    3.编码设计

    将上面的功能,进行如下进行设计:

    1. 串口参数配置设为变量,初始化串口连接时进行调用
    2. 读取串口数据,写入文件
    3. 判断:串口数据数据格式,每包数据长度

    4.编程实现

    1. 编写函数,实现读取串口操作
    def msg_list():
    	# 新建一个列表,返回该串口数据,做后续数据处理使用
    	msg_list = list()
    	# 准备一个文件,保存数据
    	r = r'E:\py\0.txt'
    	write_file = open(r, 'wb')
    	# 配置串口名称、比特率、超时时间
    	port = 'COM3'
    	bps = 1152000
    	timex = 1
    	# 连接串口
    	ser = serial.Serial(port, bps, timeout=timex)
    	print(ser)
    	# 等下时间,去启动串口发送程序。不然,程序会直接进入判断串口数据直接结束
    	time.sleep(3)
    	# 进入读写过程
    	while True:
    		# 判断当前写入区有没有串口数据
    		if ser.in_waiting:
    			# 读数据
    			msg = ser.readall()
    			# 写入数据到文件里
    			write_file.write(msg)
    			# 将数据转成16进制数,存入列表中
    			msg_list = list(msg.hex)
    		else:
    			# 当串口写入缓存区没数据,关闭串口和文件,结束读写操作
    			ser.close()
    			write_file.close()
    			break
    	# 保存的串口数据列表做这次函数的返回值
    	return msg_list
    

    有了一组串口数据,后续就可以自定义发挥了。

    if __name__ == '__main__':
    	a = msg_list()
    	# 由于我的发串口程序是发16进制的固定长度为160的数据包,所以进行按固定长度分割列表。列表里的索引就为每一个数据包的次序。
    	# 补充,串口配置默认是按每8bit位读取(可配置),所以在数据里,一包总长度为160 * 2 = 320
    	a1 = [a[i:i+162*2]] for i in range(0, len(items), 162*2)
    	# 判断下,每帧串口数据头是否正确
    	# 由于缓存区存在内存大小限制。预估在结尾容易发生丢包,所以加个长度判断
    	for i in range(0, len(a1)):
    		if a1[i][0:4] = ['a', 'b', 'c', 'd'] and len(a[i]) == 160*2:
    			pass
    		else:
    			# 输出第一次不正确的上下行数据
    			print('到了', i)
    			print(a1[i-1])
    			print(a1[i])
    			break
    
    展开全文
  • 首先来看 c++文件创建一个内存块服务端客户端分别如下: //#include "stdafx.h" #include <windows.h> #include <iostream> using namespace std; #define BUF_SIZE 4096 int main() { // 定义...

    经过各种折腾,终于搞定了这个奇葩需求:

    首先来看 c++文件创建一个内存块服务端客户端分别如下:

    //#include "stdafx.h"
    #include <windows.h>
    #include <iostream> 
    using namespace std;
     
    #define BUF_SIZE 4096
     
    int main()
    {
    	// 定义共享数据
    	UINT32 szBuffer[] = {0x34ff,0x12ff,0x0345678,0x04,0x00,0,0,0};
     
    	// 创建共享文件句柄 
    	HANDLE hMapFile = CreateFileMapping(
    		INVALID_HANDLE_VALUE,   // 物理文件句柄
    		NULL,   // 默认安全级别
    		PAGE_READWRITE,   // 可读可写
    		0,   // 高位文件大小
    		BUF_SIZE,   // 低位文件大小
    		"S_ME"   // 共享内存名称
    	);
     
    	// 映射缓存区视图 , 得到指向共享内存的指针
    	LPVOID lpBase = MapViewOfFile(
    		hMapFile,            // 共享内存的句柄
    		FILE_MAP_ALL_ACCESS, // 可读写许可
    		0,
    		0,
    		BUF_SIZE
    	);
     
    	// 将数据拷贝到共享内存
    	//strcpy((UINT32*)lpBase, szBuffer);
    	memcpy((UINT32*)lpBase, szBuffer,sizeof(szBuffer));
    	cout <<"服务:"<< (UINT32*)lpBase << endl;
     
    	// 线程挂起等其他线程读取数据
    	Sleep(2000000);
     
    	// 解除文件映射
    	UnmapViewOfFile(lpBase);
    	// 关闭内存映射文件对象句柄
    	CloseHandle(hMapFile);
    	return 0;
    }
    
    #include <iostream>  
    #include <windows.h>  
    using namespace std;
     
    #define BUF_SIZE 4096
     
    int main()
    {
    	// 打开共享的文件对象
    	HANDLE hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, TRUE, "S_ME");
    	if (hMapFile) {
    		LPVOID lpBase = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, 0);
    		// 将共享内存数据拷贝出来
    		char szBuffer[BUF_SIZE] = { 0 };
    		strcpy(szBuffer, (char*)lpBase);
    		cout <<"客户:"<< szBuffer << endl;
     
    		// 解除文件映射
    		UnmapViewOfFile(lpBase);
    		// 关闭内存映射文件对象句柄
    		CloseHandle(hMapFile);
     
    	}
    	else {
    		// 打开共享内存句柄失败
    		cout << "打开共享失败!" << endl;
    	}
    	system("pause");
    	return 0;
    }
    

    现在换成puthon来读取内存块:

    import mmap
    mmap_file = None
    import struct
    
    ##从内存中读取信息,
    def read_mmap_info():    
        global mmap_file
        mmap_file.seek(0)
        info_str=[]
        ##把二进制转换为字符串
        #info_str=mmap_file.read().translate(None, b'\x00').decode()
    
        mmap_file.seek(8)
        info_str=((mmap_file.read(4)))    #每次读取4个字节
        print((info_str))
        x=struct.unpack('I',info_str)[0]  #将读取的二进制数进行解包注意字节序
        print(hex(x))
     
    
    def get_mmap_info():
        global mmap_file
        ##第二个参数1024是设定的内存大小,单位:字节。如果内容较多,可以调大一点
        mmap_file = mmap.mmap(-1, 1024, access = mmap.ACCESS_WRITE, tagname = 'S_ME')
        ##读取有效比特数,不包括空比特
        #cnt=mmap_file.read_byte().decode('utf-8')
        cnt=mmap_file.read_byte()
        if cnt==0:
            print("Load data to memory")
            #mmap_file = mmap.mmap(0, 1024, access = mmap.ACCESS_WRITE, tagname = 'share_mmap')
            #mmap_file.write(b"This is the test data")
        else :
            print("The data is in memory")
            read_mmap_info()
    
    if __name__=="__main__":
        get_mmap_info()
    

    都他妈1点半了,明天再过程吧

    展开全文
  • python读取uci数据

    千次阅读 2019-05-11 06:27:42
    第一种方法:在线下载uci数据集到内存 import urllib.request url = “http://archive.ics.uci.edu//ml//machine-learning-databases//wine//wine.data” raw_data = urllib.request.urlopen(url) dataset_raw = np....

    第一种方法:在线下载uci数据集到内存
    import urllib.request
    url = “http://archive.ics.uci.edu//ml//machine-learning-databases//wine//wine.data
    raw_data = urllib.request.urlopen(url)
    dataset_raw = np.loadtxt(raw_data, delimiter=",")
    得到的dataset_raw是一个二位数组,行数是样本总数,列数是属性的个数加上label,最后一列是label.

    第二种方法:先下载好数据集 XX.data文件,保存在本地某个路径
    raw_dataset = np.loadtxt(‘D:\DeepLearning\oneClassification\real-nvp_test\data\wine.data’, delimiter = ‘,’)

    展开全文
  • python 读取es数据

    千次阅读 2018-02-07 14:52:00
    # 设置要过滤返回的字段值,要什么字段,就在这里添加,这样可以节约返回的数据量(带宽,内存等) return_fields = [ '_scroll_id', 'hits.hits._source.timestamp', 'hits.hits._source.@timestamp', 'hits....
    参考https://www.cnblogs.com/ghj1976/p/5293250.html也可以看我的印象笔记
    term 过滤
    term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed 的字符串(未经分析的文本数据类型):
    terms 过滤
    terms 跟 term 有点类似,但 terms 允许指定多个匹配条件。 如果某个字段指定了多个值,那么文档需要一起去做匹配:
    { 
        "terms": { 
            "tag": [ "search", "full_text", "nosql" ] #tag字段对应的值有三种
            } 
    }
    exists 和 missing 过滤
    exists 和 missing 过滤可以用于查找文档中是否包含指定字段或没有某个字段,类似于SQL语句中的IS_NULL条件. 
    
    { 
        "exists":   { 
            "field":    "title" 
        } 
    } 
    range 过滤
    range过滤允许我们按照指定范围查找一批数据:
    match 匹配查询
    bool 查询
    bool 查询与 bool 过滤相似,用于合并多个查询子句。不同的是,bool 过滤可以直接给出是否匹配成功, 而bool 查询要计算每一个查询子句的 _score (相关性分值)。
    
    must:: 查询指定文档一定要被包含。
    must_not:: 查询指定文档一定不要被包含。
    should:: 查询指定文档,有则可以为文档相关性加分。
    以下查询将会找到 title 字段中包含 "how to make millions",并且 "tag" 字段没有被标为 spam。 如果有标识为 "starred" 或者发布日期为2014年之前,那么这些匹配的文档将比同类网站等级高:
    
    { 
        "bool": { 
            "must":     { "match": { "title": "how to make millions" }}, 
            "must_not": { "match": { "tag":   "spam" }}, 
            "should": [ 
                { "match": { "tag": "starred" }}, 
                { "range": { "date": { "gte": "2014-01-01" }}} 
            ] 
        } 
    }
    
    #-*-coding:utf-8
    import datetime
    from elasticsearch import Elasticsearch
    # 格式为:2016.7.19 的昨日日期
    #yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -1)).strftime("%Y.%m.%d")
    # 格式为:2016-7-19 的昨日日期
    #filter_yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -1)).strftime("%Y-%m-%d")
    # 格式为:2016.7.18 的前天日期
    #before_yesterday = (datetime.datetime.now()  + datetime.timedelta(days = -2)).strftime("%Y.%m.%d")
    # 请求elasticsearch节点的url
    url = "http://ip:9200/"
    # 使用的索引,因日期时区问题,所以要指定昨天和前天的索引名
    #index_name = "deploy_metrics_pro-{date},deploy_metrics_pro-{b_date}".format(date=yesterday,b_date=before_yesterday)
    index_name = "deploy_metrics_pro"
    # 实例化Elasticsearch类,并设置超时间为120秒,默认是10秒的,如果数据量很大,时间设置更长一些
    es = Elasticsearch(url,timeout=120)
    # DSL查询语法,在下面es.search使用
    data = {
        "size": 10000000,   #指定每个分片最大返回的数据量,可根据日志量进行设置
        "query" : {
            "bool":{
                # 指定要匹配的字符,这里是查找所有数据
                "must" : {
                          "term":{'type':'deployment'}
                        },
                "filter":{
                    "range":{
                        "start_time_format":{
                            "gt": "2018-01-29 00:00:00",
                            "lt": "2018-01-30 00:00:00"
                        }
                    },
                },
                 #过滤,指定时间范围,这里设置成昨天0点到24点,代码上||-8h,因为ELK用的是UTC时间,跟北京时间误差8小时,所以要减8小时,这就是日志里的北京时间了
                #"filter" : {
                 #   "range" : { "@timestamp" : {
                 #       "gt" : "{date}T00:00:00||-8h".format(date=filter_yesterday),
                #        "lt" : "{date}T23:59:59||-8h".format(date=filter_yesterday),
                #        }
                 #   }
                #}
            }
        }
    }
    # 设置要过滤返回的字段值,要什么字段,就在这里添加,这样可以节约返回的数据量(带宽,内存等)
    return_fields = [
        '_scroll_id',
        'hits.hits._source.timestamp',
        'hits.hits._source.@timestamp',
        'hits.hits._source.project',
        'hits.hits._source.username',
        'hits.hits._source.start_time_format',
    
    ]
    def main():
        # 指定search_type="scan"模式,并返回_scroll_id给es.scroll获取数据使用
        res = es.search(
                index=index_name,
                body=data,
                search_type="scan",
                scroll="1m"
            )
        scrollId=res["_scroll_id"]  # 获取scrollID
        response= es.scroll(scroll_id=scrollId, scroll= "1m",filter_path=return_fields,)
        print response
        #print len(response['hits']['hits']) # 打印获取到的日志数量
        # for hit in response['hits']['hits']:
        #     print hit['_source']
    if __name__ == "__main__":
        main()
    

    转载于:https://my.oschina.net/u/1775013/blog/1619657

    展开全文
  • python 读取共享内存

    千次阅读 2018-07-27 11:28:00
    首先使用c创建内存,这里的方法是:作为参数读一个二进制数据文件进去,把文件的内容作为共享内存的内容 定义块 #include <stdio.h> #include <sys/shm.h> #include <string.h> int main...
  • 如何通过python快速输出数据库数据到excel扩展库 xlrd 读excle xlwt 写excle 直接度就能下载 下载后使用 import xlrd 就可excle文件了 打开文件: xls = xlrd.open_workbook(fileName)python怎么从excel中读取数据?...
  • python读取图像数据的一些方法

    千次阅读 2019-11-06 11:06:28
    工作和学习中设计一个神经网络中经常需要设计一个数据载入器。...如我们是一个分类任务,我们就需要读取数据数据本身对应的标签。 1 2 除了分类任务之外当然还有一些图像到图像的任务,如...
  • 如下所示: # -*- coding: utf-8 -*- # @ author hulei 2016-5-3 from numpy import * import operator ...def getDataSet(filename,numberOfFeature): #将数据集读入内存 fr = open(filename) numberOfLines =
  • 开始python连接hive # -*- coding: utf-8 -*- from pyhive import hive query_sql = "select * from students" conn = hive.Connection(host='127.0.0.1', port=10000, username='root', database='hivetest',auth=...
  • python 读取大文件,避免内存溢出

    千次阅读 2020-07-13 11:53:43
    ####python读取大文件 最近在学习python的过程中接触到了python对文件的读取。python读取文件一般情况是利用open()函数以及read()函数来完成: f = open(filename,'r') f.read() 这种方法读取小文件,即读取远远...
  • 今天小编就为大家分享一篇解决python读取几千万行的大表内存问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python读取以及存储数据数据

    千次阅读 2018-01-31 19:27:21
    读写文件,用到 with open() 语句: with open(name,mode,encoding) as file: file.write() #note:with open()后面的语句要有一个缩进name:包含文件名称的字符...encoding:表示我们要写入数据的编码,一般为utf-8
  • python读取edf格式数据

    千次阅读 2020-05-12 16:57:43
    需要原始的EEG数据,无奈该数据是.edf格式,请教X,他仍给我一个用该格式数据的Repository,看了老半天愣是没...数据读取 data_path = './dataset/SC4001E0-PSG.edf' # 存放数据的具体位置,需要改成自己数据存放的地方
  • Linux下使用python读取共享内存

    千次阅读 2018-05-14 23:07:56
    python没有独立的库可以读取linux下的共享内存,下面使用ctypes调用系统的API读取共享内存的内容使用C++创建共享内存Cpp代码 #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &...
  • arpa库是用于读取arpa数据文件的python包,由于涉及领域很小,截至本文发布,笔者尚未搜索到有关详尽的教程,因此初次接触arpa数据文件后,没有意识到数据格式问题,单纯通过统计分析得到了一些规律特征,希望能转为...
  • 数据量大时候在考虑列表内存会不会溢出呢?】 方法2:还是直接定义一个空字典,把然后把读取到字典转成dataframe,一直读一直拼接到空字典上面,还是这种比较好?【频繁的创建和转换与拼接、也许更加耗IO?】 方法...
  • python读取mysql怎么不会内存溢出

    千次阅读 2018-10-09 20:43:06
    使用过java读取mysql大数据量的人应该都知道,如果查询时不开游标不设置一次性区大小的话,会一次性的把所有记录都拉取过来再进行后续操作,数据量一大就很容易出现OOM 如果用python读取mysql也会遇到同样的问题 ...
  • import ctypes as ct t = ct.string_at(0x211000, 20) # (addr, size) print t 最好不要用解释性语言来开发底层,一般用C。 转载于:https://www.cnblogs.com/LarryGen/p/4954903.html...
  • Python读取文件内容

    万次阅读 多人点赞 2018-12-18 16:27:54
    Python 读取文件内容
  • 使用python读取neo4j中的数据

    千次阅读 2020-03-17 17:45:17
    目前有需求需要对neo4j中的数据进行分析(一般是读到内存后跑脚本或者使用spark跑分布式),这里介绍一种较为简单和通用的方法。 定义Cypher语句 我们先写两个查询Cypher语句,目的是把我们要读取数据的字段挑选...
  • 在使用机器学习等算法模型的时候,往往都会需要将数据加载到内存中才能够使用,对于原始数据我们往往需要按照一定的数据划分比例划分为测试集和训练集,如果想直接使用交叉验证来进行评估的话则不需要数据划分这个...
  • python读取及保存csv和excel数据文件

    千次阅读 2020-07-30 11:19:23
    python读取及保存csv和excel数据文件读取csv文件读取excel文件dataframe数据保存成csv/excel数据文件 读取csv文件 一般情况下,用这个简单的代码就可以: import csv data=pd.read_csv(r'E:\data\data1.csv',...
  • Python读取数据,处理成字典。

    千次阅读 2020-03-27 19:08:03
    Python读取大文件到内存中,以字典形式。 读取大文件到内存中,以字典形式。 方法一: **读取大文件,分批次读取,节省内存,引用了上一篇Python之logging优雅打印日志** #定义全局变量,获取当前路径,并创建存储...
  • python文件操作中如何用4G内存读取5G数据? 方法一: 可以通过生成器,分多次读取,每次读取数量相对少的数据(比如500MB)进行处理,处理结束后 在读取后面的 500MB的数据。 方法二: 可以通过linux命令split切割...
  • 在学习python过程中,遇到一种情况,要读取.csv文件的数据,然后取出其中某个字段,然后再写入到一个文件中,用于数据的比对,代码如下: import csv import hashlib from itertools import islice from openpyxl ...
  • def getDataSet(filename,numberOfFeature): #将数据集读入内存 fr = open(filename) numberOfLines = len(fr.readlines()) #get the number of lines in the file file.readlines()是把文件的全部内容读到内存,...
  • python获取内存中的数据

    千次阅读 2020-12-18 15:46:56
    主要代码 import ctypes ctypes.cast(id(1), ctypes.py_object).value # 1 ...在python中,通过id获取变量的内存地址,那如何通过内存地址获取数据呢? import ctypes value = 'hello world' # 定义一个字符串变量 ad

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,317
精华内容 47,726
关键字:

python读取内存数据

python 订阅