请教几个问题~~

found1 2009-09-02 07:20:19
小弟初学,现做一个实验,有几个问题请教下!
这是我程序的一些定义,不太懂什么意思?
#define SPACING 40 /* Pixel spacing of "sensor" */
#define YDELTATHRESH 12 /* Max delta Y the will not trip "sensor" */
#define PIXPERSAMPLE 2 /* Number of pixels per sample location */
#define SENSBUFSIZE 128*4 /* Must be multiple of 128 & large enough */
#define XPIX (720/SPACING)
#define YPIX (576/SPACING) // cdy
#define PIXOFF(n) ((n*SPACING)+(SPACING/2))
#define SAMPLES (XPIX*YPIX)

麻烦知道的帮忙解释一下 这些定义分别代表什么意思,具体的意思,谢谢!~~
...全文
321 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
s67284727 2009-09-23
  • 打赏
  • 举报
回复
的这个跨度可不小
lixiaolicauc 2009-09-23
  • 打赏
  • 举报
回复
宏定义就是字符直接替换
sdd0124 2009-09-21
  • 打赏
  • 举报
回复
顶上,每天收获一点。
AldisZhan 2009-09-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 found1 的回复:]
小弟初学,现做一个实验,有几个问题请教下!
这是我程序的一些定义,不太懂什么意思?
#define SPACING        40    /* Pixel spacing of "sensor" */                           
#define YDELTATHRESH    12    /* Max delta Y the will not trip "sensor" */
#define PIXPERSAMPLE    2    /* Number of pixels per sample location */
#define SENSBUFSIZE    128*4 /* Must be multiple of 128 & large enough */
#define XPIX            (720/SPACING)
#define YPIX            (576/SPACING)        // cdy
#define PIXOFF(n)      ((n*SPACING)+(SPACING/2))
#define SAMPLES        (XPIX*YPIX)

麻烦知道的帮忙解释一下 这些定义分别代表什么意思,具体的意思,谢谢!~~
[/Quote]


宏定义
宏都是要转化为 int型的一种常量
#define SPACING 40 //SPACING 值为 (int)40
#define XPIX (720/SPACING) // XPIX 值为 (int)(720/40)
#define PIXOFF(n) ((n*SPACING)+(SPACING/2))
这是一个 可调用的宏 比如PIXOFF(3) 值为 (int)(3×SPACING + (SPACING/2)))
Android_小陈 2009-09-19
  • 打赏
  • 举报
回复
宏定义
myhder 2009-09-14
  • 打赏
  • 举报
回复
帮顶
found1 2009-09-14
  • 打赏
  • 举报
回复
这是谁写的的代码,难倒了诸位英雄!~~
  • 打赏
  • 举报
回复
宏定义,字符替换
用前一个字符串,替换后面的字符串

#define SPACING 40 /*40像素*/
#define YDELTATHRESH 12 /* Max delta Y the will not trip "sensor" */
#define PIXPERSAMPLE 2 /* Number of pixels per sample location */
#define SENSBUFSIZE 128*4 /* Must be multiple of 128 & large enough */
#define XPIX (720/SPACING)
#define YPIX (576/SPACING) // cdy
//下面的为定义表达式,进行运算,可以更灵活调用,并且在编译前就搞定,效率好
#define PIXOFF(n) ((n*SPACING)+(SPACING/2))
#define SAMPLES (XPIX*YPIX)
found1 2009-09-12
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 aopha 的回复:]
#define SPACING        40    /* Pixel spacing of "sensor" */                           
#define YDELTATHRESH    12    /* Max delta Y the will not trip "sensor" */
#define PIXPERSAMPLE    2    /* Number of pixels per sample location */
#define SENSBUFSIZE    128*4 /* Must be multiple of 128 & large enough */
#define XPIX            (720/SPACING) //X方向有多少个传感器
#define YPIX            (576/SPACING) //Y方向有多少个传感器
#define PIXOFF(n)      ((n*SPACING)+(SPACING/2)) //n个传感器需要的长度(加了1/2个传感器的空)
#define SAMPLES        (XPIX*YPIX) //总的采样数目(即传感器数目)

[/Quote]
这样理解有些地方好像不对!~~
1.如果XPIX是X方向上的传感器的数量,那么SPACING该怎么理解,是像素的间距?那720/SPACING怎么理解?
2.或者spacing就应该是一个传感器的一个方向的像素数量?那么PIXOFF(n)这个又该怎么理解呢?
希望大家多多讨论!谢谢!~~
lpyzl 2009-09-12
  • 打赏
  • 举报
回复
全都是宏定义,#define A B则程序里所有的A都替换成B
found1 2009-09-12
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 wanghao111 的回复:]
根据坐标采集
[/Quote]
我想知道的就是如何根据坐标采集的!
goodboy5201314 2009-09-12
  • 打赏
  • 举报
回复
都是宏定义,前面define A b,就是用A来代替将要用的b数
例如我
define A 40
Int 40;
就可以写成,Int A;
wanghao111 2009-09-12
  • 打赏
  • 举报
回复
根据坐标采集
wxdcxp 2009-09-11
  • 打赏
  • 举报
回复
楼主是做液晶电视的吗?好像跟液晶电视里有个叫light sensor功能
就是可以感应光线强度,来调整屏幕亮暗的
fallening 2009-09-11
  • 打赏
  • 举报
回复
危险而又强大的宏啊
sdd0124 2009-09-11
  • 打赏
  • 举报
回复
学习了呃
found1 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 aopha 的回复:]
#define SPACING        40    /* Pixel spacing of "sensor" */                           
#define YDELTATHRESH    12    /* Max delta Y the will not trip "sensor" */
#define PIXPERSAMPLE    2    /* Number of pixels per sample location */
#define SENSBUFSIZE    128*4 /* Must be multiple of 128 & large enough */
#define XPIX            (720/SPACING) //X方向有多少个传感器
#define YPIX            (576/SPACING) //Y方向有多少个传感器
#define PIXOFF(n)      ((n*SPACING)+(SPACING/2)) //n个传感器需要的长度(加了1/2个传感器的空)
#define SAMPLES        (XPIX*YPIX) //总的采样数目(即传感器数目)

[/Quote]

感谢大家,希望大家多给点这样的提示!新手!十分感谢!
结合checkMotion这个函数,我想问:
这个程序是不是没有把所有的像素点都采进去?具体的采集像素点的过程是怎样的?
static int checkMotion( unsigned char *pY )
{
static int idx = 0;
int x,y,i;

idx ^= 1;

OEMCacheClean( img_sum[idx], SAMPLES*PIXPERSAMPLE );
OEMCacheCleanSynch();

i = 0;
for( y=0; y <YPIX; y++ ) //YPIX=576/40=14
for( x=0; x <XPIX; x++ ) //XPIX=720/40=18
{
DAT_copy( pY + PIXOFF(x) + (PIXOFF(y)*720),//PIXOFF(n)=(n*SPACING)+(SPACING/2)
img_sum[idx] + i, PIXPERSAMPLE );//SPACING=40
i += PIXPERSAMPLE; //PIXPERSAMPLE=2
}

x = 0;

if( !netcmdArgs[CMD_SHOWDOTS] ) //CMD_SHOWDOTS=2
{
for( i=0; i <SAMPLES * PIXPERSAMPLE; i++ ) //SAMPLES=(XPIX*YPIX)

{
y = (int)img_sum1[i] - (int)img_sum2[i];
if( y < -YDELTATHRESH || y > YDELTATHRESH ) //YDELTATHRESH = 12
x++;
}
}
else
{
for( i=0; i <SAMPLES * PIXPERSAMPLE; i++ )

{
y = (int)img_sum1[i] - (int)img_sum2[i];
if( y < -YDELTATHRESH || y > YDELTATHRESH )
{
x++;
dec_data[i] = 0xFF;
}
else
{
dec_data[i] = 0x0;
}


}
}

// Return change in "tenths of percent"
return( (x*1000)/(SAMPLES*PIXPERSAMPLE) );
}
found1 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 fiveyes 的回复:]
其实楼主就是看不懂那些英文的注释吧。可以用一下百度翻译,再结合程序的具体用途(这个我们是不知道的,因为楼主没有说啊),就能够分析出来它的意图了。

比如这个:
#define SPACING        40    /* "传感器"的像素间隔 */
#define XPIX            (720/SPACING)
#define YPIX            (576/SPACING)

这就可以分析出,SPACING是两个像素之间的间隔,于是XPIX就代表X方向(也就是横向)有多少像素,这个是通过720/SPACING来计算的,也就是拿720除以像素间隔。YPIX同理。
[/Quote]

感谢各位的热情解答!声明几点:
1.宏定义我懂,就像这位所说,我不明白的是为什么要这么定义!我希望大家给点这样的指教!
2.这个程序的具体功能是实现简单的运动检测,相关的一些函数我上面已经补充贴出来了!14楼!
3.本程序基于dsp vpm642!
whg01 2009-09-10
  • 打赏
  • 举报
回复
看功能设计,这么定义宏,是由软件功能、硬件配置决定的。
jingjiwuci 2009-09-10
  • 打赏
  • 举报
回复
宏定义,就是定义一个名字来代表它后面的字串,在进行代码编译时就在使用这些名字的地方用它所代表的字串来代替
加载更多回复(23)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧