自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1220)
  • 资源 (7)
  • 收藏
  • 关注

原创 pyqt5_windows_hid_auto_detect_hotplug

【代码】pyqt5_windows_hid_auto_detect_hotplug

2023-11-17 09:54:38 347

转载 Python 3.x | 史上最详解的 导入(import)

执行 #4 后,会将PkgDemo.pkg2、PkgDemo.pkg2.pkg2_mod载入内存,sys.modules中会有PkgDemo、PkgDemo.mod、PkgDemo.pkg1、PkgDemo.pkg1.pkg1_mod、PkgDemo.pkg2、PkgDemo.pkg2.pkg2_mod六个模块,当然:当前Local命名空间还是只有PkgDemo、m1。其他可作为module的文件类型还有".pyo"、".pyc"、".pyd"、".so"、".dll",但Python初学者几乎用不到。

2023-05-08 12:10:13 1051 1

转载 pyinstaller : 无法将“pyinstaller”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。所在位置 行:1

存放包路径:C:\Users\Administrator\AppData\Roaming\Python\Python310\site-packages。Scripts路径:C:\Users\Administrator\AppData\Roaming\Python\Python310\Scripts。(这只是我的路径,与你们不一样)去自己本地找到这个路径,有些文件夹是隐藏的,需要点击查看之后勾选,这样就可以看见隐藏的文件。找到与存放包同级的文件Scripts,添加的系统变量环境是同级的Scripts!

2023-04-18 10:46:48 3389

转载 PyQt5打包生成exe文件

生成的dist文件里面含exe文件,点击运行。命令行进入桌面文件夹,运行命令行。

2023-04-18 09:18:51 4878 1

转载 互斥锁、死锁以及如何预防、避免、检测、解除死锁

由于在避免死锁的策略中,允许进程动态地申请资源。(1)访问公共资源前,必须申请该互斥锁,若处于开锁状态,则申请到锁对象,并立即占有该锁,以防止其他线程访问该资源;撤消进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态.消除为止;互斥锁是一个二元变量,其状态为开锁(允许0)和上锁(禁止1),将某个共享资源与某个特定互斥锁在逻辑上绑定(要申请该资源必须先获取锁)。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

2023-04-06 09:36:03 982

转载 MFC多线程互斥锁的使用

这是未加互斥锁的情况下,程序中,我们在线程1将n赋值为1并在EDIT1显示;理论上控件上应分别显示1和-1,但实际上,会出现同时显示1,或同时显示-1或显示-1和1的情况。这是由于线程间同时调用同一变量造成的(严格来讲并不是同时,而是比如线程1赋值为1后还没打印出来就被线程2赋值为-1了,所以造成最后打印出来都是-1,其他情况同理)。这样在一个线程的运行周期内,其他线程就无法更改变量。8.修改后编译运行,可以看到使用互斥锁后,程序按预想的形式运行,EDIT1稳定的显示1,EDIT2稳定的显示-1。

2023-04-04 20:43:27 919 1

转载 MFC多线程的开启、暂停、继续和注销

本例演示在MFC中使用多线程。第一部分实现多线程的开启、暂停、继续、注销。第二部分实现两个线程互斥锁的使用(见下一篇文章MFC多线程互斥锁的使用)。6.说明:线程的注销需要在线程内部执行,所以这里使用了一个标识符ThreadKill用来控制线程是注销。从而避免了使用消息队列带来的复杂情况。1.使用VS2017搭建基于对话框的MFC应用程序,名为“ThreadTest”。并放置一个EDIT控件和四个BUTTON控件,如图。演示系统为Win10,平台为VS2017(MFC),主要使用类为CWinThread。

2023-04-04 20:26:20 604

转载 Win C++/MFC创建线程的三种方式

用CreateThread()函数创建线程将返回一个线程句柄,通过该句柄你可以控制和操作该线程,当你不用时可以一创建该线程后就关闭该句柄,有专门的函CloseHandle()。假如成功,函数将会返回一个新线程的句柄,用户可以像这样声明一个句柄变量存储返回值:HANDLE hStdOut = _beginthread( CheckKey, 0, NULL )。对于_beginthread()创建的线程,其线程函数定义为:void ThreadPro(void * pArguments );

2023-04-04 11:04:59 1845

转载 MFC中CString.Format的详细用法

CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类型转换为CString字符串只需一行代码就可以实现。经常用来分解字符串,功能非常强大,但很多功能都需要正则表达式的知识,所以就介绍一下最简单的几种用法,大家如果想了解更多的话,自己去网上找吧。格式用于打印字符串,与之对应的参数应该是一个字符指针,待输出的字符始于该指针所指向的地址,直到出现一个空字符(读入一个非字符串的类型之后,如果要读入字符,或字符数组,都用一个额外的。

2023-04-03 10:13:51 2088

转载 CString 使用

Point,Frontpage,Outlook Express,Forté Agent,Internet Explorer和其它的一些。),而在 Unicode 编码系统中编译成_wtoi()。pp,在你 vc98的安装目录的 mfc/src 子目录中。// ... 部分省略许多细节。sual Basic 的人占了上风,BSTR("Basic String"的首字母缩写)就是这场争论的结果。在 Unicode 模式中,将成为标准的 CString 构造函数,参见对缺省::WideCharTo。

2023-04-03 09:58:56 632

转载 gerber 各层(Pads solder mask层和paste mask的区别)

这一层并不存在于印制板上,而是单独的一张钢网,上面有SMD焊盘的位置上镂空。在我们制作封装的时候,我们在焊盘添加solder mask top层,最终制作出来就会出现如图效果,金色部分就是漏出来的焊盘,如果我们没有开solder mask层,那么这个焊盘将是被绿油覆盖,导致我们无法进行贴片,焊接等。solder mask就是阻焊层,是为了把焊盘露出来用的,也就是通常说的绿油层,行业也叫开窗。-3至LAYER-20 一般层,不是电气层,可以用来扩展电气层,也可以用来做一些标示。2、paste mask层。

2023-03-02 10:37:20 2767 1

转载 Python补充05 字符串格式化 (%操作符)

('Vamei', 99)的两个元素'Vamei'和99为替换%s和%d的真实值。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。整个"I'm %s. I'm %d year old" % ('Vamei', 99) 实际上构成一个字符串表达式。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。Python中内置的%操作符可用于格式化字符串操作,控制字符串的呈现格式。Python中还有其他的格式化字符串的方式,但%操作符的使用是最方便的。命名使用()括起来。

2023-01-28 19:19:27 231

转载 Python-Excel 零基础学习xlwings,看这篇文章就够了

当设置成add_book=False时,可以创建App,但是还未生成PID,只有当这个App创建了工作簿后,才会生成自己的PID。在日常生活中我们或多或少的都会跟Excel打交道,比如做销售统计,人力的考勤,学生的考试成绩等等,甚至在某些领域会涉及到批量操作Excel表格,那对于非程序员来说,可能使用Excel中的函数,但是在某种场景下这些又是不好使的,只能熬夜加班啦!App就是我们打开的一个Excel应用,在我们程序员看来一个App对象就是一个Excel的实例,在此实例下创建工作薄。

2023-01-28 18:11:17 8234

转载 Python与Excel——Xlwings基础操作

wb.sheets['sheet1'].range('A1').value='人生'wb.sheets['sheet1'].range('A1').value='苦短'sht=xw.books['工作簿的名字‘].sheets['sheet的名字']rng=xw.books['工作簿的名字‘].sheets['sheet的名字']sht=xw.books['工作簿的名字‘].sheets['sheet的名字']sht=xw.books['工作簿名称'].sheets['sheet的名称']

2023-01-28 18:06:45 1573

转载 Python 二进制,十进制,十六进制转换

十六进制 到 十进制使用 int() 函数 ,第一个参数是字符串 '0Xff' ,第二个参数是说明,这个字符串是几进制的数。转化的结果是一个十进制数。15二进制 到 十进制1342八进制 到 十进制15其实可以看到,不管 几进制数 转换成 十进制数 ,都是用 int() 函数。之后后面的 第二个参数 写清楚 前面字符串 是 几进制数就可以。注意一定要合法。比如2进制数就不能出现2这样的字符。十进制 转 十六进制'0x409'二进制 转 十六进制。

2023-01-28 18:05:06 2987

转载 复制csdn或者博客园文章时,图片无法直接粘贴过来解决办法

2、找到文章正文对应的 html 元素,按ctrl+f输入标签头关键字 (含 "article_content"标签头(csdn文章) ,如果是博客园文章,则标签头是“cnblogs_post_body”)4、新建一个 txt 文件,将后缀改为 .html ,把刚复制的 源代码 粘贴到文件中,浏览器打开,此时复制全文,到博客园 添加新随笔,粘贴。5、或者复制全文到markdown,到cadn 添加新随笔导入markdown。复制csdn或者博客园文章时,图片无法直接粘贴过来解决办法。

2022-11-15 16:21:34 1907

转载 PyCharm使用详细教程

PyCharm它差不多是 Python 最常用的 IDE。PyCharm 可以为我们节省大量时间,它能够管理代码,并完成大量其他任务,如 debug 和可视化等。在 PyCharm 中写代码在 PyCharm 中运行代码在 PyCharm 中进行代码 debug 和测试在 PyCharm 中编辑已有项目在 PyCharm 中搜索和导航在 PyCharm 中使用版本控制在 PyCharm 中使用插件和外部工具。

2022-09-23 16:23:51 2322

原创 HID 异步访问和同步访问

使用 Windows 自带 API 枚举并完成读写的详细步骤,参考下面两篇文章:https://blog.csdn.net/phenixyf/article/details/72478933https://blog.csdn.net/phenixyf/article/details/9153195根据上面文章自己完成的 HID GUI 模板位置如下: 使用同步还是异步方式访问 HID 在下面两个地方确定: 用同步方式打开 HID 设备: 用异步方式打开 HID 设备:

2022-09-15 10:35:22 1018 2

转载 GetLastError()返回值列表

1642〗-Windows 安装服务无法安装升级修补程序,因为被升级的程序可能会丢失或是升级修补程序可能更新此程序的一个不同版本。〖3029〗-因为用户帐户数据库 (NET.ACC) 找不到或损坏,而且也没有可用的备份数据库,所以不能启动本地安全机制。〖1015〗-注册表损坏。包含注册表数据的某一文件结构损坏,或系统的文件内存映像损坏,或因为替代副本、日志缺少或损坏而无法恢复文件。〖3185〗-因为用户帐户数据库 (NET.ACC) 找不到或损坏,而且也没有可用的备份数据库,所以不能启动本地安全机制。

2022-09-14 17:36:09 1099

转载 Windows Overlapped I/O 应用 实例操作详解

overlapped I/O是WIN32的一项技术,你可以要求操作系统为你传送数据,并且在传送完毕时通知你。事实上,操作系统内部正是以线程来I/O完成overlapped I/O。2:调用WaitForMultipleObjects(MAX_REQUESTS, ghEvents, TRUE, INFINITE) 当任何一个用户的读操作完成时,函数停止阻塞。使用另一个线程进行I/O。如果采用 overlapped,那么ReadFile()、WriteFile()的第5个参数必须提供一个指针,

2022-09-14 15:57:12 471

转载 Windows Overlapped I/O 操作

详细说明:该函数检测指定的对象的当前状态,若为nonsignaled则调用者线程将处于等待状态,在此状态下消耗少量的处理器时间直到对象状态改变为signaled或超时。bWaitAll参数如果为TRUE,则只有当等待的所有内核对象为已通知状态时函数才返回,如果为FALSE,则只要一个内核对象为已通知状态,则该函数返回。第二个参数指明了需要等待的时间(毫秒),可以传递INFINITE指明要无限期等待下去,如果第二个参数为0,那么函数就测试同步对象的状态并立即返回。如果该函数失败,返回WAIT_FAILED。

2022-09-14 15:17:53 443

转载 Overlapped

但是,需要注意的是,一个特定的overlapped I/O完成后,Windows并不会贸然中断你的程序,然后调用你所提供的callback函数。当一个overlapped I/O完成时,系统调用该callback函数。使用文件句柄作为激发机制,有一个明显的限制:如果多个线程对同一个文件进行操作,由于只有一个相同的handle,对于每个可能进行的overlapped操作都调用GetOverlappedResult()查看操作是否完成,这将不是一个很有效率的做法——因为很多的时候并不是自己所期待的操作完成了。

2022-09-14 14:03:56 292

转载 C++字符串--窄字节宽字节--Cstring

a=b 返回值0a>b 返回值>0a

2022-09-09 14:16:10 1243

转载 在MFC中使用printf

mfc printf

2022-08-24 10:53:43 1143

原创 eFuse 和 OTP 的区别

eFuse是熔丝性的一种器件,而OTP是反熔丝的一种器件。就是说,当OTP存储单元未击穿时,它的逻辑状态为0;当击穿时,它的逻辑状态为1。它的物理状态和逻辑状态正好和eFuse是反着的。简单来讲,就是初始它物理上是断路,没有电流通路的;而烧写后,它才变成了通路,有一个电流通路。 OTP真值表 OTP的应用场景和eFuse基本上一致,都用来存储TRIM值或者Root Key或者特定ID

2022-07-08 11:57:10 9732

原创 MFC Tab 控件添加 icon 图标

1. 将 icon 图片copy 到工程目录下的 res 文件夹内并导入 2. 在对话框 .h 文件中添加 CImageList 对象如下 CImageList m_TabImageList;3. 在对话框 .cpp 文件 OnInitDialog 函数中添加如下代码注意: InsertItem 函数必须使用有 3 个参数的重载函数,第 3 个参数即表示使用哪个图标。

2022-06-01 17:26:38 998 1

转载 MFC TabCtrl 控件修改标签尺寸

注意:无论那种方法,都要先设置Tab控件的Style属性为fixed width.第一种方法MFC,tabcontrol控件改变标签大小 - CSDN博客MFC,tabcontrol控件改变标签大小_帆帆郑的博客-CSDN博客_mfc tabcontrol大小CSize size, size1;size.cx = 150;size.cy = 40;size1 = m_tab.SetItemSize(size);第二种方法MSDN:About Tab Controls.

2022-05-31 19:05:58 1241

转载 控件的大小和位置按照我们的要求随对话框变化而变化

下面两个文件是一个派生自 CDialog 的对话框类,能够非常好的实现控件的大小和位置按照我们的要求随对话框变化而变化的功能。将这两个文件加入你的工程中,并将你的对话框修改成继承 ClxDialog,通过设置各个控件的iFlag值,实现位置和大小的改变。头文件://////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2022-05-12 17:03:01 191

转载 MFC一一窗口控件随窗口大小进行自适应

通常,我们在将窗口进行最大化时会出现窗口中的控件自适应问题,如何让窗口中的所有控件跟随窗口做自适应变化,提供如下操作方法供参考1、首先在OnInitDialog函数中获取窗口位置坐标BOOL CDialogQual::OnInitDialog(){ CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 CRect rect; GetClientRect(&rect); //取客户区大小 old.x=rec

2022-05-12 16:50:00 1736

原创 VS2019 MFC 对话框拆分窗格

将对话框 A (CDlgTabLowLevel)拆分成窗格 B(CRegDesView) 和 窗格 C(CRegSetView),注意 B 和 C 的基类必须是某种 view 类,比如 CFormView 或 CTreeView 类,而 A 的基类不能是 view 类,可以是 CDialog 类或 CFrameWnd 类。1. 在 MFC 对话框工程基础上,添加两个MFC CFormView 类上面步骤完成后,可以看到类视图中添加了两个类的类文件另外,资源...

2022-05-12 13:12:42 987

转载 MFC一一窗口控件随窗口大小进行自适应

通常,我们在将窗口进行最大化时会出现窗口中的控件自适应问题,如何让窗口中的所有控件跟随窗口做自适应变化,提供如下操作方法供参考1、首先在OnInitDialog函数中获取窗口位置坐标BOOL CDialogQual::OnInitDialog(){ CDialogEx::OnInitDialog(); // TODO: 在此添加额外的初始化 CRect rect; GetClientRect(&rect); //取客户区大小 old.x=rec

2022-05-10 14:39:11 3005 1

转载 MFC嵌套拆分窗口的实践总结

前一阵子因为项目需要,了解了一下MFC拆分窗口的实现。这里总结下来,供以后复习和回顾。(///先摘抄下基本知识)MFC支持两种类型的拆分窗口:动态和静态。静态拆分窗口的行列数在拆分窗口被创建时就设置好了,用户不能更改,但是用户可以缩放各行各列。一个静态拆分窗口最多可以包含16行16列。Windows资源管理器即是静态拆分窗口的实例。资源管理器的主窗口在垂直方向上被静态拆分窗口分成了两半。动态拆分窗口最多可以有两行两列。但他们可以相互拆分和合并。显示在动态拆分窗口中的视图并不是完全独立的:动态

2022-05-10 14:23:09 596

转载 MFC对话框窗口分割/拆分

一、新建项目:项目名称为:MySplitterDlg,其他保持默认选项即可。二、 创建对话框类分别创类CMyFormView0 和CMyFormView1,基类别选CDialog,一定要选择CFormView。类向导->添加类(MFC类):三、 增加WM_CREATE消息响应函数OnCreate通过“类向导”为“CMySpliterDlgDlg类(不要选择其它类)添加WM_CREATE的消息响应函数:四、编辑OnCreate添加了消息函数OnCreate之后,编辑其内容.

2022-05-09 21:32:13 1786

原创 字符集 unicode utf-8 gbk

多字节和宽字节多字节:一个字符对应一个字节(英语国家最开始使用) 宽字节:一个字符对应多个字节(中文、韩文等其它语言引入后使用)Unicode 就是宽字节,unicode 有很多种比如常见的 UTF-8 (一个字符对应 3 个字节) GBK(一个字符对应 2 个字节)多字节转宽字节MFC 工程中会设定当前工程使用什么字节,如果要使用中文要选择宽字节(unicode)。多字节如何转宽字节?第一种方法:直接在字符串前加 L 即可,如:MessageBox(L"aaaa.

2022-05-04 10:58:56 363

转载 Cadence 17.4 原理图导出PDF

前言Cadence 17.4 有暗黑模式, 吃瓜, 尽管Bug一堆一堆的… 本篇介绍下原理图转为pdf, 有两种方式, 一种打印一种导出, 打印的方式不带书签.原理图导出PDF先安装 Ghostscript, Ghostscript是一套建基于Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件. 直接装64位的:记住可执行路径, 如默认的: c:\program files\gs\gs9.53.1\bin\gswin64c.exe先调成浅色模式, O

2022-04-27 13:36:14 5430 2

转载 Orcad DRC 时出现“Duplicate Pin Name”的错误,怎么处理?

Orcad输出网表出现“Duplicate Pin Name”的错误,应该怎么处理呢?答:在使用Orcad软件输出Allegro第一方网表,出现如下错误:#1 ERROR(ORCAP-36041): Duplicate Pin Name "GND" found on Package LCM0200CE1A0_3 , U22 Pin Number 25: SCHEMATIC1, 23.Camera (129.54, 50.80). Please renumber one of these.解决的办

2022-04-26 18:38:00 3154

转载 Cadence 17.4 学习记录

原理图绘制如何使用元件库在绘制原理图的界面下,工具栏->Place->Part,或直接使用快捷键P,即可打开元件库入口在新版本中,页面不再浮动,而是固定于页面右侧(初始状态),但是我们拖动页面即可使其重新浮动,并可重新定义页面位置。如下图所示,选择红框选中的按钮,即可选择官方内置库或者第三方库,官方库的位置以及说明已经在前面提出。然后在part部分双击对应元件即可放置对应元件。绘制原理图基本操作快捷键很多电路图是比较复杂的,图中要素很多,想要提高自己的效率,熟练运用快

2022-04-26 17:17:43 2764 1

转载 ADC/DAC 常用名词

本文章是关于ADC/DAC设计经典问答,涵盖时钟占空比、共模电压、增益误差、微分相位误差、互调失真等常见问题。  1、 什么是小信号带宽(SSBW)?小信号带宽(Small Signal Bandwidth (SSBW))是指在指定的幅值输入信号及特定的频率下,它的输出幅值比低频时的输出幅值下降指定值时,该特定频率为小信号带宽。  2、 什么是共模电压(VCM)?共模电压(Common Mode Voltage (VCM ))是差动输入的两个引脚上相同的直流输入电压。  3、 什么是MS

2022-04-25 13:04:42 3888

原创 warning:implicit conversion loses integer precision:‘int‘ to ‘unsigned short‘ -- C integer promotion

C integer promotion 理解先看下导致标题报警的代码:unsigned char addr;unsigned short buf;addr = 0x20;buf = ((unsigned short)addr) << 8;本意是想将 unsigned char 型的变量先强制转换成 unsigned short 型,然后左移 8bit 再赋值给一个 unsigned short 型的变量。但这段代码编译时会报标题的警告。一开始怎么也想不明白,整个代..

2022-04-24 18:27:44 6313

原创 Keil MDK 新建空项目验证代码

创建新项目按自己的需要选择对应的 ARM core,本例以 Cortex-M4 为例选择 CMSIS core 和 starup code (重要)这一步很重要,如果不勾选这两项,在后面的编译链接过程中会出现error: L6236E: No section matches selector - no section to be FIRST/LAST 如下图所示:...

2022-04-24 12:32:50 940

saleae logic16应用软件及学习资料

saleae logic16逻辑分析仪使用的软件,支持win7 32bit/64bit 还有使用学习资料

2014-05-12

TI BLE_CC2450培训资料

TI BLE CC2540/41的培训资料,里面有对blue tooth架构的较详细介绍,对CC2540开发的框架可以有一个整体的认识。

2013-06-24

USB_HID上位机开发介绍

基于VC++开发USB_HID上位机,对USB上位机开发入门比较有帮助,了解USB应用程序的基本内容

2013-05-28

STM32 F10xx硬件开发使用入门

STM32 F10xx硬件开发使用入门 ST官网资料

2013-05-28

使用Zigbee通信的STM32上位机控制小车

使用Zigbee通信的STM32上位机控制小车

2013-05-28

VbyOne Spec

VbyOne V1.4 Spec. LCD next generation internal interface high speed serial interface

2013-03-18

Silicon XPress详解

使用F340等silicon usb芯片,lib函数详解

2012-11-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除