请楼主介绍下,多文档设计,如果躲开MFC,C++还有比较容易上手的工具吗?还有上次提到的线程里加SLEEP(100) ...
不知道了。qt你可以看看。cpu 100%还是你代码有跑,没有执行sleep,你调试。 wye11083 发表于 2020-8-15 22:29
不知道了。qt你可以看看。cpu 100%还是你代码有跑,没有执行sleep,你调试。 ...
谢谢,还有个情况,比如我想开个120秒的定时器,第一种settimier(1,1000,null);然后计数;第二种第一种settimier(1,120000,null);两种定时的时间并不准确。是什么原因,有什么好的解决办法? zw_7627 发表于 2020-8-15 22:34
谢谢,还有个情况,比如我想开个120秒的定时器,第一种settimier(1,1000,null);然后计数;第二种第一种se ...
pc本来就不精确。你可以用mutex配合timeout用。 mark,收藏慢慢学习 请教两个关于 C++的问题,也是困扰我两天的问题。
1、
此处 typedef 的函数指针定义为啥我不能放在类里面,图中第二个箭头所示的方向,放在里面就会报错,参见最下面一个箭头。
2、我在移植一个 shell 类的时候,涉及到函数指针的问题,本意上 shell 的命令都是通过 public 的外部函数进行添加,如下:
void X_Shell::addCommand(const char *name, ShellFunctionT functionPoint)
{
strncpy(&this->_staticCommand.commandName, name, sizeof(this->_staticCommand.commandName));
this->_staticCommand.functionPoint = functionPoint;
X_Shell::commandCount++;
if (X_Shell::commandCount >= X_SHELL_MAX_CMD_COUNT)
{
this->_shellSerial->print("Too many commands has been added!\r\n");
}
}
其中_staticCommand的结构体定义如下:
typedef struct
{
char commandName;
void (*functionPoint)(char argc, char *argv);
} CommandT;
我为了内置一个保留命令,“ls”,所以将这个命令加入_staticCommand,
但是在构造函数中初始化的的时候一直报错,
X_Shell::X_Shell(HardwareSerial &serial)
{
this->_shellSerial = &serial;
strncpy(this->_shell.userName, X_SHELL_USER_NAME, sizeof(this->_shell.userName));
strncpy(this->_staticCommand.commandName, "ls", sizeof(_staticCommand.commandName));
this->_staticCommand.functionPoint = this->shellListCommand;
this->_shell.command = &_staticCommand;
}
其中shellListCommand的定义如下:
void X_Shell::shellListCommand(char argc, char *argv)
{
if (!strcmp("all", &argv]))
{
for (uint8_t i = 0; this->_staticCommand.functionPoint != NULL; i++)
{
this->_shellSerial->printf("%s\r\n", this->_staticCommand.commandName);
}
}
else if (!strcmp("-v", &argv]))
{
this->_shellSerial->printf("%s\r\n", X_SHELL_VERSION);
}
else
{
this->_shellSerial->print("ls \r\n");
this->_shellSerial->print("options: \r\n");
this->_shellSerial->print("\t -v \t: Show version\r\n");
this->_shellSerial->print("\t all \t: show all commands\r\n");
}
}
看到网上说涉及到类的函数指针,需要把成员函数声明为 static,这块也不是很理解,还是希望大神指点一下~
solojimes 发表于 2020-10-9 11:33
请教两个关于 C++的问题,也是困扰我两天的问题。
1、
此处 typedef 的函数指针定义为啥我不能放在类里面, ...
1 typedef确实是类似于define的东西,但是又不一样,一般是放顶层头文件或者全局,具体你要查c++标准,我也没这样用过。
2 报什么错? wye11083 发表于 2020-10-9 12:49
1 typedef确实是类似于define的东西,但是又不一样,一般是放顶层头文件或者全局,具体你要查c++标准, ...
solojimes 发表于 2020-10-9 14:09
你加个强制类型转换试试,或者先弄成void*再转换。类里面的函数一般来说都是全局的,继承的函数会通过virtual ptr表去找。 wye11083 发表于 2020-10-9 16:32
你加个强制类型转换试试,或者先弄成void*再转换。类里面的函数一般来说都是全局的,继承的函数会通过vi ...
而类成员函数指针就不仅仅是类成员函数的内存起始地址,还需要能解决因为C++的多重继承、虚继承而带来的类实例地址的调整问题,所以类成员函数指针在调用的时候一定要传入类实例对象。
https://blog.csdn.net/qq_37668436/article/details/104202029#comments_13380571
参考一下 solojimes 发表于 2020-10-9 18:20
而类成员函数指针就不仅仅是类成员函数的内存起始地址,还需要能解决因为C++的多重继承、虚继承而带来的 ...
所以我叫你强制转换啊。 solojimes 发表于 2020-10-9 11:33
请教两个关于 C++的问题,也是困扰我两天的问题。
1、
此处 typedef 的函数指针定义为啥我不能放在类里面, ...
1。放到外边是全局的定义,类型是ShellFunctionT,放到类里边定义类型是X_Shell::ShellFunctionT
2。void X_Shell::shellListCommand(char argc, char *argv) 是 void (X_Shell::*)(char , char *)类型,不是void (*)(char , char *) 类型
void (X_Shell::*)(char , char *)是类成员函数指针,参数隐含this指针,是和X_Shell类的实例绑定的,可以使用this指针访问类内部变量。
void (*)(char , char *)不和任何类实例绑定,不能使用this指针。
类内部的static 函数不和类绑定,static void X_Shell::shellListCommand(char argc, char *argv)不和任何类实例绑定,不能访问类内部非static变量
为了通用的话接口不要定义为void (*)(char , char *),定义成std::function<void(char,char*)> 类型,类外的函数和static函数直接传进来,
类内部的函数用std::bind绑定下在传进来 顶一下,学习 楼主好人,请教个问题:现在用C#编一个界面,里面有一部分实时显示摄像头图像,现在需要拍一张照片,然后在和摄像头实时采集图像进行对比。但是不知道怎么实现,楼主如有思路,请指教,谢谢 heyangfengyue 发表于 2020-10-19 10:11
楼主好人,请教个问题:现在用C#编一个界面,里面有一部分实时显示摄像头图像,现在需要拍一张照片,然后在 ...
对比什么?你这可能涉及到图像检测或图像识别领域了。
如果只是单纯的显示,那你一边一个好了,静态图像最简单的可以用picture控件,但是注意csharp的picture控件非常难用(加载图像文件之后会占有文件句柄造成文件被系统锁定),而且动态刷流时极易崩溃,如果不在乎cpu可以用opengl。mfc做这件事比csharp要方便10000倍。 点赞,支持你,大佬! wye11083 发表于 2020-10-19 10:23
对比什么?你这可能涉及到图像检测或图像识别领域了。
如果只是单纯的显示,那你一边一个好了,静态图像 ...
拍摄的图像是用于对比位置的,就是拍摄一张图片,然后和摄像头里面的图像进行对比,发现位置有偏差了就纠正偏差,使之对齐。是想实现这样的功能 heyangfengyue 发表于 2020-10-21 20:48
拍摄的图像是用于对比位置的,就是拍摄一张图片,然后和摄像头里面的图像进行对比,发现位置有偏差了就纠 ...
那你这得做图像匹配,你找找opencv。 wye11083 发表于 2020-10-21 21:47
那你这得做图像匹配,你找找opencv。
拍个照片只是参考,调节位置,是手动调节的,不是自动调节,用不着OPENCV。我现在是获取了摄像头的实时图像,也可以拍照,但是不知道怎么把图片叠加在摄像头的实时图像上,望指教,谢谢 heyangfengyue 发表于 2020-10-21 22:03
拍个照片只是参考,调节位置,是手动调节的,不是自动调节,用不着OPENCV。我现在是获取了摄像头的实时图 ...
取bitmap,然后直接用指针访问就行了。网上有例程。 wye11083 发表于 2020-10-21 23:51
取bitmap,然后直接用指针访问就行了。网上有例程。
好滴,谢谢大神指导 main()
{
signed char i;
i=0xff;
D1=0;
if(i==0xff)
D1=0;
else
D1=1;
while(1);
}
这段代码的执行结果 D1为1,请问是什么原因? iamastu 发表于 2020-10-22 20:25
这段代码的执行结果 D1为1,请问是什么原因?
如果你按signed char,那么它=-1,显然不等于0xff(255)。当值未显式定义长度时,编译器默认为标准int类型数据。 谢谢wye11083,应该是将i的值转换成 int 类型,变为0xffff,与 0xff 不相等了。 我设计的ZNYQ的板子SD卡启动不了,同样的最小系统板子做了几款,其他的都可以,有一款的就是无法启动,困惑一周多了 yongjia 发表于 2020-11-4 10:14
我设计的ZNYQ的板子SD卡启动不了,同样的最小系统板子做了几款,其他的都可以,有一款的就是无法启动,困惑 ...
(1)查ddr3,(2)串口跟踪uboot信息,(3)检查ps复位,progb,initb,done, wye11083 发表于 2020-11-4 12:12
(1)查ddr3,(2)串口跟踪uboot信息,(3)检查ps复位,progb,initb,done,
1,DDR部分重新配置参数表了,
2,串口无输出,但是示波器上能测量到读写的波形
3:PS复位是好的,initb,done 肯定不对啦
在那里向楼主提问呢 为楼主的无私奉献点个赞!最近没有时间上网!来冒个泡! 目前学习FPGA CPLD优先选 Xilinx还是Altera ilan2003 发表于 2020-11-28 20:41
目前学习FPGA CPLD优先选 Xilinx还是Altera
xilinx功能更强大,没有altera了,现在叫intel。xilinx熟了可以考虑安路紫光高云等国产系了,现在可堪用了。 本帖最后由 654705188 于 2020-12-15 17:24 编辑
在a.h中定义结构体
typedef struct a
{
int x;
}tA;
在b.h中引用tA
#include “a.h”
typedef struct b
{
tA ab;
}tB;
在c.h中引用tA,tB
#include “b.h”
typedef union c
{
tB bc;
}tC;
这样写MDk回报\Application\b.h(183): error:#70: incomplete type is not allowed
请教大神,怎样才能不报错。 654705188 发表于 2020-12-15 17:11
在a.h中定义结构体
typedef struct a
{
这typedef struct后面名字放到结构体后面试试。标准c似乎不支持这么写,vc一样会报错。 楼主想请教一下用FPGA做高速信号处理的问题。我现在采样率是3.2G,FPGA的时钟是200M的,相当于一个时钟周期回来16个数据。我现在想对数据做一下滤波(调用FIR的ip核),但是FPGA的时钟只有200M,一个时钟周期出来一个数据的话,数据根本处理不过来。这种情况是怎么处理呢? 我是谁712 发表于 2020-12-16 14:45
楼主想请教一下用FPGA做高速信号处理的问题。我现在采样率是3.2G,FPGA的时钟是200M的,相当于一个时钟周期 ...
那你只能放16个核 并行平推了。 请教如何评估一个FPGA的并行总线,能够可靠的驱动多个从机? marshallemon 发表于 2020-12-18 15:33
请教如何评估一个FPGA的并行总线,能够可靠的驱动多个从机?
示波器看沿。 回答了多少问题了? sege1 发表于 2020-12-23 16:42
回答了多少问题了?
没几个。。 求vivado2020.2版本的一个破解license文件,网上搜到的链接都不存在 lzlym182 发表于 2021-2-9 11:05
求vivado2020.2版本的一个破解license文件,网上搜到的链接都不存在
随便找一个就能用,所有版本通用。 wye11083 发表于 2021-2-9 11:30
随便找一个就能用,所有版本通用。
找到的有的要会员积分下载,有的链接不存在(百度分享,无一例外),先装一个vivado HL WebPACK(期间限定版的)。不知道限定哪些期间,我要用的器件是zynq7035,不知道会不会有限制
支持楼主~ 请教大神,如何动态生成函数指针:
如下
typedef void (*PFUN)(void)
void taskConstruct(PFUN fn, const uint8_t period)
{
_SS
WaitX(period);
fn();
_EE
}
PFUN taskCreate(PFUN fn, const uint8_t period)
{
taskConstruct(fn, period);
return taskConstruct;
}
我希望每次taskCreate返回一个新的taskConstruct函数指针,而不是固定的或者要提前写好可能的函数,把指针映射过来。 MegaHealth 发表于 2021-6-1 09:54
请教大神,如何动态生成函数指针:
如下
typedef void (*PFUN)(void)
没见过你要的语法。你要对每种数据类型设置一个不同的函数?那就用define,用#define func(a,b) (a)_##(b)这种动态生成函数。具体用法请参考openblas的kernel函数,它的所有函数名都是cname,通过编译时根据一大堆define生成对应符号和优化过的函数。 wye11083 发表于 2021-6-1 10:06
没见过你要的语法。你要对每种数据类型设置一个不同的函数?那就用define,用#define func(a,b) (a) ...
好的,谢谢指教 wye11083 发表于 2021-6-1 10:06
没见过你要的语法。你要对每种数据类型设置一个不同的函数?那就用define,用#define func(a,b) (a) ...
用define似乎还是不行,因为define的函数在调用处是直接拷贝代码,无法获取函数指针,我需要函数指针 MegaHealth 发表于 2021-6-1 10:18
用define似乎还是不行,因为define的函数在调用处是直接拷贝代码,无法获取函数指针,我需要函数指针 ...
应该不是。你语法写错了可能。或者你转一下,比如func fn=dfunc(x,y);
调用fn(...);
然后返回fn。这样fn是生成的函数。
否则blas就吃翔了。毕竟blas代码里面全是cname,不存在详细指定的函数名。这也因为blas的kernel函数是通用的。 wye11083 发表于 2020-6-26 07:46
器件批量一致性是不可靠的。而且我们是应用在24x365场合的。加抖动解决不了所有问题,留出足够余量才能做 ...
楼主这个方法确实是个很好的思路,回头试一下效果
为楼主的无私奉献点个赞 靠长时间积累 现在只会一些简单的verilog语法,请问如果要深入学习的话,路径是什么。自己写一个cpu这种怎么样? 司马青衫 发表于 2021-8-1 18:56
现在只会一些简单的verilog语法,请问如果要深入学习的话,路径是什么。自己写一个cpu这种怎么样? ...
有钱有闲可以自己慢慢写,一般fpga建议用vexriscv。verilog想要深入必须得有实际项目支持,然后是把语法弄熟,数字电路基础搞熟,常用数字电路模型记熟,然后就能写好一些中低复杂度模块了。流水线算法的可以用hls从c语言转,但hls对ram支持不太好。
fpga代码优化是个长期工作,如果你只是突然的想去学一下,那么不一定能学成。毕竟硬件跟软件是完全的2套不同的东西,硬件更着重积累,积累不够,github也没用。虽然用软件的方法去写多数也能用,然而资源和效率不一定行。 学软件难吗老铁哥 请教LZ,spartan 6器件在往flash烧写软件时,所有的user io会输出高电平,这个会导致我们的控制电路有问题,有没有办法让他输出低? wye11083 发表于 2020-3-22 11:23
那还是你没选好。你仔细看看chipscope选项。我已经多年不用了,调试直接读状态机看状态。chipscope只能用 ...
想知道楼主不用JTAG仿真器是如何调试FPGA的{:shocked:} leeseel 发表于 2021-10-26 16:49
请教LZ,spartan 6器件在往flash烧写软件时,所有的user io会输出高电平,这个会导致我们的控制电路有问题 ...
没办法。io只有上拉和悬空两种状态(pudcb管脚控制)。甚至国产fpga下载程序时io状态不确定,随机。所以你要在外面用强下拉(大约2~3k电阻到地)。 狂羁青马 发表于 2021-10-26 18:02
想知道楼主不用JTAG仿真器是如何调试FPGA的
加个uart,封装一个vexriscv内核,剩下的重要工作之一是写ip,之二是写c++代码,printf打印自然很正常了。有usb可以快速收发指令,这样可以读ip预设的状态口分析。 wye11083 发表于 2021-10-26 22:02
没办法。io只有上拉和悬空两种状态(pudcb管脚控制)。甚至国产fpga下载程序时io状态不确定,随机。所以 ...
spartan配置手册中说FPGA在配置阶段(包含初始化和编程)输出电平上拉/下拉受HSWAPEN引脚控制,实测FPGA正常上电启动,初始化,FPGA内部编程确实受这个控制。在烧写外部FLASH时,HSWAPEN无论我拉低还是拉高,USER IO输出都是为高,难道外部FLASH编程不能算编程吗? leeseel 发表于 2021-10-27 09:38
spartan配置手册中说FPGA在配置阶段(包含初始化和编程)输出电平上拉/下拉受HSWAPEN引脚控制,实测FPGA ...
你用jtag下载的spi?。。那个就不清楚了。我们通常使用isp下载,jtag已经好几年没用过了。 wye11083 发表于 2021-10-27 11:00
你用jtag下载的spi?。。那个就不清楚了。我们通常使用isp下载,jtag已经好几年没用过了。 ...
焊接上去了的空白片子应该只能用JTAG了吧? leeseel 发表于 2021-10-27 14:18
焊接上去了的空白片子应该只能用JTAG了吧?
自己留出来spi线,拉低progb可以直接烧spi 请教楼主 {:handshake:}
新手偶得1个ICxc9572 查资料好象不是单片机手头没有编程器啥的 只有USB2TTL / STLINK / USBASP 这几种线
怎么测试其是好是坏?常用元件可以搭个最基本的电路来诊断下吗
QQ忘了 发表于 2022-1-1 19:48
请教楼主
你找个古董有并口的电脑,可以做个并口下载线。xilinx的并口连接是开源的,就是要在bios改成epp?模式(不兼容ecp模式)。 wye11083 发表于 2022-1-1 20:26
你找个古董有并口的电脑,可以做个并口下载线。xilinx的并口连接是开源的,就是要在bios改成epp?模式( ...
大神真是博学呀 {:handshake:}
这个东东有简单的测试方法吗
如果有并口编程器 是通过上位机可以发一个直观的测试吗
可以接个LED看结果吗
请给指导指导
我先找下并口看看
QQ忘了 发表于 2022-1-1 20:58
大神真是博学呀
这个东东有简单的测试方法吗
你还得下个ISE 10.1或者能支持的版本,然后打开impact就可以查找设备了。一般CPLD比较扛造。 本帖最后由 QQ忘了 于 2022-1-2 15:18 编辑
wye11083 发表于 2022-1-1 21:14
你还得下个ISE 10.1或者能支持的版本,然后打开impact就可以查找设备了。一般CPLD比较扛造。 ...
感谢指教 {:handshake:}
并口下载线看到2种 大同小异,1种是贴片件
电路倒不复杂以后有时间的话体验下
还好有类似blink的例程
本帖最后由 QQ忘了 于 2022-1-4 13:49 编辑
wye11083 发表于 2022-1-1 20:26
你找个古董有并口的电脑,可以做个并口下载线。xilinx的并口连接是开源的,就是要在bios改成epp?模式( ...
请教 关于JTAG接口 {:handshake:}
已解决
wye11083 发表于 2022-1-1 21:14
你还得下个ISE 10.1或者能支持的版本,然后打开impact就可以查找设备了。一般CPLD比较扛造。 ...
请教Xilinx下用哪个软件入门学习? {:handshake:} 适合我手头这个片子的
这两天临时做个了学习板 还有下载线要做,材料在路上了
在Xilinx也注册了,感觉都是高价货 {:sweat:}等着谁自投罗网
QQ忘了 发表于 2022-1-5 21:45
请教Xilinx下用哪个软件入门学习? 适合我手头这个片子的
这两天临时做个了学习板 还 ...
。。这种老古董你找ise网站上有版本号,用最后一版能支持的。你玩这玩意还真不如买个原子的板子,好歹有教程可以参考。自己从0不容易学。 wye11083 发表于 2022-1-6 00:02
。。这种老古董你找ise网站上有版本号,用最后一版能支持的。你玩这玩意还真不如买个原子的板子,好歹有 ...
您的建议是对的 {:handshake:}
对自己没信心随便学点就算了
偶得一棵葱 不想去买螃蟹了{:shy:}
本帖最后由 QQ忘了 于 2022-1-7 19:38 编辑
wye11083 发表于 2022-1-6 00:02
。。这种老古董你找ise网站上有版本号,用最后一版能支持的。你玩这玩意还真不如买个原子的板子,好歹有 ...
昨天把下载线画好了 ,关于vref端口请教下 {:handshake:} :
JTAG下载线的资料上 去开发板上的接口是6 pin 的,其中有个脚是 vref,其它是TDI/TMS/TCK/TDO/GND
而开发板上的JTAG口是10pin的,除了不用的口是+5V/TDI/TMS/TCK/TDO/GND
抄来的
这个vref引脚有没有额定的值? 和+5V接一起可以吗
不知道5V作为基准会不会有点高{:loveliness:}
QQ忘了 发表于 2022-1-7 19:37
昨天把下载线画好了 ,关于vref端口请教下:
JTAG下载线的资料上 去开发板上的接口是6 ...
VREF是给下载线电平转换用的,你外面直接3.3V的话可以不用管。记得如果你用电脑并口线串个51~150R的电阻,要不然不稳定。
wye11083 发表于 2022-1-7 19:55
VREF是给下载线电平转换用的,你外面直接3.3V的话可以不用管。记得如果你用电脑并口线串个51~150R的电阻 ...
感谢指教 {:handshake:}
搭的环境是5V电源的
抄的是并口下载线, 但台机都角落里吃灰好多年了{:mad:}
来提问了,V7 BUFG不够怎么办?
一共挂了两组DDR3、4个X2的SRIO跟别的FPGA通信、一路SDI显示、两个X4的NVME SSD,到这就用了四五十个BUFG,V7一共32个
实在不好删BUFG了,剩下的基本上都是IP核里GTH内部的了。
楼主您好。
请问怎么在C语言中实现wireshark UDP抓包的功能?
谢谢 请教楼主问题,vdma 2个帧缓冲,circular模式,设置1帧计数中断,程序也有一个缓存,中断中通过拷贝刷新两个缓存中的一个。最后出来花屏,出现花屏是什么情况。
页:
1
[2]