搜索
bottom↓
12
返回列表 发新帖
楼主: wye11083

向莫大学习,从今天开始有限解答C/C++/Xilinx方面的较难问题

  [复制链接]
(22025843)

出0入0汤圆

发表于 2020-8-1 04:18:37 | 显示全部楼层
支持楼主
(21786546)

出0入0汤圆

发表于 2020-8-3 22:46:54 | 显示全部楼层
支持楼主
(21749526)

出0入0汤圆

发表于 2020-8-4 09:03:54 | 显示全部楼层
支持,希望在这个帖子下多学习,取得进步
(20750917)

出0入0汤圆

发表于 2020-8-15 22:27:23 | 显示全部楼层
请楼主介绍下,多文档设计,如果躲开MFC,C++还有比较容易上手的工具吗?还有上次提到的线程里加SLEEP(100),加上后CPU的占用率仍是100%。
(20750806)

出0入20汤圆

 楼主| 发表于 2020-8-15 22:29:14 来自手机 | 显示全部楼层
zw_7627 发表于 2020-8-15 22:27
请楼主介绍下,多文档设计,如果躲开MFC,C++还有比较容易上手的工具吗?还有上次提到的线程里加SLEEP(100) ...

不知道了。qt你可以看看。cpu 100%还是你代码有跑,没有执行sleep,你调试。
(20750506)

出0入0汤圆

发表于 2020-8-15 22:34:14 | 显示全部楼层
wye11083 发表于 2020-8-15 22:29
不知道了。qt你可以看看。cpu 100%还是你代码有跑,没有执行sleep,你调试。 ...

谢谢,还有个情况,比如我想开个120秒的定时器,第一种settimier(1,1000,null);然后计数;第二种第一种settimier(1,120000,null);两种定时的时间并不准确。是什么原因,有什么好的解决办法?
(20748499)

出0入20汤圆

 楼主| 发表于 2020-8-15 23:07:41 来自手机 | 显示全部楼层
zw_7627 发表于 2020-8-15 22:34
谢谢,还有个情况,比如我想开个120秒的定时器,第一种settimier(1,1000,null);然后计数;第二种第一种se ...

pc本来就不精确。你可以用mutex配合timeout用。
(16981318)

出0入0汤圆

发表于 2020-9-28 13:34:02 | 显示全部楼层
mark,收藏慢慢学习
(16038151)

出0入0汤圆

发表于 2020-10-9 11:33:29 | 显示全部楼层
请教两个关于 C++的问题,也是困扰我两天的问题。
1、 7347F77A15A902DB20688C1A2C2AA2AC.jpg
此处 typedef 的函数指针定义为啥我不能放在类里面,图中第二个箭头所示的方向,放在里面就会报错,参见最下面一个箭头。

2、我在移植一个 shell 类的时候,涉及到函数指针的问题,本意上 shell 的命令都是通过 public 的外部函数进行添加,如下:
  1. void X_Shell::addCommand(const char *name, ShellFunctionT functionPoint)
  2. {
  3.         strncpy(&this->_staticCommand[X_Shell::commandCount].commandName[0], name, sizeof(this->_staticCommand[X_Shell::commandCount].commandName));
  4.         this->_staticCommand[X_Shell::commandCount].functionPoint = functionPoint;

  5.         X_Shell::commandCount++;

  6.         if (X_Shell::commandCount >= X_SHELL_MAX_CMD_COUNT)
  7.         {
  8.                 this->_shellSerial->print("Too many commands has been added!\r\n");
  9.         }
  10. }
复制代码

其中
  1. _staticCommand
复制代码
的结构体定义如下:
  1. typedef struct
  2. {
  3.         char commandName[X_SHELL_CMD_NAME_MAX_LENGTH];
  4.         void (*functionPoint)(char argc, char *argv);
  5. } CommandT;
复制代码


我为了内置一个保留命令,“ls”,所以将这个命令加入
  1. _staticCommand[0]
复制代码

但是在构造函数中初始化的的时候一直报错,
  1. X_Shell::X_Shell(HardwareSerial &serial)
  2. {
  3.         this->_shellSerial = &serial;

  4.         strncpy(this->_shell.userName, X_SHELL_USER_NAME, sizeof(this->_shell.userName));

  5.         strncpy(this->_staticCommand[0].commandName, "ls", sizeof(_staticCommand[0].commandName));
  6.         this->_staticCommand[0].functionPoint = this->shellListCommand;

  7.         this->_shell.command = &_staticCommand[0];
  8. }
复制代码

其中shellListCommand的定义如下:
  1. void X_Shell::shellListCommand(char argc, char *argv)
  2. {
  3.         if (!strcmp("all", &argv[argv[1]]))
  4.         {
  5.                 for (uint8_t i = 0; this->_staticCommand[i].functionPoint != NULL; i++)
  6.                 {
  7.                         this->_shellSerial->printf("%s\r\n", this->_staticCommand[i].commandName);
  8.                 }
  9.         }
  10.         else if (!strcmp("-v", &argv[argv[1]]))
  11.         {
  12.                 this->_shellSerial->printf("%s\r\n", X_SHELL_VERSION);
  13.         }
  14.         else
  15.         {
  16.                 this->_shellSerial->print("ls [options]\r\n");
  17.                 this->_shellSerial->print("options: \r\n");
  18.                 this->_shellSerial->print("\t -v \t: Show version\r\n");
  19.                 this->_shellSerial->print("\t all \t: show all commands\r\n");
  20.         }
  21. }
复制代码


看到网上说涉及到类的函数指针,需要把成员函数声明为 static,这块也不是很理解,还是希望大神指点一下~
(16033604)

出0入20汤圆

 楼主| 发表于 2020-10-9 12:49:16 来自手机 | 显示全部楼层
solojimes 发表于 2020-10-9 11:33
请教两个关于 C++的问题,也是困扰我两天的问题。
1、
此处 typedef 的函数指针定义为啥我不能放在类里面, ...

1 typedef确实是类似于define的东西,但是又不一样,一般是放顶层头文件或者全局,具体你要查c++标准,我也没这样用过。

2 报什么错?
(16028814)

出0入0汤圆

发表于 2020-10-9 14:09:06 | 显示全部楼层
wye11083 发表于 2020-10-9 12:49
1 typedef确实是类似于define的东西,但是又不一样,一般是放顶层头文件或者全局,具体你要查c++标准, ...

iShot2020-10-09 14.08.41.png
(16020190)

出0入20汤圆

 楼主| 发表于 2020-10-9 16:32:50 来自手机 | 显示全部楼层
solojimes 发表于 2020-10-9 14:09

你加个强制类型转换试试,或者先弄成void*再转换。类里面的函数一般来说都是全局的,继承的函数会通过virtual ptr表去找。
(16013757)

出0入0汤圆

发表于 2020-10-9 18:20:03 | 显示全部楼层
wye11083 发表于 2020-10-9 16:32
你加个强制类型转换试试,或者先弄成void*再转换。类里面的函数一般来说都是全局的,继承的函数会通过vi ...

而类成员函数指针就不仅仅是类成员函数的内存起始地址,还需要能解决因为C++的多重继承、虚继承而带来的类实例地址的调整问题,所以类成员函数指针在调用的时候一定要传入类实例对象。

https://blog.csdn.net/qq_3766843 ... 9#comments_13380571

参考一下
(16013345)

出0入20汤圆

 楼主| 发表于 2020-10-9 18:26:55 来自手机 | 显示全部楼层
solojimes 发表于 2020-10-9 18:20
而类成员函数指针就不仅仅是类成员函数的内存起始地址,还需要能解决因为C++的多重继承、虚继承而带来的 ...

所以我叫你强制转换啊。
(15923831)

出0入0汤圆

发表于 2020-10-10 19:18:49 | 显示全部楼层
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绑定下在传进来
(15767644)

出0入0汤圆

发表于 2020-10-12 14:41:56 | 显示全部楼层
顶一下,学习
(15179069)

出0入0汤圆

发表于 2020-10-19 10:11:31 来自手机 | 显示全部楼层
楼主好人,请教个问题:现在用C#编一个界面,里面有一部分实时显示摄像头图像,现在需要拍一张照片,然后在和摄像头实时采集图像进行对比。但是不知道怎么实现,楼主如有思路,请指教,谢谢
(15178347)

出0入20汤圆

 楼主| 发表于 2020-10-19 10:23:33 来自手机 | 显示全部楼层
heyangfengyue 发表于 2020-10-19 10:11
楼主好人,请教个问题:现在用C#编一个界面,里面有一部分实时显示摄像头图像,现在需要拍一张照片,然后在 ...

对比什么?你这可能涉及到图像检测或图像识别领域了。

如果只是单纯的显示,那你一边一个好了,静态图像最简单的可以用picture控件,但是注意csharp的picture控件非常难用(加载图像文件之后会占有文件句柄造成文件被系统锁定),而且动态刷流时极易崩溃,如果不在乎cpu可以用opengl。mfc做这件事比csharp要方便10000倍。
(15171976)

出0入0汤圆

发表于 2020-10-19 12:09:44 | 显示全部楼层
点赞,支持你,大佬!
(14968023)

出0入0汤圆

发表于 2020-10-21 20:48:57 | 显示全部楼层
wye11083 发表于 2020-10-19 10:23
对比什么?你这可能涉及到图像检测或图像识别领域了。

如果只是单纯的显示,那你一边一个好了,静态图像 ...

拍摄的图像是用于对比位置的,就是拍摄一张图片,然后和摄像头里面的图像进行对比,发现位置有偏差了就纠正偏差,使之对齐。是想实现这样的功能
(14964489)

出0入20汤圆

 楼主| 发表于 2020-10-21 21:47:51 来自手机 | 显示全部楼层
heyangfengyue 发表于 2020-10-21 20:48
拍摄的图像是用于对比位置的,就是拍摄一张图片,然后和摄像头里面的图像进行对比,发现位置有偏差了就纠 ...

那你这得做图像匹配,你找找opencv。
(14963554)

出0入0汤圆

发表于 2020-10-21 22:03:26 | 显示全部楼层
wye11083 发表于 2020-10-21 21:47
那你这得做图像匹配,你找找opencv。

拍个照片只是参考,调节位置,是手动调节的,不是自动调节,用不着OPENCV。我现在是获取了摄像头的实时图像,也可以拍照,但是不知道怎么把图片叠加在摄像头的实时图像上,望指教,谢谢
(14957064)

出0入20汤圆

 楼主| 发表于 2020-10-21 23:51:36 来自手机 | 显示全部楼层
heyangfengyue 发表于 2020-10-21 22:03
拍个照片只是参考,调节位置,是手动调节的,不是自动调节,用不着OPENCV。我现在是获取了摄像头的实时图 ...

取bitmap,然后直接用指针访问就行了。网上有例程。
(14900244)

出0入0汤圆

发表于 2020-10-22 15:38:36 | 显示全部楼层
wye11083 发表于 2020-10-21 23:51
取bitmap,然后直接用指针访问就行了。网上有例程。

好滴,谢谢大神指导
(14883039)

出0入0汤圆

发表于 2020-10-22 20:25:21 | 显示全部楼层
  1. main()
  2. {
  3.         signed char i;
  4.         i=0xff;
  5.         D1=0;
  6.         if(i==0xff)
  7.                 D1=0;
  8.         else
  9.                 D1=1;
  10.         while(1);
  11. }
复制代码

这段代码的执行结果 D1为1,请问是什么原因?
(14878761)

出0入20汤圆

 楼主| 发表于 2020-10-22 21:36:39 来自手机 | 显示全部楼层
iamastu 发表于 2020-10-22 20:25
这段代码的执行结果 D1为1,请问是什么原因?

如果你按signed char,那么它=-1,显然不等于0xff(255)。当值未显式定义长度时,编译器默认为标准int类型数据。
(14620417)

出0入0汤圆

发表于 2020-10-25 21:22:23 | 显示全部楼层
谢谢wye11083,应该是将i的值转换成 int 类型,变为0xffff,与 0xff 不相等了。
(13796490)

出0入0汤圆

发表于 2020-11-4 10:14:30 | 显示全部楼层
我设计的ZNYQ的板子SD卡启动不了,同样的最小系统板子做了几款,其他的都可以,有一款的就是无法启动,困惑一周多了
(13789416)

出0入20汤圆

 楼主| 发表于 2020-11-4 12:12:24 来自手机 | 显示全部楼层
yongjia 发表于 2020-11-4 10:14
我设计的ZNYQ的板子SD卡启动不了,同样的最小系统板子做了几款,其他的都可以,有一款的就是无法启动,困惑 ...

(1)查ddr3,(2)串口跟踪uboot信息,(3)检查ps复位,progb,initb,done,
(13781753)

出0入0汤圆

发表于 2020-11-4 14:20:07 | 显示全部楼层
wye11083 发表于 2020-11-4 12:12
(1)查ddr3,(2)串口跟踪uboot信息,(3)检查ps复位,progb,initb,done,

1,DDR部分重新配置参数表了,
2,串口无输出,但是示波器上能测量到读写的波形
3:PS复位是好的,initb,done 肯定不对啦
(12039298)

出0入0汤圆

发表于 2020-11-24 18:21:02 | 显示全部楼层
在那里向楼主提问呢
(11875642)

出0入0汤圆

发表于 2020-11-26 15:48:38 | 显示全部楼层
为楼主的无私奉献点个赞!最近没有时间上网!来冒个泡!
(11685280)

出0入4汤圆

发表于 2020-11-28 20:41:20 | 显示全部楼层
目前学习FPGA CPLD优先选 Xilinx还是Altera
(11675470)

出0入20汤圆

 楼主| 发表于 2020-11-28 23:24:50 来自手机 | 显示全部楼层
ilan2003 发表于 2020-11-28 20:41
目前学习FPGA CPLD优先选 Xilinx还是Altera

xilinx功能更强大,没有altera了,现在叫intel。xilinx熟了可以考虑安路紫光高云等国产系了,现在可堪用了。
(10229086)

出0入0汤圆

发表于 2020-12-15 17:11:14 | 显示全部楼层
本帖最后由 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
请教大神,怎样才能不报错。
(10216006)

出0入20汤圆

 楼主| 发表于 2020-12-15 20:49:14 来自手机 | 显示全部楼层
654705188 发表于 2020-12-15 17:11
在a.h中定义结构体
typedef struct a
{

这typedef struct后面名字放到结构体后面试试。标准c似乎不支持这么写,vc一样会报错。
(10151427)

出0入0汤圆

发表于 2020-12-16 14:45:33 | 显示全部楼层
楼主想请教一下用FPGA做高速信号处理的问题。我现在采样率是3.2G,FPGA的时钟是200M的,相当于一个时钟周期回来16个数据。我现在想对数据做一下滤波(调用FIR的ip核),但是FPGA的时钟只有200M,一个时钟周期出来一个数据的话,数据根本处理不过来。这种情况是怎么处理呢?
(10142494)

出0入20汤圆

 楼主| 发表于 2020-12-16 17:14:26 来自手机 | 显示全部楼层
我是谁712 发表于 2020-12-16 14:45
楼主想请教一下用FPGA做高速信号处理的问题。我现在采样率是3.2G,FPGA的时钟是200M的,相当于一个时钟周期 ...

那你只能放16个核 并行平推了。
(9975739)

出0入0汤圆

发表于 2020-12-18 15:33:41 | 显示全部楼层
请教如何评估一个FPGA的并行总线,能够可靠的驱动多个从机?
(9962213)

出0入20汤圆

 楼主| 发表于 2020-12-18 19:19:07 来自手机 | 显示全部楼层
marshallemon 发表于 2020-12-18 15:33
请教如何评估一个FPGA的并行总线,能够可靠的驱动多个从机?

示波器看沿。
(9539588)

出0入0汤圆

发表于 2020-12-23 16:42:52 | 显示全部楼层
回答了多少问题了?
(9531704)

出0入20汤圆

 楼主| 发表于 2020-12-23 18:54:16 来自手机 | 显示全部楼层
sege1 发表于 2020-12-23 16:42
回答了多少问题了?

没几个。。
(5412617)

出0入0汤圆

发表于 2021-2-9 11:05:43 | 显示全部楼层
求vivado2020.2版本的一个破解license文件,网上搜到的链接都不存在
(5411160)

出0入20汤圆

 楼主| 发表于 2021-2-9 11:30:00 来自手机 | 显示全部楼层
lzlym182 发表于 2021-2-9 11:05
求vivado2020.2版本的一个破解license文件,网上搜到的链接都不存在

随便找一个就能用,所有版本通用。
(5410629)

出0入0汤圆

发表于 2021-2-9 11:38:51 | 显示全部楼层
wye11083 发表于 2021-2-9 11:30
随便找一个就能用,所有版本通用。

找到的有的要会员积分下载,有的链接不存在(百度分享,无一例外),先装一个vivado HL WebPACK(期间限定版的)。不知道限定哪些期间,我要用的器件是zynq7035,不知道会不会有限制
1612841836(1).jpg
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-4-13 02:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表