自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 windows vs做函数库与linux qt函数库源代码移植笔记

尽量不要用同一个头文件,分两个windows 和linux的不一样的地方太多,还不能用#if。通过#define LINUX 0//1 来区分windows与linux 不同代码。4、windowd 转linux 时,其他编码错误时,参考以下链接修改。windows函数库名为sldmv,linux 函数库名为sldml。1、做sldlib_global_var.h文件。函数定义中的初始赋值linux可能会报错。2、头文件函数导出方式不一样。两个回调函数的声明不一样。

2024-08-16 14:14:28 212

原创 strtoul 函数 将参数nptr字符串根据参数base来转换成无符号的长整型数。

fr=ge_ala。

2024-07-24 15:57:14 129

原创 Qt creator 控件转到槽 报错 The class containing “Ui:Dialog“ could not be found in

最后发现是我在子窗口中要调用主窗口的控件信息,就在dialog move ex.cpp中include "“ui_dialog.h”,导致主窗口控件转到槽,混乱导致。dialog move ex.cpp 中屏蔽 include ""ui_dialog.h"后,问题解决。问题表现为:只有主窗口控件有这个错误,其他子窗口正常。在网上错这个报错信息,都没有一个很好的解决办法。

2024-07-08 09:31:29 313 1

原创 char [] 赋新值

在C语言中,字符数组(char [])的值可以通过多种方式进行赋值。注意:在使用这些函数时,确保目标数组有足够的空间来存储新的值,以避免溢出错误。

2024-06-06 17:26:28 705

原创 Linux系统下qtcreator每次打开文件都要重新编码问题

2、点击编辑菜单,下拉Select Encodeeing 选项,选择UTF-8 ,按编码保存,这样以后打开就正常了。(这里不能再用GBK / windows-936…提示错误:“Could not decode “xxx” with “UTF-8”-encoding. Editing not possible。在Linux系统下qtcreator每次打开windows系统下的.c文件都会提示编码问题,选GBK / windows-936…,按编码重新载入,文件可以正常显示中文,可编辑。

2024-05-16 10:45:11 429

原创 c++如何从txt文件读取/保存数据

保存数据时,会创建或覆盖ecat_type.txt文件,文件内容将先被清空。

2024-03-28 18:47:44 725 1

原创 C# System.NullReferenceException 异常与回调函数初始化

在这个例子中,首先定义了一个委托类型 Callback,它与回调函数具有相同的签名。然后,创建了一个委托实例 myCallback,并将其初始化为一个方法 MyCallbackMethod,该方法与委托类型具有相同的签名。最后,将委托实例作为参数传递给需要回调函数的方法 MyMethod,并在调用回调函数之前对其进行初始化。这样,就可以在调用回调函数之前对其进行初始化了。创建一个委托实例,并将其初始化为一个方法,该方法与委托类型具有相同的签名。确保回调函数不是空的,或者在调用回调函数之前对其进行初始化。

2024-01-10 19:08:52 786

原创 手轮脉冲平滑处理笔记

如果y等于x的n次方,已知x、y,求n,那么n可以通过求对数来解决。因为x的n次方等于y,所以n等于以x为底y的对数。因此,n=ln(y)/ln(x)。这是一个求手脉倍率((Hw_Control.mult_ratio)与手脉脉冲计数延迟次数即累计过去n次的平均值(Hw_Control.lag_num)之间关系算法的计算过程笔记文档。这个函数使用了C语言的log()函数,它返回以e为底的对数。2、设lag_num为X,mult_ratio为Y,推导出以下公式。3、算法,y等于x的n次方,已知x、y,求n。

2024-01-10 19:00:59 521

原创 CString 转 unsigned int ;int 转16进制CString

【代码】cstring 转 unsigned int。

2023-09-07 17:57:41 469

原创 c++库函数 有引用包含数组的结构体时,c# 调用方法

在此示例中,我们定义了一个名为 MyStruct 的结构体,它有三个字段:一个整数 myInt 和两个双精度浮点数数组 myArray1 和 myArray2。然后我们定义了一个 C++ 函数 MyFunction,它接受一个对 MyStruct 对象的引用作为参数,并使用 DllImport 属性从 名为 “MyLibrary.dll” 的C++ 库中导入此函数。在 Main 方法中,我们创建了一个 MyStruct 结构体的实例,初始化其字段,并通过引用将其传递给 MyFunction。

2023-07-27 10:42:40 614

原创 STM32F429 FSMC总线扩展SDRAM DMA中断调试笔记

STM32F429IIT6+W9825G6KH(32M 字节 SDRAM)SDRAM地址 0XC0000000 - 0XC2000000。keil版本:5.25。

2023-05-19 17:36:39 1149

原创 GD32F470 移植STM32F429工程 Keil调试笔记

一、GD32F470 与 STM32F429 切换编译1、原项目为STM32F429 工程,切换到GD32F470 只需在 Options for Target"“对话框的Device菜单中选中“GD32F470II”,重新编译即可,一般不会有编译错误。2、将项目工程在切换回STM32F429,在 Options for Target”"对话框的Device菜单中选中“GD32F29IITx”,重新编译即可,但这样会显示编译错误,如图:空间不够报警。解决:STM332F429 IRAM1、IRA

2023-04-20 14:57:45 3277

原创 STM32F4 DWT功能 实现程序运行时间精确测试

STM32 DWT 精确时间

2023-03-08 16:07:38 1421

原创 C++指针的new、delete等问题整理

C++无论何种数据,是否要delete关键看其空间是否使用new分配的。1,函数冲定义的局部变量指针,单纯是一个局部变量是不用delete;2,C++ 如果类中有一个指针数据成员,而没有用new, 析构函数也是不用delete的;在类或函数中,int* ,char* 这些只要不是new的,也同样不用释放,系统会自动把他们占的内存释放掉,只有new的才会手动的去delete原理:int*, char* ,这些定义是局部变量,存在于栈上,比如int *p;p在栈上,而且p的值也是栈的一个地址。...

2022-06-23 15:26:59 2522

原创 MFC 动态创建的对话框及改变控件的大小和位置

1、动态创建对话框void CXXX_DEMODlg::OnBnClickedBtntest(){ if(dlg_num==0)//只打开一次 { DLG_TEST *pDlg=new DLG_TEST; pDlg->Create(IDD_DLG_TEST, this);//一直置顶 //pDlg->Create(IDD_DLG_TEST, GetDesktopWindow()); pDlg->ShowWindow(SW_SHOW); dlg_num+=1;

2022-05-27 14:14:21 1400 2

原创 MFC关于长字符串unsigned char与CString转换及显示问题

今天遇到关于MD5生成注册码输入及显示问题,解决过程记录以下1、对话框窗口输入CString转unsigned char数组 CString regstr; unsigned char reg_code[20]="1234";//测试数组 unsigned char reg_code_md5[20]; union TRAN_DATA { char c_data; unsigned char uc_data; }; TRAN_DATA tran_data; GetDlgIte

2022-05-27 10:49:38 1346

原创 这些年用Keil遇到的坑

1、今天调程序,函数中数组inBuf_32始终无法赋值这是3个数组的定义abc.c这样不行uint32_t EEPROM_FLASH_USER_DATA[FLASH_TOTAL_SIZE]={0xFF};uint32_t EEPROM_FLASH_REGCODE_DATA[FLASH_TOTAL_SIZE]={0xaa};static unsigned short p_InBuf_32=0;static uint32_t inBuf_32[100];这样也不行:static unsig

2022-05-26 11:24:43 1640

原创 向量计算笔记

vs2008出现 当前不会命中断点。源代码与原始版本不同解决方案:找到对应文件,全选(Ctrl+A) -> 菜单栏点击编辑 -> 高级 ->设置选定内容的格式然后重现编译即可。。。用向量计算空间两条直线的夹角方法 空间向量求两直线夹角空间两条直线用向量计算夹角的方法近年来高考数学利用向量计算二面角,直线夹角的试题似乎每年都有,这是一种趋势,说明向量计算的简洁和直观。本篇讲述向量的点积,也叫数量积的计算方法,从而得出向量夹角的公式。我们知道向量是有大小和方向:

2022-05-20 16:33:12 1942

原创 函数指针参数传递出函数内部数组地址及结构体问题汇总(内部数组分段拷贝+动态可变长结构体)

1、定义二维数组char InBuf[MAX_CARD][MAX_LEN_R];char spec_InBuf[4][200]={0};2、通过函数读出数组值void SLDMpi_Get_Recbuf(unsigned long card_no, char *recbuf, char **recbuf_ID){ *recbuf_ID=spec_InBuf[0];//直接传递数组地址; memcpy(recbuf,&InBuf[card_no], MAX_LEN_R);//通过内存拷

2022-05-13 16:38:30 257

原创 STM32F429串口设置调试笔记

USART3 外接 RS485UART7外接RS232//USART支持同步传输,UART只支持异步传输,其他一样,备注一下main.c1、STM32CubeMX自动生成UART_HandleTypeDef huart7;UART_HandleTypeDef huart3;2、新增接收缓冲区u8 aRxBuffer_uart3[64]={0};u8 aRxBuffer_uart7[64]={0};3、STM32CubeMX自动生成static void MX_UART7_Init(

2022-05-12 11:12:24 1419

原创 [转]修改VS2008(vc)中工程/解决方案/类的名字 +当前不会命中断点

[转]修改VS2008(vc)中工程/解决方案/类的名字因为不小心打错了或其他原因会修改vs2008的工程/解决方案/类的名字以下是方法:一、先修改工程名/解决方案名举例,原先的工程名为AAA 想要改成BBB1.找到工程/解决方案所在的文件夹(已工程名/解决方案名命名,即AAA)2.打开该文件夹,有一个AAA.sln将其重命名为BBB.sln用记事本打开该文档,点替换,将所有AAA替换为BBB,保存退出.3.AAA文件夹下还有一个AAA文件夹,打开里面有一个AAA.vcproj将其重命

2022-04-26 14:37:27 498

原创 STM32F429 SDRAM片外内存读写笔记

硬件采用 STM32F429 + W9825G6KH 32M SDRAMSDRAM设置参照 【正点原子】阿波罗STM32F429开发板资料 实验13 SDRAM实验片外RAM地址访问:方式一:直接地址访问#define Bank5_SDRAM_ADDR ((u32)(0XC0000000)) //SDRAM开始地址#define SDRAM_ADDR32(addr) *((volatile vu32 *)(Bank5_SDRAM_ADDR+addr*4))unsigned int te

2022-04-13 10:06:12 3083

原创 printf 实现多行显示

printf("a = %d\n b = %d\n c = %d\n d= %d\n", a,b,c,d);字越少,事越大

2022-04-11 10:19:51 1866

原创 STM32F429 基于 SWO printf打印输出配置笔记(代替物理串口)

网上大神关于keil 仿真打印输出4种方式,现在只有 基于ST-LINK Utility SWO printf打印输出测试是有效的,记录如下:1、重定向printf到ITM,实现SWO输出#include "stdio.h"......../* USER CODE BEGIN 4 */int fputc(int ch, FILE *f) { ITM_SendChar(ch); return ch; }/* USER CODE END 4 */2、3、4、.

2022-04-08 15:12:26 1807

原创 CreateFileMapping , OpenFileMapping, MapViewOfFile, UnmapViewOfFile 和 FlushViewOfFile

与虚拟内存一样,内存映射文件可以用来保留一个地址空间的区域,并将物理存储器提交给该区域。它们之间的差别是,物理存储器来自一个已经位于磁盘上的文件,而不是系统的页文件。一旦该文件被映射,就可以访问它,就像整个文件已经加载内存一样。内存映射文件可以用于3个不同的目的:• 系统使用内存映射文件,以便加载和执行. e x e和D L L文件。这可以大大节省页文件空间和应用程序启动运行所需的时间。• 可以使用内存映射文件来访问磁盘上的数据文件。这使你可以不必对文件执行I / O操作,并且可以不必对文件内容进行缓

2022-03-30 14:12:03 5332

原创 STM32F429 KEIL 使用笔记(备忘录):代码下出现红色波浪线问题等

事由:KEIL5使用过程中代码下出现红色波浪线原因:使用了码折叠功能解决:取消代码折叠功能右键->倒数第二的Outlining->Hind All Outlining关于:代码折叠功能,如果你的keil版本支持,可以通过edit->outlining->show all outlining 开启这个功能->hide all outlining 关闭这个功能...

2022-03-01 17:05:00 3337

原创 已知圆心和圆上的一点坐标求该点转动任意弧度后的坐标

设圆心C对应的复数为 a+bi ,圆上任一点P对应的复数为 x0+iy0 ,P绕圆心C转过角度为α弧度后到Q,Q对应的复数为 x+yi ,根据复数乘法的意义,CQ=CP(cosα+isinα) ,即 (x-a)+(y-b)i=[(x0-a)+(y0-b)i](cosα+i*sinα)=[(x0-a)cosα-(y0-b)sinα]+[(x0-a)sinα+(y0-b)cosα]*i根据复数相等的定义,得x-a=(x0-a)cosα-(y0-b)sinα ,y-b=(x0-a)sinα+(y0-b)c

2022-01-21 15:35:40 1114

原创 程序移植后,QTcreator 工程ui界面改了,但是显示的时候没有更新的问题

本项目最初再树莓派3(LINUX系统)运行OK,后COPY到树莓派4上编译,修改ui界面控件后,编译运行是ui显示并没有更新。问题查找步骤发现1、原构建目录如下:发现修改的ui_widget.h文件在/home/pi/Desktop/build-Test_Sldpid-Qt_5_11_3_in_PATH_qt5-Debug\目录下。而构建时加载的ui_widget.h文件在/home/pi/Desktop/Test_Sldpid/项目部录下。2、发现目录不一致,修改构建目录为本项目目录,及取消

2022-01-18 10:57:54 2560

原创 LINUX 线程启动回调函数

先MARK一下大神的博客函数指针与指针函数:从pthread_create说起

2022-01-04 11:51:54 1506

原创 BCM2835 I2C函数调试笔记

本人使用AT24C02 EEPROM 芯片通过树莓派的I2C通讯,AT24C02 i2c地址为0x50.以前一直用wringpi库开发树莓派程序,因为树莓派4不支持wringpi库,所以只能改为BCM2835库。先比较wringpi的I2C函数,BCM2835库中I2C函数的说明并不清晰,所以总结如下:重点说明bcm2835_i2c_write和 bcm2835_i2c_read_register_rs函数uint8_t bcm2835_i2c_write ( const char * buf,u

2021-12-29 14:17:44 585

原创 树莓派(linux)libpcap的安装/应用笔记

安装步骤参照 libpcap的安装方法详解安装M4报错Please port gnulib freadahead.c to your platform!Make 时报错,在安装目录sed -i ‘s/IO_ftrylockfile/IO_EOF_SEEN/’ lib/.cecho “#define _IO_IN_BACKUP 0x100” >> lib/stdio-impl.h问题解决,继续正常编译bison-2.5.1 make 时报错#error "Please port gn

2021-12-07 19:43:40 1659

原创 libpcap中的过滤规则设置

libpcap中的过滤规则设置 (2014-03-15 17:01:30)转载▼用libpcap时发现在网上截获的包有很多种,往往很多时候很难发现自己需要的包,所以这时候用libpcap的过滤规则的话可以很方便的发现自己所需要的,但是过滤规则的语法是怎么样的呢?举个例子,比如我现在要截获ping百度主页的来回数据包,则这时候要限定一下IP地址才能更有针对性,一开始我设置的是src host 115.239.210.26 PS:(因为百度大概有很多IP提供商所以可能IP地址不一样),于是截获的全是百度发

2021-12-06 14:39:26 2016

原创 MFC 类似控件数组实现方法

如果控件的ID是连续的,就可以通过访问ID的方式来实现相当于控件数组的循环操作。1、打开项目resource.h文件2、首先要让IDC_CMB_hometype0-7,的ID连续#define IDC_CMB_hometype0 1182#define IDC_CMB_hometype1 1183#define IDC_CMB_hometype2 1184#define IDC_CMB_hometype3

2021-10-27 16:10:33 532

原创 QString 转换为 char */ unsigned char *

QString 转换为 char *1.QString 转换为 char *将 QString 转 char *,需要用到 QByteArray 类,QByteArray 类的说明详见 Qt 帮助文档。因为 char * 最后都有一个'\0'作为结束符,而采用 QString::toLatin1() 时会在字符串后面加上'\0'。QString str;char* ch;QByteArray ba = str.toLatin1(); // mustch=ba.data();这样就完成了

2021-10-14 18:41:08 20425

原创 double 转 unsigned char 数组

double占64位,char占8位,所以一个double需要8个char存储:double data = 3.1415926;double temp = 0.0;unsigned char buffer[8] = {0, 0};memcpy(buffer, (unsigned char *)&data, 8);temp = *(double *)&buffer;printf("\r\n%lf\r\n", temp);printf("\r\n%lf\r\n", *(doub

2021-09-23 10:33:41 2134 1

原创 FPGA脉冲发生器频率与COUNTER对应转换

假设FPGA 时钟频率为 AMHZ A一般为20、50‘100…(包括PLL后时钟频率)发出1个脉冲需要两次信号高低电平反转脉冲频率为X的,信号翻转计数器计数周期Y时钟频率为 AMHZ,周期为B则B=1/A因为FPGA always是基于每时钟上升沿计数的,所以最小时间单位就是周期B,而不是B/2。设:要发出的频率为F,则:脉冲周期为1/F,每个高低电平维持时间为C=(1/F)/2=1/(2XF).解:counter=C/B=(1/(2XF))/(1/A)=A/(2xF);例如

2021-08-13 10:54:47 470

原创 学海无涯之Linux信号量 sem_t/epoll/mutex

Linux信号量 sem#include <semaphore.h>static sem_t sem_out[16];static sem_t sem_in[16];static struct timespec ts;int Linux64_E6232::E6232_Open(unsigned short mc,short ip3,short ip4){ ..... pthread_create(&tid[mc],nullptr,ProcCtrlRecv0,&m

2021-07-06 15:05:40 382

原创 学海无涯之 VS2008 设置dll的输出目录和名字及#pragma comment 路径分隔符

更改dll名称及输出位置项目–属性–配置属性–连接器—输出文件目标位置:“E:\123” ,目标文件:shuchu.dll原始图如下更改完成后的图如下:引用自:怎么为vs2008设置dll的输出目录和名字?如果出现如下问题:vc90.pdb 不是创建此预编译头时使用的 pdb 文件,请重新创建预编译头解决:,右键你项目的预编译文件(stdafx.cpp)――>属性――>配置属性――>C/C++――>预编译头――>创建/使用预编译头,选择创建预编译头-&gt

2021-06-23 10:31:48 1030

原创 STM32学海无涯之CAN ID匹配、屏蔽与过滤

CAN的过滤器是硬件设置接受指定地址数据用的。假如说1号机设置FilterID为0x01010101,FilterMask设置为0xFFFFFFFF,那么他只能接受CAN通讯数据ID为0x01010101的数据,其他的硬件就会被屏蔽掉。如果FilterMask设置为0,那么就是所有ID的数据都可以接受。FilterID为过滤的地址,FilterMask与FilterID对应每一位表示是否需要匹配当前位。还是上面的例子,mask设置为全1,表示所有为必须匹配,也就是只接受和FilterID一样的数据;ma

2021-05-26 08:49:57 6628

原创 学海无涯之FPGA

reg 信号赋值问题if(~ncs) //片选 begin if(err_count) err_count <= 0; if(clear_flag) clear_flag <=0; case (rec_status) 2'b00: begin ......这样err_count 和 clear_flag 清零没问题if(~ncs) //片选 begin err_count <= 0;

2021-04-25 09:06:19 73

空空如也

空空如也

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

TA关注的人

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