View Full Version : كار اين دستور چيه ؟! define FUNC(x) 0x29,x
sharin
یک شنبه 28 اسفند 1390, 18:17 عصر
سلام.
مي خواستم بدونم دستور زير چكار مي كنه ... ؟!
#define HID_UsageMax(x) 0x29,x
توي كتاب ها دنبالش گشتم ، اما يافت نشد !
مي دونم به اين سبك مي شه تابع تعريف كرد و عملكردش رو نوشت ، اما 0x29,x رو نمي تونم درك كنم!
حتي اگر احتمالي ،چيزي هم مي ديد ،بگيد ، كمك مي كنه ...
پيشاپيش ممنون از جواب هاتون.
بهروز عباسی
یک شنبه 28 اسفند 1390, 20:43 عصر
#define HID_UsageMax(x) 0x29,x
دستور #define مقدار 0x29,x بصورت یک مقدار ثابت بهHID_UsageMax(x) اختصاص میده که احتمالاً HID_UsageMax(x) باید یک ارایه باشه مقداربه عضو X ام اون داده شده
sharin
دوشنبه 29 اسفند 1390, 10:44 صبح
ممنونم ، اما هنوز يه جاي كار مي لنگه !!
نحوه ي استفاده اش رو ببينيد ...
در يه فايل هدر ، يه سري مقادير داريم كه اين ها هم جزئشون هستن.
.
.
.
#define HID_Usage(x) 0x09,x
#define HID_UsagePage(x) 0x05,x
.
.
.
#define HID_USAGE_PAGE_GENERIC 0x01
#define HID_USAGE_GENERIC_MOUSE 0x02
.
.
.
در فايل ديگري هم اينطوري استفاده شده ...
const BYTE HID_ReportDescriptor[] = {
HID_UsagePage(HID_USAGE_PAGE_GENERIC),
HID_Usage(HID_USAGE_GENERIC_MOUSE),...
}
با توجه به فرمش ، در واقع اين مقادير دارن به آرايه داده مي شن.
خود اين مقادير هم فرمشون [] نيست و () هست ...
نظرتون چيه ؟!
بازم ممنونم ...
sharin
دوشنبه 29 اسفند 1390, 15:41 عصر
فكر كنم فهميدم ، نظر شما چيه ...؟
در مطالبي كه در پست قبلي گذاشتم :
#define HID_USAGE_PAGE_GENERIC 0x01
و همينطور:
#define HID_UsagePage(x) 0x05,x
خوب اينجا اگر x=HID_USAGE_PAGE_GENERIC باشه ،پس x=0x01 خواهد بود.
در كد زير :
HID_UsagePage(HID_USAGE_PAGE_GENERIC)
اين تابع ورودي 0x01 رو مي گيره و پردازش تابع
HID_UsagePage(x)
به اين صورته كه مقدار X رو كه برابر 0x01 هست رو در كنار 0x05 كه يك مقدار ثابت هست قرار مي ده و حاصل مي شه 0x0501 كه 2 بايت هست.
اون BYTE كه در پست قبل بود هم همون unsigned char هست ( كد زير )
typedef unsigned char BYTE;
2 بايت = 2 بايت
اينجوري جور در مي ياد ، نظرتون چيه ؟
sharin
سه شنبه 01 فروردین 1391, 19:33 عصر
آهان ...
جالب بود ...
پس در برنامه ي بالا اگر در main كد زير رو داشته باشيم.
val=PRINT_ARGUMENT_TRIPLE(PRINT_ARGUMENT_DOUBLE);
در صورتي كه val دو بايت باشه ، حاصل مي شه ؟؟؟ ---> 0x0302
درسته؟ ( چون در مورد من همچين استفاده اي ازش شده )
sharin
سه شنبه 01 فروردین 1391, 23:43 عصر
ممنونم . بابت لينك ها هم ممنون .
مثال ها ، ديدم رو باز تر كرد و مثالها رو متوجه شدم ،اما موضوع اينه كه شما براي هر 2 مثالي كه زديد از يه تابع كه خودتون هم تعريف كرديد استفاده كرديد.
ولي در موردي كه باهاش برخورد كردم ( پست 3 ، حتما ببينيدش ) از تابع واسطي استفاده نشده ... ( پست 3 رو ببينيد متوجه مي شيد )
مي خوام بدونم مقادير خانه هاي اون آرايه با اين اوصاف چي مي شه ...
فقط همين رو بگيد كافيه، متوجه مي شم.( همون خانه ي 1 )
راستي كد زير:
#define TRUE (1)
چرا 1 رو توي ( ) گذاشته ؟
بازم ممنون از لطفتون.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.