View Full Version : گرفتن اطلاعات از اسلات PCI
NewFoxStudent
دوشنبه 14 مرداد 1387, 11:43 صبح
چجوری آدرس شکاف PCI رو پیدا کنم و اطلاعات رو ازش بخونم
NewFoxStudent
سه شنبه 15 مرداد 1387, 12:32 عصر
کمک کنید
من خیلی تحقیق کردم ولی به نتیجه نرسیدم
سعید حمیدیانفر
چهارشنبه 16 مرداد 1387, 08:36 صبح
ميشه در مورد كاري كه دارين يه كم بيشتر توضيح بدين ؟
NewFoxStudent
چهارشنبه 16 مرداد 1387, 10:56 صبح
من یه کارت pci دارم که یه سری اطلاعات میفرسته
این کارت یه نرم افزار هم داره که اطلاعات رو در اختیار کاربر قرار میده
حالا میخوام یه برنامه بنویسم که با این کارت کار کنه و دیگه از نرم افزار خودش استفاده نکنم
kia1349
چهارشنبه 16 مرداد 1387, 19:20 عصر
خوب حتما باید شرکت سازنده یه کامپوننتی رو در اختیارت بزاره تا بتونی این کارو بکنی.این که خیلی واضحه
NewFoxStudent
پنج شنبه 17 مرداد 1387, 09:09 صبح
یعنی هیچ راه دیگه ای نداره
فرض کنید کارت من یه کارت Intel Dialogic که برای مقاصد زیادی استفاده میشه
شرکت سازنده این کارت هیچ کامپوننت و حتی درایوری برای این کارت نساخته
برای نصب این کارت روی سیستم باید درایور اصلیش رو جداگانه و از شرکتهای دیگه ای خریداری کرد
برای کار با اون هم هیچ dll یا ocx هم وجود نداره
اما من برنامه ای رو سراغ دارم که با استفاده از این کارت کالر آی دی رو بدست میاره و دریافت و ارسال فکس هم انجام میده و کلی کار دیگه که همش با زبان سی نوشته شده و کاملا فارسی هم هست
این برنامه فقط از ابزارهای ویندوز استفاده میکنه
mn3250
پنج شنبه 17 مرداد 1387, 11:18 صبح
یعنی هیچ راه دیگه ای نداره
فرض کنید کارت من یه کارت Intel Dialogic که برای مقاصد زیادی استفاده میشه
شرکت سازنده این کارت هیچ کامپوننت و حتی درایوری برای این کارت نساخته
برای نصب این کارت روی سیستم باید درایور اصلیش رو جداگانه و از شرکتهای دیگه ای خریداری کرد
برای کار با اون هم هیچ dll یا ocx هم وجود نداره
اما من برنامه ای رو سراغ دارم که با استفاده از این کارت کالر آی دی رو بدست میاره و دریافت و ارسال فکس هم انجام میده و کلی کار دیگه که همش با زبان سی نوشته شده و کاملا فارسی هم هست
این برنامه فقط از ابزارهای ویندوز استفاده میکنه
اتفاقا اینتل مستندات و حتی نمونه کد (سی شارپ و ...) برای Dialogic زیاد داره. من البته تحت فاکس استفاده نکردم اما کلی کد برای مطالعه هست. سری به سایت اینتل بزنید.
NewFoxStudent
شنبه 19 مرداد 1387, 14:05 عصر
بله مستندات و نمونه کد داره اما درایور و کامپوننت نداره
نمونه کدهاشم دیدم
اما راجع به کاری که من میخوام انجام بدم هیچ نمونه کدی وجود نداره
اول تاپیک گفتم که خیلی تحقیق کردم
کاری که میخوام انجام بدم دقیقا اینه که میخوام کالر آیدی رو از این کارت بگیرم
یه سری توابع TAPI هست که باید برای این کارت تعریف بشه وقتی این توابع تعریف میشه
میتونیم از این کارت به عنوان مودم استفاده کنیم
اما کامپوننت Comm خود ویندوز این کارت رو نمیشناسه
من کلی سوال پرسیدم و از جوابهای به دست اومده اینجور متوجه شدم که باید اطلاعات رو به طور مستقیم از خود کارت بگیرم
با توجه به این که این کار رو قبلا کس دیگه ای انجام داده پس مطمئنا میشه این کار رو انجام داد
بعلاوه اینکه من میخوام راه ارتباط با PCI رو یاد بگیرم
از همه اساتید متشکرم
NewFoxStudent
شنبه 19 مرداد 1387, 14:09 عصر
توی زبان سی توابع زیادی برای این کار وجود داره Inp_ inpw و توابع دیگر
این توابع یه پارامتر آدرس پورت میگیرند و اطلاعات رو از اون آدرس میخونند
اگه میشه راجع به این پارامتر توضیح بدین
اگه بدونم این آدرس از کجا بدست میاد مشکلم حل میشه
rezaTavak
یک شنبه 20 مرداد 1387, 08:25 صبح
همه توابع سی در فاکس قابل استفادهاند قبلا راجع به آن یک تاپیک زدهام و توضیح داده ام که msvcr7.dll توابع سی در آن است. تابع خاصی مد نظر است بفرمایید شاید کمکی از دستم بر آید.
NewFoxStudent
یک شنبه 20 مرداد 1387, 10:48 صبح
بله اگه لطف کنید
inp(unsigned portid)
inportb(unsigned portid)
inpw(unsigned portid)
inport(unsigned portid)
راجع به هر کدوم از توابع ذکر شده و اگه امکان داره تفاوت این توابع با هم توضیح بدید ممنون میشم
rezaTavak
دوشنبه 21 مرداد 1387, 12:23 عصر
راستش خیلی روی اینها کار کردم اما ظاهرا یه مشکلی هست که جواب نمیده.
بهتره با ویژوال سی یک DLL بسازید و آنرا در فاکس استفاده کنید البته چون من سالهاست دیگه سی کار نکرده ام نمیتوانم خوب کمک کنم.
NewFoxStudent
دوشنبه 21 مرداد 1387, 14:30 عصر
از وقتی که گذاشتید واقعا ممنونم
مهم نیست که بشه از اینها در فاکس استفاده کرد
طریقه استفاده از این توابع در سی هم برای من کافیه
اگه بدونم که در زبان سی به جای پارامتر Portid چه عددی باید قرار بدم مشکلم حل میشه
و اینکه مقداری که این توابع برمیگردونند چی هست و چجوری باید ازشون استفاده کرد
NewFoxStudent
دوشنبه 21 مرداد 1387, 14:34 عصر
من سوالم رو دوباره مطرح می کنم
من میدونم که تابع inp(portid ) یک بایت اطلاعات رو از پورتی که با پارامتر portid براش مشخص میشه میخونه.اگه این پارامتر رو برابر با صفر قرار بدیم یعنی پورت سریال
حالا این پارامتر باید چه عددی باشه تا این تابع از پورت موازی اطلاعات رو بخونه
rezaTavak
سه شنبه 22 مرداد 1387, 08:34 صبح
نه شماره پورت اونی نیست که شما در مورد پورت موازی و سریال میدونید. در واقع سی پی پو برای ارتباط با هر دستگاهی مانند ساعت، رم، هارد و... روی یک پورت مخصوص به خود اطلاعات رد و بدل میکند. همین پورت سریال و موازی هم دارای عددی هستند.
این عدد یک عدد بین ۰ تا ۶۵۰۰۰۰ است. مثلا پورت CMOS عدد ۷۰ و ۷۱ است که یکی برای نوشتن و دیگری برای خواندن است.
این دستورات معادل IN و OUT در اسمبلی هستند.
b یعنی بایت و w یک کلمه یا دو بایت در این دستورات معنی میدهد.
http://msdn.microsoft.com/en-us/library/aa272068(VS.60).aspx
کل تابعهای مرتبط است.
این یک راهنما:
http://www.eecs.wsu.edu/~cs460/serial.html
البته چون این کار من نیست بیشتر نمیتونم کمک کنم.
NewFoxStudent
سه شنبه 22 مرداد 1387, 08:43 صبح
واقعا از کمکتون ممنونم
من جواب سوالم رو گرفتم
یک عدد بین 0 تا 650000
که البته باید به مبنای 16 تبدیل بشه و بعد در تابع inp() استفاده بشه
هروقت کارت pci اطلاعاتی رو از خارج دریافت کنه اون رو روی یک آدرس رندوم به پردازنده میفرسته در واقع پردازنده اون اطلاعات رو میخونه
من تونستم با وقفه های بایوس و توابع خواندن از پورت به اطلاعات خام موجود روی اسلات pci دست پیدا کنم
آقای توکل واقعا از راهنماییتون و وقتی که گذاشتید ممنونم.
نمیدونم چطور ازتون تشکر کنم
delphifan
یک شنبه 24 شهریور 1387, 08:12 صبح
سلام
آقا من دقیقا همین مشکل را در دلفی دارم اگر کامپوننتی پیدا کردید و یا یک راه حل لطفا جوابشو اینجا بگذارید. ممنون
NewFoxStudent
یک شنبه 24 شهریور 1387, 12:26 عصر
واقعا از کمکتون ممنونم
من جواب سوالم رو گرفتم
یک عدد بین 0 تا 650000
که البته باید به مبنای 16 تبدیل بشه و بعد در تابع inp() استفاده بشه
هروقت کارت pci اطلاعاتی رو از خارج دریافت کنه اون رو روی یک آدرس رندوم به پردازنده میفرسته در واقع پردازنده اون اطلاعات رو میخونه
من تونستم با وقفه های بایوس و توابع خواندن از پورت به اطلاعات خام موجود روی اسلات pci دست پیدا کنم
آقای توکل واقعا از راهنماییتون و وقتی که گذاشتید ممنونم.
نمیدونم چطور ازتون تشکر کنم
به این جملات توجه کنید
کامپوننتی در این رابطه وجود نداره
چون هر کارت سخت افزاری روش کدینگ و ICDecoder مربوط به خودش رو داره
بنابر این کامپوننت مربوط به خودش رو هم داره و این کامپوننت تنها در اختیار سازنده کارت هست
ب- تات
جمعه 16 بهمن 1388, 23:19 عصر
یک عدد بین 0 تا 650000
که البته باید به مبنای 16 تبدیل بشه و بعد در تابع inp() استفاده بشه
هروقت کارت pci اطلاعاتی رو از خارج دریافت کنه اون رو روی یک آدرس رندوم به پردازنده میفرسته در واقع پردازنده اون اطلاعات رو میخونه
من تونستم با وقفه های بایوس و توابع خواندن از پورت به اطلاعات خام موجود روی اسلات pci دست پیدا کنم
اول از اينكه تاريخ تاپيك قديمي عذر ميخوام.
دوست گرامي من با دلفي بطور عملي اطلاعات رو از COM مي خونم و ميفرستم سخت افزارم هم mega32 كارش رو بخوبي انجام ميده.
حالا ميخوام براي استفاده بهتر از منابع و سرعت ، اطلاعات رو از طريق اسلت pci به ميكرو برسونم . با توجه به موفقيت شما، اول چطور ميتوانم جاي com اسلت pci رو از كارتي كه براي ارتباط با بيرون طراحي شده ارتباط برقرار كنم؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.