PDA

View Full Version : ساخت تلفن گویا به زبان ساده



soheil_1367
سه شنبه 14 اردیبهشت 1389, 18:36 عصر
سلام دوستان من حدود 1 ماه که دارم دنبال تلفن گویا میگردم هر مطلبی که میرم دوستان نوشتن که مطلب هزار بار تکرار شده ولی من که مطلب مفیدی پیدا نکردم از دوستان خواهش میکنم تو این تاپیک به زبان ساده توضیح بدید که باید چیکار کنم شاید خیلی از دوستان هم این مشکل رو داشته باشند

hpanahpour
پنج شنبه 16 اردیبهشت 1389, 19:45 عصر
سلام
ميشه خواهش كنم منظورتون رو از تلفن گويا واضح تر بيان كنيد

soheil_1367
پنج شنبه 16 اردیبهشت 1389, 19:53 عصر
منظورم اینه که وقتی یکی زنگ زد یه آهنگی پخش بشه بعدش شماره هایی رو که زد بشه مانیتورینگ کرد و بسته به عددش یه آهنگ دیگه پخش بشه

mohammad kafiyan
پنج شنبه 16 اردیبهشت 1389, 23:33 عصر
سلام soheil_1367 من هم خودم یک چند وقتی دنبالش بودم و در تایپیک ها دنبالش گشتم ولی چیزی پیدا نکردم اگر کسی در این زمینه کار کرده کمک کنه

soheil_1367
جمعه 17 اردیبهشت 1389, 10:59 صبح
آخه تو همه تاپیک ها نوشتن باید از کامپوننت استفاده کنی ولی یکی نه کامپوننت رو گذاشته نه توضیح داده باید چه جوری ازش استفاده کنیم

amirghazali
شنبه 18 اردیبهشت 1389, 12:42 عصر
باسلام به همه دوستان و اساتید محترم
این موضوع ساخت نرم افزارهای تحت عنوان تلفن گویا ( کالر آی دی) خیلی داره تکراری می شه . بنظر این حقیر استفاده از کامپوننت های آماده که خیلی هاشون با خطوط مخابراتی ما در ایران جواب نمیدند و نیز نیازمند به مودم های خاص هستند چیز جالبی نیست.
من خودم این راهکار را به دوستان پیشنهاد می دهم چون خودم جواب گرفتم و خیلی هم هزینه بر نیست :
1- طراحی و ساخت یک ماژول سخت افزاری ( با یک سرچ کوچیک تو اینترنت و یا سایت Eca.ir می تونید گیر بیارید ) که بتونه با استفاده از میکروکنترلر و مدار واسط نمایش کالر آی دی شماره تلفن تماس گیرنده را به سیستم با استفاده از پورت سریال(ترجیحا) و یا USB بفرسته .
2 - نوشتن یک سرویس ساده برای کنترل سخت افزار و اینکه اطلاعات دریافتی را پردازش کنه ( که تو زبانهای دات نت کار خیلی راحتی هستش)
نکته برای اونهایی که فکر کار کردن با USB اذیتشون می کنه اینه که نیاز نیست اطلاعات جامعی درباره اون داشته باشند( که اگه داشته باشند بهتره) ، فقط کافیه یه مبدل سریال به USB بخرند و از طریق پورت سریال مجازی که به لیست COM های سیستم اضافه میشه کارخود را تکمیل کنند .
با تشکر

amirghazali
شنبه 18 اردیبهشت 1389, 12:49 عصر
با سلام مجدد با دوستان
یک نکته یادم اومد ، اگه منظور شما صرف تلفن گویا ( سیستمی که پس از تماس از طرف شخص تماسگیرنده بتونه یک سری جوابگویی هایی را انجام بده ) باید عرض کنم که این نیز خود نیاز به یک سخت افزار اولیه داره که مثلا پس از 5 بار زنگ خوردن تلفن یک کامند را به سیستم کامپیوتری ارسال کنه و بعدش نرم افزار نسبت به نوع درخواست ( که از طرف شخص تماسگیرنده با فشار دادن یکی از شماره های تلفن اتفاق می افته) ، پیغام و یا فرایند مورد نظر را انجام بدهد .
نکته در اینجاست که قالب این سیستم ها به استفاده از خطوط Tone کار می کنند چون آس سی دیکدری که این کار را انجام می دهد باید ورودیش سیگنال Tone باشه .
با تشکر از توجه شما .

reza_rajabi
شنبه 18 اردیبهشت 1389, 16:21 عصر
سلام دوستان من حدود 1 ماه که دارم دنبال تلفن گویا میگردم هر مطلبی که میرم دوستان نوشتن که مطلب هزار بار تکرار شده ولی من که مطلب مفیدی پیدا نکردم از دوستان خواهش میکنم تو این تاپیک به زبان ساده توضیح بدید که باید چیکار کنم شاید خیلی از دوستان هم این مشکل رو داشته باشند

برای ساختن تلفن گویا راههای مختلفی هستش، سریعترین راه استفاده از کامپوننت KDTele 3.5 هستش. برای دریافت لینک کرک، پیام خصوصی بزنید
...
ٍویرایش توسط مدیر انجمن (No Warez Activity)
...

فقط مشکله عمده ایی که با استفاده از این کامپوننت می تونه برات پیش بیاد نمایش CallerID یا استفاده از چند خط تلفن بصورت همزمان هستش.

daryasalar
شنبه 18 اردیبهشت 1389, 17:17 عصر
با سلام.در اين وبلاگ ميتونيد مطالب اوليه براي شروع اما مفيدي پيدا كنيد از كامپوننت kdtele استفاده كرده.http://mojtabagholampoor.parsiblog.com/Archive46486.htm

peikesms123
شنبه 18 اردیبهشت 1389, 17:19 عصر
سلام بچه ها خسته نباشید.
درباره این کارتون باید بگم که من خودم قبلآ دنبال این کار بودم. تو اینترنت جستجو کردم تونستم نمونه برنامه های زیادی پیدا کنم، با سورس کد. البته همشون نسخه تریال بودن، کرک هم براشون پیدا کردم و کار من هم راه انداختن. ولی راستشو بخواید خودم دوست داشتم یه کامپوننت بنویسم که این کارو بکنه.
دنبالش گشتم یه چیزایی هم پیدا کردم ولی تنهایی سخته. فقط اینو بدونید که از دستورات AT-Command استفاده کنید. اگه بلد بودید و پایه بودید بگید که با هم ادامه بدیم.

soheil_1367
شنبه 18 اردیبهشت 1389, 17:48 عصر
سلام بچه ها خسته نباشید.
درباره این کارتون باید بگم که من خودم قبلآ دنبال این کار بودم. تو اینترنت جستجو کردم تونستم نمونه برنامه های زیادی پیدا کنم، با سورس کد. البته همشون نسخه تریال بودن، کرک هم براشون پیدا کردم و کار من هم راه انداختن. ولی راستشو بخواید خودم دوست داشتم یه کامپوننت بنویسم که این کارو بکنه.
دنبالش گشتم یه چیزایی هم پیدا کردم ولی تنهایی سخته. فقط اینو بدونید که از دستورات AT-Command استفاده کنید. اگه بلد بودید و پایه بودید بگید که با هم ادامه بدیم.

من که پایم . اولیش رو هم خودم میگم : "AT+VCID=1" با این دستور میشه شماره ی طرف رو بدست آورد

ztx4
شنبه 18 اردیبهشت 1389, 22:28 عصر
من که پایم . اولیش رو هم خودم میگم : "AT+VCID=1" با این دستور میشه شماره ی طرف رو بدست آورد

صبر کنید!!!
قدم به قدم برید تا ما هم برسیم بهتون
این دستور چیه؟
کجا باید نوشته بشه؟
به چه زبانی هست؟
مال میکرو هست یا ویژوال استدیو؟

soheil_1367
شنبه 18 اردیبهشت 1389, 23:07 عصر
دوست عزیز اولین کاری که می کنی اینه که این دستور رو که گفتم تو هایپرترمینال بزن اگه جواب ok داد به اون خط یه زنگ بزن باید شماره رو نشون بده اگه نه دو احتمال هست یک اینکه مودم شما Caller ID ساپورت نمی کنه و دو اینکه برای مودم شما باید از دستور دیگه ای استفاده بشه من یک مثال هم برای شما نوشتم که می تونید اون رو دانلود کنید و استفاده کنید . اگه بازم مشکلی بود بگید تا راهنماییتون کنم . در ضمن یه نکته هم فراموش نشه که تو این مثالی که من نوشتم مودم به پورت 3 وصل بود ممکنه در دستگاه شما به پورت دیگه ای وصل باشه ولی در اکثر دستگاه ها پورت 3 می باشد .

soheil_1367
یک شنبه 19 اردیبهشت 1389, 13:46 عصر
پس چی شد ؟؟ چرا کسی حرفی نمی زنه ؟؟؟

behnam25214
یک شنبه 19 اردیبهشت 1389, 16:58 عصر
من با com1 وصل شدم اجرا هم شد ولی وقتی تماس میگرم با تلفن خونه چیزی نشون نمیده.:متفکر:

soheil_1367
یک شنبه 19 اردیبهشت 1389, 17:08 عصر
من با com1 وصل شدم اجرا هم شد ولی وقتی تماس میگرم با تلفن خونه چیزی نشون نمیده.:متفکر:
تو هایپرترمینال نشون داد یا نه ؟؟؟

peikesms123
دوشنبه 20 اردیبهشت 1389, 10:24 صبح
من که پایم . اولیش رو هم خودم میگم : "AT+VCID=1" با این دستور میشه شماره ی طرف رو بدست آورد
سلام
به نظر شما این دستور اول بود.
چرا همیشه عجله میکنیم. ما هنوز دستورات اولیه رو بلد نیستیم.بهتر نیست گروهی کار کنیم.من خودم دستورات زیادی بلدم.ولی اگه مایل باشید روزی از چند تا از دستورات با هم کار کنیم هر کسی روی این دستورا کار کنه نتیجه هم به بقیه بده البته یه سری از دستورات که پیش و پا افتاده‎اند. اگه موافقید بگید که شروع کینم.
البته اگه میگم گروهی کار کنیم برای اینه که سریع تر میشه به هدف رسید. مودم‎های زیادی در بازار هست که همه این دستورات رو پشتیبانی نمیکنن و همچنین در بعضی از منطقه های شهری نیز کالر آی دی پشتیبانی نمیشه

ztx4
دوشنبه 20 اردیبهشت 1389, 11:25 صبح
دوست عزیز اولین کاری که می کنی اینه که این دستور رو که گفتم تو هایپرترمینال بزن اگه جواب ok داد به اون خط یه زنگ بزن باید شماره رو نشون بده اگه نه دو احتمال هست یک اینکه مودم شما Caller ID ساپورت نمی کنه و دو اینکه برای مودم شما باید از دستور دیگه ای استفاده بشه من یک مثال هم برای شما نوشتم که می تونید اون رو دانلود کنید و استفاده کنید . اگه بازم مشکلی بود بگید تا راهنماییتون کنم . در ضمن یه نکته هم فراموش نشه که تو این مثالی که من نوشتم مودم به پورت 3 وصل بود ممکنه در دستگاه شما به پورت دیگه ای وصل باشه ولی در اکثر دستگاه ها پورت 3 می باشد .

والا دوستان من اولین تجربه ام با هایپر ترمینال اینجاست.
اصلا نمی دونم دستورات رو تو کجا بنویسم.
همون صفحه ی اول که میاد که اجازه ی تایپ نمی ده.
لطفا راهنمایی کنید.


سلام
به نظر شما این دستور اول بود.
چرا همیشه عجله میکنیم. ما هنوز دستورات اولیه رو بلد نیستیم.بهتر نیست گروهی کار کنیم.من خودم دستورات زیادی بلدم.ولی اگه مایل باشید روزی از چند تا از دستورات با هم کار کنیم هر کسی روی این دستورا کار کنه نتیجه هم به بقیه بده البته یه سری از دستورات که پیش و پا افتاده‎اند. اگه موافقید بگید که شروع کینم.
البته اگه میگم گروهی کار کنیم برای اینه که سریع تر میشه به هدف رسید. مودم‎های زیادی در بازار هست که همه این دستورات رو پشتیبانی نمیکنن و همچنین در بعضی از منطقه های شهری نیز کالر آی دی پشتیبانی نمیشه

دوست عزیز من با شما موافقم.
همه که در یک سطح نیستند.
راستش رو بخواهید من هیچی در مورد هایپرترمینال نمی دونم.
بهتره که دوستان لطف کنند قدم به قدم پیش برند تا امثال من هم بتونیم استفاده کنیم.
این طوری یک تاپیک ارزشمند خواهیم داشت
با تشکر

peikesms123
دوشنبه 20 اردیبهشت 1389, 11:53 صبح
برای کار با پورت ها شما احتیاج به یک برنامه دارید اگر بتونید تو سی شارپ با سریال پورت کار کنید که دوست عزیزمون نمونه برنامه گذاشته و گرنه که میتونید از برنامه هایپرترمینال استفاده کنید.برای اجرای این برنامه به مسیر زیر بروید.
Start->All Programs->Accessories->Communications->HyperTerminal
وقتی که برنامه باز شد از شما یک اسم برای کانکشن میخواد. هر اسمی که دوست دارید وارد کنید. در پنجره Connect To باید از قسمت Connect Using پورت مودم خود را انتخاب کنید. توجه کنید که اگر خود مودم را انتخاب کنید وارد قسمت تماس میشوید.
(برای بدست آوردن پورت مودم هم میتونید به Control Panel بروید. اگه در حالت کلاسیک باشید به قسمت Phone and Modem Options رفته سپس سربرگ دوم یعنی Modems را باز کنید. داخل این قسمت لیست تمامی مودم ها با پورت اتصال وجود دارد.)
بعد از انتخاب پورت پنجره تنظیمات ظاهر میشود که آن را به صورت پیش فرض باقی میگذاریم. بعد از زدن دکمه OK اتصال به مودم انجام میشود که در صورت موفق بودن در قسمت پایین پنجره هایپر ترمینال عبارت
Connected 00:00:05
را مشاهده میکنید البته با افزایش تایمر:چشمک:
خوب تا اینجا فقط به مودم وصل شدیم. اولین دستور AT-Command را اجرا میکنیم. کلمه AT را تایپ کرده سپس کلید Enter را بزنید اگر مودم شما از دستورات AT-Command پشتیبانی کند یک پاسخ با محتوا OK به شما نمایش میدهد(که %100 هم این کار انجام میشود)
تا اینجا را انجام بدهید. اگه مشکلی بود بگید. کسایی هم که بیشتر بلدن بگن که ما هم استفاده کنیم.

soheil_1367
دوشنبه 20 اردیبهشت 1389, 12:38 عصر
والا منم زیاد بلد نیستم . از دستورات AT-Command همین یکی رو بلد بودم که نوشتم . باشه از این به بعدم همه باهم پیش می ریم . راستی یه دستور دیگه هم یادم اومد که وقتی یکم همگی راه افتادیم می گم .

peikesms123
دوشنبه 20 اردیبهشت 1389, 17:25 عصر
خوب کسی نیومده که اعلام آمادگی کنه.
ولی همین چند نفری که هستیم بسه. من چند تا از دستورات را میگم البته کارایی همرو هم بلدم ولی شما هم ببینید تا بتونید تو دستورات پیشرفته تر کمکم کنید.

ATA: این دستور برای پاسخ دادن به تماس تلفنی هست. زمانی که شما با استفاده از هایپرترمینال به پورت متصل میشوید اگر با شماره خودتون تماس بگیرید پیغام Ring برای شما نمایش داده میشود. که اگر بخواهید تماس را جواب دهید از دستور ATA استفاده میکنید.

ATH: این دستور درست برعکس دستور بالا عمل میکند. یعنی اگر شما با استفاده از دستور بالا به تماس پاسخ دادید می توانید از دستور ATH برای قطع تماس استفاده کنید.

ATD09186010000: این دستور برای ایجاد تماس با یک شماره است که در اینجا تماس با شماره مجازی 09186010000 برقرار میشود.

/A: برای تکرار کردن دستور که قبل از این دستور وارد کردیم به کار میرود. توجه کنید درسته که من این دستور رو بعد از دستور ATD (ایجاد تماس) گفتم. ولی این به این معنا نیست که این دستور همون کاریو میکنه که دکمه ReDial/تکرار تلفن معمولی انجام میدهد. بلکه این دستور برای تمام دستوراتی که قبلآ استفاده شده‎اند به کار می روند. برای اینکه گیج نشید یه مثال میزنم. اگه شما در هایپر ترمینال با استفاده از دستور ATA به یک تماس پاسخ دهید. بعد از اتمام مکالمه با زدن دستور /A، دوباره دستور ATA اجرا میشود.
تا اینجا کافیه. دوباره تاکید میکنم عجله نکنید. امکان داره دقیق اون کارایی که میخوایم انجام بدیم با این دستورات انجام نشه. اینم بدونید که دستورات AT-Command خیلی زیاد هستن و کارای خیلی زیادی میشه انجام داد.

soheil_1367
دوشنبه 20 اردیبهشت 1389, 18:52 عصر
دوست عزیز کارت خیلی عالی بود فکر کنم اگه این تاپیک همین جوری پیش بره می تونیم به نتایج فوق العاده ای برسیم .

x man 1367
دوشنبه 20 اردیبهشت 1389, 22:22 عصر
سلام کسی هست که بدونه چطور باید یه تلفن دیجیتال درست کرد؟ که بشه با اون تماس گرفت و همچنین تماس های دیگران رو هم پاسخ داد

ztx4
دوشنبه 20 اردیبهشت 1389, 22:52 عصر
برای کار با پورت ها شما احتیاج به یک برنامه دارید اگر بتونید تو سی شارپ با سریال پورت کار کنید که دوست عزیزمون نمونه برنامه گذاشته و گرنه که میتونید از برنامه هایپرترمینال استفاده کنید.برای اجرای این برنامه به مسیر زیر بروید.
Start->All Programs->Accessories->Communications->HyperTerminal
وقتی که برنامه باز شد از شما یک اسم برای کانکشن میخواد. هر اسمی که دوست دارید وارد کنید. در پنجره Connect To باید از قسمت Connect Using پورت مودم خود را انتخاب کنید. توجه کنید که اگر خود مودم را انتخاب کنید وارد قسمت تماس میشوید.
(برای بدست آوردن پورت مودم هم میتونید به Control Panel بروید. اگه در حالت کلاسیک باشید به قسمت Phone and Modem Options رفته سپس سربرگ دوم یعنی Modems را باز کنید. داخل این قسمت لیست تمامی مودم ها با پورت اتصال وجود دارد.)
بعد از انتخاب پورت پنجره تنظیمات ظاهر میشود که آن را به صورت پیش فرض باقی میگذاریم. بعد از زدن دکمه OK اتصال به مودم انجام میشود که در صورت موفق بودن در قسمت پایین پنجره هایپر ترمینال عبارت
Connected 00:00:05
را مشاهده میکنید البته با افزایش تایمر:چشمک:
خوب تا اینجا فقط به مودم وصل شدیم. اولین دستور AT-Command را اجرا میکنیم. کلمه AT را تایپ کرده سپس کلید Enter را بزنید اگر مودم شما از دستورات AT-Command پشتیبانی کند یک پاسخ با محتوا OK به شما نمایش میدهد(که %100 هم این کار انجام میشود)
تا اینجا را انجام بدهید. اگه مشکلی بود بگید. کسایی هم که بیشتر بلدن بگن که ما هم استفاده کنیم.

دوست عزیز
مممنون از راهنماییت.من تونستم دستورات رو وارد کنم.
اما یک مشکل وجود داره و اون اینه که بعد از وارد کردن دستوری که فرمودید پیغام Error برگردونده می شه.
این یعنی چی؟
من باید چی کار کنم؟

soheil_1367
دوشنبه 20 اردیبهشت 1389, 23:26 عصر
دوست عزیز
مممنون از راهنماییت.من تونستم دستورات رو وارد کنم.
اما یک مشکل وجود داره و اون اینه که بعد از وارد کردن دستوری که فرمودید پیغام Error برگردونده می شه.
این یعنی چی؟
من باید چی کار کنم؟
مدل مودمتون چیه ؟؟

ztx4
سه شنبه 21 اردیبهشت 1389, 10:38 صبح
مدل مودمتون چیه ؟؟

Zoltrix از این 3 چیپ هاست.
چه طور؟

soheil_1367
سه شنبه 21 اردیبهشت 1389, 11:58 صبح
منم zoltrix دارم ولی مشکلی ندارم . پورت مودم رو درست انتخاب کردید ؟

amirghazali
سه شنبه 21 اردیبهشت 1389, 13:27 عصر
باسلام.
این چند تا مثال نحوه کار کردن با برخی از این کامپوننت های آماده هستش. شاید که به درد دوستان بخوره چون می بینم که خیلی تاکید به استفاده از ابزارهای نرم افزاری برای این کار دارید ولی همانطور که در پست قبلی هم گفتم ، راهکار طراحی سخت افزار واسط بهترین هستش .

ztx4
سه شنبه 21 اردیبهشت 1389, 23:18 عصر
منم zoltrix دارم ولی مشکلی ندارم . پورت مودم رو درست انتخاب کردید ؟


بله.
در کنترل پنل چک کردم.پورت com3 بود.

soheil_1367
سه شنبه 21 اردیبهشت 1389, 23:25 عصر
نمی دونم والا . از دوستان کسی نیست کمک ztx4 (http://barnamenevis.org/forum/member.php?u=121632) کنه ؟؟

peikesms123
چهارشنبه 22 اردیبهشت 1389, 11:51 صبح
دوست عزیز
مممنون از راهنماییت.من تونستم دستورات رو وارد کنم.
اما یک مشکل وجود داره و اون اینه که بعد از وارد کردن دستوری که فرمودید پیغام Error برگردونده می شه.
این یعنی چی؟
من باید چی کار کنم؟

سلام
من که همین جوری نمیتونم بگم این Error برای چی هست. چون مودم شما Zolterix 3Chip هست پس نباید مشکلی با دستورات AT داشته باشه.
از این به بعد به جای تایپ کامل "دستورات AT-Command" فقط از کلمه "دستورات" استفاده می‎کنیم.

ATP: نحوه شماره گیری را به حالت پالس تغییر میدهد.

ATDP09186010000: تماس با یک شماره به صورت پالس.

ATT: نحوه شماره گیری را به حالت تن تغییر میدهد.


ATDT09186010000: تماس با یک شماره به صورت تن.

ATDL: تکرار شماره قبلی. همان دکمه ReDial/تکرار تلفن.

amirghazali
چهارشنبه 22 اردیبهشت 1389, 19:34 عصر
سلام.
این فایل را ببینید. می تونه یه کمی به شما کمک کنه .

soheil_1367
جمعه 24 اردیبهشت 1389, 23:46 عصر
از تاپیک خیلی خوب استقبال شده ولی دوستان حرفه ای کم شرکت می کنند

peikesms123
شنبه 25 اردیبهشت 1389, 20:22 عصر
سلام کسی دیگه نیست که کمک کنه دیگه داریم میرسیم به جاهای سختش.

!ATD: قطع کردن تماس، همان کاری که دکمه Flash در گوشی تلفن انجام میدهد. که مقدار زمان قطع کردن آن را میتوان تغییر داد. که خارج از بحث این دستورات است.

ATDW: انتظار برای شنیدن بوق آزاد.

ََATDT0918,601,00,00: برای هر کاما یک ثانیه ایست.

soheil_1367
یک شنبه 26 اردیبهشت 1389, 23:00 عصر
چرا کسی شرکت نمی کنه ؟؟؟

# = ATS0 : به جای علامت # می توان عدد قرار داد که پس از آن تعداد زنگ به صورت اتوماتیک به تماس پاسخ داده شود . به عنوان مثال اگر دستور "ATS0 = 2" زده شود در صورتی که با خط تماس بگیرید پس از 2 بار زنگ خوردن به تماس جواب داده می شود . اگر عدد صفر زده شود حالت پاسخ اتوماتیک از بین می رود .

AT&F : تنظیمات مودم را به حالت کارخانه ای بر می گرداند .

hojjatshariffam
دوشنبه 27 اردیبهشت 1389, 01:10 صبح
چرا کسی شرکت نمی کنه ؟؟؟

.
من که دارم استفاده می کنم
تا حالا با مودم کار نکردم ولی امید وار شدم که یک امکان جدید پاسخگوئی اتوماتیک به برنامه هام اضافه کنم .
بچه ها واقعا ممنون از اطلاعاتی که بهم می دین
مرسی

HAMRAHSOFT.IR
دوشنبه 27 اردیبهشت 1389, 09:22 صبح
این لینکم (http://barnamenevis.org/forum/showthread.php?t=204969) پیرو همین برنامه و مکمل اون هست .نوشتن تلفن گویا کاری سخت نیست اول باید کامپونت اصلی را تهیه کنید تا تمتم امکانت در اختیار داشته باشید

soheil_1367
چهارشنبه 29 اردیبهشت 1389, 16:54 عصر
دوست عزیز ما می خواهیم خودمون با استفاده از دستورات AT-Command تلفن گویا بنویسیم

mohammad kafiyan
چهارشنبه 29 اردیبهشت 1389, 23:54 عصر
سلام به دوستان واقعا از دوستان باید تشکر کرد که واقعا در این زمینه ها شرکت می کنند و تجربه خودشان را در اختیار دیگران قرار می دهند
حال می خواستم بپرسم کسی تا به حال سامانه ای مانند تلفن گویا بانک پیاده سازی کرده
این سامانه را چگونه می توانیم بسازیم
در ضمن اگر دوستان می توانند این دستورات بگویند چگونه باید در C# نوشته شود

mohammad kafiyan
چهارشنبه 29 اردیبهشت 1389, 23:58 عصر
راستی یک سوال داشتم فراموش کردم بپرسم واین هست که وقتی تلفن شرکت زنگ می خورد شماره مورد نظر در یک textbox نمایش داده بشه آیا از بین این دستورات at-command دستوری وجود دارد که این قابلیت را داشته باشه

soheil_1367
پنج شنبه 30 اردیبهشت 1389, 13:10 عصر
گفتم که با دستور AT+VCID=1 میشه شماره طرف رو نشون داد اگه استفادشم بلد نیستی دوستان لطف کردن قرار دادن

soheil_1367
شنبه 01 خرداد 1389, 10:21 صبح
پس چرا کسی تو این تاپیک شرکت نمیکنه ؟؟؟

Saeed_m_Farid
شنبه 01 خرداد 1389, 12:24 عصر
سلام دوستان من حدود 1 ماه که دارم دنبال تلفن گویا میگردم هر مطلبی که میرم دوستان نوشتن که مطلب هزار بار تکرار شده ولی من که مطلب مفیدی پیدا نکردم از دوستان خواهش میکنم تو این تاپیک به زبان ساده توضیح بدید که باید چیکار کنم شاید خیلی از دوستان هم این مشکل رو داشته باشند


سلام soheil_1367 من هم خودم یک چند وقتی دنبالش بودم و در تایپیک ها دنبالش گشتم ولی چیزی پیدا نکردم اگر کسی در این زمینه کار کرده کمک کنه
سلام
بنده الان پست های شما رو دیدم و تعجب میکنم که چرا هیچکدوم چیزی پیدا نمی کنید!؟ اگه خود KDTELE یا ExceleTel رو تو فروم نمی تونید پیدا کنید، طبیعی هست چون Warez هست و قدغن! کافیه فارسی گوگل کنیدشون، هزار تا لینک صحیح و سالم براتون میاره. در مورد کد هم من که با یه جستجوی کوچک 10-20 تا مورد پیدا کردم ولی اونی که مطمئنم کار میکنه و خودم هم قدیما استفاده کردم این (http://www.barnamenevis.org/forum/showpost.php?p=810775&postcount=8)هست، بازم اگه سوالی بود حتماً درخدمتم.

ولی اگه اصرار دارید AT-Command بنویسید، Hyper که برنامه نویسی نشد، ویندوز خودش SDK داره و لازم نیست تا این حد low level کار کنید؛ دوستان علاقمند برای شروع میتونید لینک های زیر رو ببینید :

TAPI Quick Start (http://msdn.microsoft.com/en-us/library/ms734257%28VS.85%29.aspx)
TAPI 2.2 Reference (http://msdn.microsoft.com/en-us/library/ms737219%28VS.85%29.aspx)
Basic Telephony Services Reference (http://msdn.microsoft.com/en-us/library/ms737219%28VS.85%29.aspx)
بازم اگه احساس کردید، مشکلی هست و کلی گفتم با هم بریم جلو ...




سلام به دوستان واقعا از دوستان باید تشکر کرد که واقعا در این زمینه ها شرکت می کنند و تجربه خودشان را در اختیار دیگران قرار می دهند
حال می خواستم بپرسم کسی تا به حال سامانه ای مانند تلفن گویا بانک پیاده سازی کرده
این سامانه را چگونه می توانیم بسازیم
در ضمن اگر دوستان می توانند این دستورات بگویند چگونه باید در C#‎‎‎ نوشته شود
اینکار رو با مودم های معمولی و AT-Commands یا KDTELE و ... نمی کنن! معمولاً خطوط اونها E1 هست و اگه هم آنالوگ باشه کمتر از 10 تا خط نمیشه (و همونطورکه میدونید هیچکس با عقل سالم، واسه یه برنامه 10 تا مودم ردیف نمیکنه)، برای اینجور کارها مودم های (یا بهتر بگم Gateway) خاصی وجود داره API های خاص خودشون رو دارن و معمولاً SDK ها همراه کارت تحویل داده میشه، مثلاً کارتهای Dialogic، PIKA، Donjin و ...؛ البته دیگه الان همچین کارتها و SDK هایی هم استفاده نمیشه و طرف اگه مایه دار باشه یه گیت وی سیسکو، آلکاتل و ... (البته تو اینجا بیشتر پاناسونیک!) میخره که فقط باید کانفیگ بشن و یا کمی مقتصدترها (یا معتقدان به توسعه) با استریسک (و مشتقاتش مثل تریکس باکس، الستیکس، FreePBX و ...) همچین سیستم هایی رو راه میندازن که اپن سورس هستند و کارتهای CTI که Gateway های مخصوص این IP-PBX ها هستند، استفاده می کنند که بحثش طولانی و دنیایی واسه خودش هست که ما الان توش گیر افتادیم :لبخند: و فکر نمیکنم اینجا جای بحثش باشه (مدیرا دعوامون میکنن!)

Saeed_m_Farid
شنبه 01 خرداد 1389, 14:22 عصر
دوست عزیز ما می خواهیم خودمون با استفاده از دستورات AT-Command تلفن گویا بنویسیم




راستی یک سوال داشتم فراموش کردم بپرسم واین هست که وقتی تلفن شرکت زنگ می خورد شماره مورد نظر در یک textbox نمایش داده بشه آیا از بین این دستورات at-command دستوری وجود دارد که این قابلیت را داشته باشه
سهیل:
میدونم از بس این حرف رو گفتم، همه الان بهم ... میدن ولی واقعیت باید تکرار بشه؛ برای همچین کاری فقط داشتن اطلاعات برنامه نویسی در این زمینه کافی نیست، یعنی خیلی بعیده که یکی که فقط برنامه نویسی میدونه، بیاد یه پورت com باز کنه و دستورات AT رو بفرسته و منتظر جواب بشه و مکالمات رو مدیریت کنه و ...
علاوه بر نیاز به حداقل های پیش نیازهای مخابراتی، مشکلاتی مثل Memory leak، line handling و کدک ها و فرمت فایلهای صوتی و ... هست که بتدریج باهاشون آشنا میشید و حواهید دید که یاد گرفتن تمام دستورات AT کفایت نمیکنه و این تازه یه شروع هست برای نوشتن یک engine مخابراتی، که قبلاً نوشته شده و با اینکه نمیخوام امید شما رو نا امید کنم ولی پیشنهاد میکنم صرفاً جهت آشنایی با پروتکلهای AT مطالعه کنید و اگه میخواهید برنامه واقعی بنویسید، یکی از کامپوننت های ذکر شده رو انتخاب کنید؛ لطفاً نگید استعدادهای ما ... چون بحث توانایی یا سواد و شکوفا شدن نیست، این کار رو هیچ جا نمیکنن مگر اینکه از یک گروه حرفه ای درخواست تولید (توسعه) یک engine خاص بشه، که اونهم کار ماها نیست، چون بالاخره یه جایی memory leak یا مشکلات IRQ خواهیم داشت، که جدمون رو درمیارن! ضمناً این کار رو با C#‎ نمیکنن (لطفاً نزنید:افسرده:)، برای نمونه من اگه وقت شد، یه پست کامل برای گرفتن تماس Dialit براتون به MFC میذارم ببینید که چه مشقاتی باید تحمل کنید! ولی همین کار و خیلی بیشترش رو می تونید با ExceleTel TeleTools v3.7 با C#‎ به همین راحتی (http://www.exceletel.com/support/DevEnv/CSharpDotNet/index.htm) انجام بدین.

محمد:
AT-Commands برای این منظور طراحی نشدن، اینکه شما CallerID رو بگیرید و اون رو نمایش بدید، اولاً به فاکتورهای زیادی بستگی داره (که متاسفانه یکیش هم تنظیمات سالن دستگاه مخابرات برای خط شماست) و ازطرف دیگه باید از API هایی که محیط برنامه نویسی به شما میده استفاده کنید. اگه اصرار دارید با دستورات AT اینکار رو بکنید، بعد initial شدن خط، کالر آیدی معمولاً بین زنگ اول و دوم میاد (تو خطوط DTMF) و در خطوط FSK هم همینطوره ولی با تفاوت در نوع سیگنال :
http://voip-iran.com/forum/b6/caller-id-digium-openvox/?action=dlattach;attach=72;image


http://voip-iran.com/forum/b6/caller-id-digium-openvox/?action=dlattach;attach=74;image

من لیست دستورات AT برای مودم های V.90 یعنی (56K های قدیمی تر) رو واستون ضمیمه میکنم، برای تنظیم کالرآیدی میتونید از دستورات زیر استفاده کنید :



Command Options:
C#‎ID? Return the current setting (0, 1, or 2)
C#‎ID=? Return the message, “0-2”
C#‎ID=0 Disables Caller ID
C#‎ID=1 Enable formatted Caller ID reporting of SDM (Single Data Message) and MDM
(Multiple Data Message) packets.
C#‎ID=2 Enable unformatted Caller ID reporting.

Saeed_m_Farid
شنبه 01 خرداد 1389, 14:59 عصر
همونطورکه قول دادم، تو این پست سعی خواهیم کرد یه کلاس ساده برای تماس با بیرون از طریق کتابخانه TAPI ویندوز بنام TAPICOMM با مودم بنویسیم؛ لازم به ذکر هست که برای اینکه کار از این هم پیچیده تر نشه : این کد اصلاً تجاری نیست و مولتی ترد ساپورت نمیکنه و خیلی چیزای دیگه هم پشتیبانی نمیشه و فقط آموزشی هست :
ضمناً این کد توسط Nancy Winnick Cluts در نوامبر سال 1995 نوشته شده! که بتدریج اگه خواستید ادامه میدیم، چون کد به MFC هست من فقط کلاس رو مینویسم و بقیه رو اگه مدیرای این بخش اجازه بدن همینجا و درغیر اینصورت میریم تو بخش C ادامه میدیم، اگه دوستان علاقه ای به ادامه نداشتن هم که همینجا متوقف میشه :
class CTapiConnection
{

protected:
// This area contains the protected members of the CTapiConnection class.
DWORD m_dwNumDevs; // the number of line devices available
DWORD m_dwDeviceID; // the line device ID
DWORD m_dwRequestedID;
LONG m_lAsyncReply;

// BOOLEANS to handle reentrancy.
BOOL m_bShuttingDown;
BOOL m_bStoppingCall;
BOOL m_bInitializing;
BOOL m_bReplyReceived;
BOOL m_bTapiInUse; // whether TAPI is in use or not
BOOL m_bInitialized; // whether TAPI has been initialized

public:
// This area contains the public members of the CTapiConnection class.
HLINEAPP m_hLineApp; // the usage handle of this application for TAPI
HCALL m_hCall; // handle to the call
HLINE m_hLine; // handle to the open line
DWORD m_dwAPIVersion; // the API version
char m_szPhoneNumber[64]; // the phone number to call

protected:
// Here is where I put the protected (internal) functions.
BOOL ShutdownTAPI();
BOOL HandleLineErr(long lLineErr);
LPLINEDEVCAPS GetDeviceLine(DWORD *dwAPIVersion,
LPLINEDEVCAPS lpLineDevCaps);
LPLINEDEVCAPS MylineGetDevCaps(LPLINEDEVCAPS lpLineDevCaps,
DWORD dwDeviceID, DWORD dwAPIVersion);
LPVOID CheckAndReAllocBuffer(LPVOID lpBuffer, size_t sizeBufferMinimum);
LPLINEADDRESSCAPS MylineGetAddressCaps (LPLINEADDRESSCAPS lpLineAddressCaps,
DWORD dwDeviceID, DWORD dwAddressID, DWORD dwAPIVersion,
DWORD dwExtVersion);
BOOL MakeTheCall(LPLINEDEVCAPS lpLineDevCaps,LPCSTR lpszAddress);
LPLINECALLPARAMS CreateCallParams (LPLINECALLPARAMS lpCallParams,
LPCSTR lpszDisplayableAddress);
long WaitForReply (long lRequestID);
void HandleLineCallState(DWORD dwDevice, DWORD dwMessage,
DWORD dwCallbackInstance,
DWORD dwParam1, DWORD dwParam2, DWORD dwParam3);
private:
// This section is for private functions.

public:
// Public functions.
CTapiConnection();
~CTapiConnection();
BOOL Create(char *szPhoneNumber = NULL);
BOOL DialCall(char *szPhoneNumber = NULL);
BOOL HangupCall();
static void CALLBACK lineCallbackFunc(
DWORD dwDevice, DWORD dwMsg, DWORD dwCallbackInstance,
DWORD dwParam1, DWORD dwParam2, DWORD dwParam3);

};

همونطورکه دیدید، برای پیاده سازی یه همچین کلاسی (نه چندادن بدردبخور!) عناصر زیادی نیاز هست ولی توابعی که عمومی و قابل استفاده هستند، چهار تا مورد زیر هستند :



Create
DialCall
HangupCall
lineCallbackFunc

البته lineCallbackFunc مستقیماً توسط برنامه ای که کلاس رو استفاده میکنه نباید استفاده بشه، و توسط سیستم برای بررسی برقراری خط مورد استفاده قرار می گیره.

اولین چیزی که باید قبل هر کاری انجام بشه initialize کردن TAPI هست. به این معنی که برنامه باید یه راهی برای برقراری ارتباط با TAPI پیدا کنه و بعدش شروع به ارتباط با خط بکنه. TAPI از تابع CallBack برای تسهیل ارتباط استفاده میکنه، یعنی برنامه وقتی تابع lineInitialize رو صدا کرد به TAPI میگه که آدرس تابع CallBack کجاست. تابع lineInitialize دوتا پارامتر رو که به اون پاس داده شده رو پر میکنه، handle بکاررفته (m_hLineApp) و تعداد تجهیزات قابل دسترس برای برنامه (m_dwNumDevs)، اگه lineInitialize موفقیت آمیز باشه مقدار صفر برمیگرده و در غیر اینصورت یه مقدار منفی برگشت داده میشه. یعنی تمام توابع TAPI اگه موفقیت آمیز باشن مقدار صفر برمیگردونن. تو کد زیر برای راحتی کار مقدار صفر define شده یه SUCCESS.

BOOL CTapiConnection::Create(char *szPhoneNumber)
{
long lReturn;

// If we're already initialized, then initialization succeeds.
if (m_hLineApp)
return TRUE;

// If we're in the middle of initializing, then fail, we're not done.
if (m_bInitializing)
return FALSE;

m_bInitializing = TRUE;

// Initialize TAPI.
do
{
lReturn = ::lineInitialize(&m_hLineApp,
AfxGetInstanceHandle(),
lineCallbackFunc,
"DialIt",
&m_dwNumDevs);

if (m_dwNumDevs == 0)
{
AfxMessageBox("There are no telephony devices installed.");
m_bInitializing = FALSE;
return FALSE;
}

if (HandleLineErr(lReturn))
continue;
else
{
OutputDebugString("lineInitialize unhandled error\n");
m_bInitializing = FALSE;
return FALSE;
}
}
while(lReturn != SUCCESS);

// If the user furnished a phone number, copy it over.
if (szPhoneNumber)
strcpy(m_szPhoneNumber, szPhoneNumber);

m_bInitializing = FALSE;
return TRUE;
}


دیگه بیشتر از این وارد جزئیات نشیم که صدای مدیران در نیاد ...

peikesms123
شنبه 01 خرداد 1389, 20:17 عصر
ضمناً این کار رو با C#‎‎ نمیکنن (لطفاً نزنید:افسرده:)،
سلام.
از دوست عزیزمون یه سوال دارم: چرا با #C نمیشه نوشت؟ البته منظورم اینه که چرا با دات نت نمیشه نوشت، که باید!!! با MFC نوشته بشه.

mohammad kafiyan
یک شنبه 02 خرداد 1389, 00:02 صبح
دوست عزیز خوب این دستور من داخل hyperterminal تست کردم و جواب گرفتم حالا می تونید بگید که چطور تو c# از این دستور استفاده کنم یعنی اگر تلفن زنگ خورد شماره در یک متغیر قرار بگیره و جستجو بکنه آیا این شماره در database وجود داره یا خیر
با تشکر از دوست که در این زمینه کمک می کنند:تشویق:

Saeed_m_Farid
یک شنبه 02 خرداد 1389, 09:10 صبح
سلام.
از دوست عزیزمون یه سوال دارم: چرا با C#‎‎ نمیشه نوشت؟ البته منظورم اینه که چرا با دات نت نمیشه نوشت، که باید!!! با MFC نوشته بشه.
اولاً من نگفتم اصلاً نمیشه، اینکار بعلت استفاده گسترده از اشاره گرها در TAPI عملاً مقدور نیست، حتی اگه اینکار رو بتونید بکنید مثل اینه که با MFC وب سایت بنویسید؛ واسه همینه که میگم از کامپوننت ها یا dll های واسط استفاده کنید :
Telephony Application Programming Interface (TAPI) functionality is not supported from managed code (http://support.microsoft.com/default.aspx?scid=kb;en-us;841712)

برای نمونه StevenVibert (یکی از کاربرای msn) تلاش کرده کد رو برگردونه به C#‎ و نتیجه اش رو خودتون اینجا (http://www.msnewsgroups.net/csharp/t3541-tapi-3-has-anyone-gotten-work.aspx)میتونید ببینید، اگه شما احساس می کنید اجبار به اینکار دارید باید از هوش و خلاقیت ایرانی خودتون استفاده کنید! ولی معمولاً اینکار رو هیچ کس نمیکنه و اون قسمت ها رو میبرند تو C می نویسند و از dll یا کامپوننتش تو C#‎ استفاده می کنند ...

ضمناً اینجا (http://www.codeproject.com/KB/IP/devangpro.aspx) رو هم ببینید، شاید به TAPI 3.0 و شبکه های تلفنی مبتنی بر IP هم علاقمند شدید!

soheil_1367
یک شنبه 02 خرداد 1389, 13:26 عصر
دوست عزیز این فایلی که قرار دادم رو دانلود کن و ببینش فقط مودم من به com3 وصل بود اگه برای شما به com دیگه ای وصله تغیرش بدید
برای دانلود فایل به صفحه 2 بروید و در پستم گذاشتمش
اینم لینک صفحه : http://barnamenevis.org/forum/showthread.php?t=218905&page=2

peikesms123
یک شنبه 02 خرداد 1389, 23:23 عصر
سلام چون نمیخوام این تاپیک از هدف اصلیش خارج بشه دیگه به بحث ادامه نمیدم. اوصولآ هیچ وقت از کسب کردن تجربه دیگران جلوگیری نمیکنم. من خودم مشکلی با این کامپوننت ها ندارم. ولی به نظر من هرکسی این تجربه ها رو داشته باشه براش خوبه. من دارم این کارو میکنم و دلسرد هم نمیشم قصد من استفاده کامل از C#‎‎ نیست حتی اگه لازم باشه برای نوشتن این کامپوننت به تمام برنامه های دیگه رجوع کنم حتمآ این کارو میکنم مثل C, ++C, Delphi, Pascal و حتی زبان ماشین و غیره. حالا هر کسی که دوست داره میتونه کمک کنه، خیلی هم ممنون میشم.
کار با دستورات را ادامه میدیم. این دفعه دیگه باید با هم کار کنیم. من و فکر میکنم بیشتر دوستان با نمایش شماره تماس گیرنده یا همون کالر آی دی مشکل داریم. یه مشکل دیگه هم اینه که بیشتر کار من بر روی مودم های اکسترنال هست و یه مشکلی با این مودم دارم. زمانی که حالت مودم را روی حالت ویس(AT+FCLASS=8) میزارم، وقتی کسی تماس میگیره دیگه دستور ATA کار نمیکنه. برای منم نمیصرفه که بخوام برم تمام مودم های اکسترنال رو بخرم که ببینم کدومشون این دو تا مشکل را ندارن.
از دوستان خواهش میکنم برای این 2 مشکل راهنمایی کنن.

Saeed_m_Farid
دوشنبه 03 خرداد 1389, 10:31 صبح
من و فکر میکنم بیشتر دوستان با نمایش شماره تماس گیرنده یا همون کالر آی دی مشکل داریم. یه مشکل دیگه هم اینه که بیشتر کار من بر روی مودم های اکسترنال هست و یه مشکلی با این مودم دارم. زمانی که حالت مودم را روی حالت ویس(AT+FCLASS=8) میزارم، وقتی کسی تماس میگیره دیگه دستور ATA کار نمیکنه. برای منم نمیصرفه که بخوام برم تمام مودم های اکسترنال رو بخرم که ببینم کدومشون این دو تا مشکل را ندارن.
نمبدونم اینا چه ربطی به C#‎‎‎‎‎‎‎‎‎‎ دارن ولی بقول شما تجربه خوبی برای کسانی هست که میخوان کار با مودم رو شروع کنند، میدونم که خیلی ها این مراحل رو میدونن ولی باید همه رو درنظر گرفت :


مراحل کار




خروج از هر برنامه مرتبط با مودم
اجرای HyperTerminal یعنی : Start -> Run -> hypertrm بعد اینتر یا
Vista,7: Start -> All Programs -> HyperTerminal Private Edition -> HyperTerminal Private Edition
XP: Start -> Programs -> Accessories -> Communications -> HyperTerminal
تشخیص پورت مودم :
Start -> Control Panel -> Phone and Modem Options -> Modems اونجا ببینید مودم تون به چه پورتی Attached to شده تا در مرحله بعد استفاده کنیم.
حالا در پنجره HyperTerminal که باز کردیم یه اسمی میدیم و پورتی رو که از مرحله قبل (مرحله 3) گرفتیم، در Connect using انتخاب کرده و OK می کنیم (اگه مطمئن نیستید مراحل رو واسه همه پورت های در دسترس امتحان کنید تا از دستورات AT جواب بگیرید ولی اگه اسم مودم رو تو لیست دیدید انتخاب نکنید، قراره با پورت کار کنیم!)
تو صفحه سفید hyper دستور AT رو تایپ کرده و اینتر بزنید، باید OK بگیرید، اگه نگرفتید مراحل 1 تا 4 رو برای پورتهای دیگه امتحان کنید.
حالا موقع فعال کردن کالرآیدی هست [1]. این دستور برای مودم های مختلف فرق میکنه، معمولاً دستور ATC#‎‎‎‎‎‎ID=1 برای مودم های معمولی و برای AT+VCID=1 مودم های V.9x کالرآیدی رو فعال میکنه، یعنی با زدن این دستور جواب OK از مودم خواهید گرفت. می تونید با مراجعه به Manual مودم خودتون، دستور رو متوجه بشید ولی اگه همچین دستوری هم نتونستید پیدا کنید، دستورات زیر رو امتحان کنید تا از یکی OK بگیرید، ERROR یعنی رستور قبول نشد:

ATC#‎‎‎‎‎‎ID=1
ATC#‎‎‎‎‎‎LS=8C#‎‎‎‎‎‎ID=1
ATC#‎‎‎‎‎‎ID=2
AT%CCID=1
AT%CCID=2
AT+VCID=1
ATC#‎‎‎‎‎‎C1
AT*ID1
حالا می تونید کارآیدی رو امتحان کنید، یه زنگ به خطی که به مودم وصل کردید بزنید و منتظر باشید حداقل دو تا زنگ بخوره (بیشترش توصیه میشه)، شما باید موارد زیر رو ببینید :
RING
DATE = 0810
TIME = 1200
NAME = DOE, JOHN
NMBR = 800111111
RING


[1] : باید توجه کنبد که همونطورکه قبلاً گفتم این مورد به فاکتورهای زیادی بستگی داره، که قبلاً در موردش بحث شده، این مراحل برای حالتی هست که شما با مرکز مخابراتی در مورد DTMF یا FSK بودن خط مشکلی نداشته باشید؛ برای اطلاعات بیشتر به اینجا (چند پست قبل) (http://www.barnamenevis.org/forum/showpost.php?p=988164&postcount=47)رجوع کنید.
************************************************** ********************************

در مورد سوال دومتون نباید هم دستورات AT معمولی کار کنند چون شما مود (Mode) رو عوض کردید و حالا رفتید تو مود دستورات Voice، که در مودم های جدید وجود داره؛ شما میتونید مود کار با device رو عوض کنید تا با دستورات متفاوت AT کار کنید؛ که این Device هم صرفاً مودم نیست. میتونه خیلی ادوات دیگه هم باشه که کارکردها و مودهای متفاوتی دارند ...


پ.ن. : در تمام دستورات، جای # و C رو باید عوض کنید. این مشکل از VB هست و خودبخود جای # و C رو عوض میکنه!!!

peikesms123
دوشنبه 03 خرداد 1389, 12:20 عصر
مشکل من تو کالر آی دی اینه که من با مودم خودم که اکسترنال هست تونستم یک بار شماره تماس گیرنده رو بگیرم. بعدشم مگه میشه که گوشی تلفن شماره نشون بده ولی مودم نشون نده تازه مودمی که قابلیت FSK , DTMF را پشتیبانی میکنه. من اگه یه مودم اکسترنال پیدا کنم که بتونه این مشکل هارو حل کنه کلی کارم راه میفته.
برای مشکل دوم هم اگه میشه بگید که چه دستوراتی را باید بکار برد تا در حالت ویس بتوان پاسخ داد.

mohammad kafiyan
سه شنبه 04 خرداد 1389, 20:57 عصر
سلام به دوستان من از دستور at+vcid=1 در C# استفاده کردم و آن را تست کردم ولی نمی دونم چرا گاهی وقت ها شماره را در textbox نشان نمی ده و گاهی وقت های نشان می ده modem من هم zoltrix و extrnal است مشکل از کجا است لطفا کمک کنید :عصبانی++:

peikesms123
چهارشنبه 05 خرداد 1389, 01:01 صبح
سلام به دوستان من از دستور at+vcid=1 در C#‎‎‎ استفاده کردم و آن را تست کردم ولی نمی دونم چرا گاهی وقت ها شماره را در textbox نشان نمی ده و گاهی وقت های نشان می ده modem من هم zoltrix و extrnal است مشکل از کجا است لطفا کمک کنید :عصبانی++:
سلام دوست عزیز اگه میشه برای من از مودمت یه عکس بگیر یا از اینترنت پیدا کن و نمایش بده. اینو برای این میگم که منم میخوام یه مودم اکسترنال بگیرم هم اندازش برام مهمه هم قیمتش. اگه قیمتشم بگی ممنون میشم.
برای کار با پورت تو C#‎‎ هم همه یه چیزایی بلد هستیم. ولی من دیدم که بعضی از دوستان یه اشتباهی کرده بودن و برای دریافت اطلاعات از پورت سریال از یک تایمر استفاده کرده بودن. روش صحیحش اینه که شما اگه با استفاده از قسمت ToosBox یک سریال پورت به برنامه اضافه میکنید در قسمت Event میتونید کد مربوط به دریافت اطلاعات Recive را وارد کنید. بعد از باز کردن پورت دیگه هر اطلاعاتی که دریافت بشه میتونید با دستور ReadExisting بخونید.
اگه هم بخواید با کد نویسی این کارو بکنید به روش زیر عمل کنید:

// ایجاد یک سریال پورت جدید
System.IO.Ports.SerialPort objSerialPort = new System.IO.Ports.SerialPort();
public Form1()
{
InitializeComponent();
// اضافه کردن یک رویداد به پورت سریال
objSerialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(obj SerialPort_DataReceived);
}
// یک متغیرر برای شمارش تعداد زنگ
int intRing = 0;
void objSerialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
// غیر فعال کردن فراخوانی غیر قانونی نخکشی ها برای جلوگیری از خطا گرفتن
// در اضافه کردن اطلاعات به لیست
Control.CheckForIllegalCrossThreadCalls = false;
// گرفتن تمام اطلاعات غعلی موجود در سریال پورت
string strRecive = objSerialPort.ReadExisting().ToLower().Trim();
if (strRecive.Contains("ring"))
{
intRing++;
lstRecive.Items.Add("در حال زنگ خوردن: " + intRing + " بار");
if (intRing == 3)
{
intRing = 0;
objSerialPort.Write("ATA" + (char)0x00d);
}
}
Control.CheckForIllegalCrossThreadCalls = true;
}البته این روش هم درست نیست ولی میتونه کمکتون کنه. برای جلوگیری از خطای نخکشی باید از تابع دیگری استفاده کرد.
دوستان هرجا اشتباه بود لطف کنند بگن ممنون.

mohammad kafiyan
چهارشنبه 05 خرداد 1389, 23:36 عصر
سلام دوست عزیز peikesms123
مدل : Zolltrix RAINBOW 56k
class version
تقریبا یک مودم نیمه حرفه ای است

mohammad kafiyan
پنج شنبه 06 خرداد 1389, 23:11 عصر
سلام به دوستان سوال من را از دوستان دیگه کسی نیست جواب بده

peikesms123
جمعه 07 خرداد 1389, 13:59 عصر
سلام به دوستان سوال من را از دوستان دیگه کسی نیست جواب بده
سلام اگه لطف کنی و کدی که نوشتی بفرستی نگاه کنیم شاید بتونم کمک کنم.
از دستانی که تو این تاپیک هستن چند نفر موفق شدن کالر آی دی بگیرن.
از دوستان کی میتونه به مودم صدا ارسال کنه و کی میتونه دریافت داشته باشه؟

mohammad kafiyan
جمعه 07 خرداد 1389, 22:50 عصر
سلام اگه لطف کنی و کدی که نوشتی بفرستی نگاه کنیم شاید بتونم کمک کنم.
از دستانی که تو این تاپیک هستن چند نفر موفق شدن کالر آی دی بگیرن.

سلام دوست عزیز در صفحه دوم
http://barnamenevis.org/forum/showth...=218905&page=2 (http://barnamenevis.org/forum/showth...=218905&page=2)
دوستمون آقای soheil_1367 زحمت کشیدند گذاشتند و فایل zip آنرا گذاشتند (callrid)استفاده کردم گفتم گاهی وقت ها شماره نمایش می ده و گاهی وقت ها هیچ چیز نمایش نمی ده
روش صحیح چگونه است:گریه::گریه:

peikesms123
شنبه 08 خرداد 1389, 08:46 صبح
http://barnamenevis.org/forum/showth...=218905&page=2 (http://barnamenevis.org/forum/showth...=218905&page=2)

این لینک که خرابه

mohammad kafiyan
شنبه 08 خرداد 1389, 21:54 عصر
سلام دوست عزیز شرمنده باید ببخشید این هم لینک درست
http://www.barnamenevis.org/forum/showthread.php?t=218905&page=2
در وسط صفحه دوست عزیز soheil_1367 گذاشتند همان فایل zip ، callr ID است
با این حال من امروز اصلا خود دستور را در hyperterminal تست کردم ولی با همان مشکل که قبلا گفتم روبرو شدم نمی دونم عیب از کجاست

peikesms123
یک شنبه 09 خرداد 1389, 11:49 صبح
mohammad kafiyan (http://barnamenevis.org/forum/member.php?u=109327) دوست عزیز این کدها مشکل نداره البته کار با تایمر اشتباه است ولی برای AT-Command مشکلی نداره. حالا شما این کار هم انجام بدید بعد از هر بار گرفتن هر بار کالر آی دی چک کنید که AT+VCID برابر با یک باشه. البته یک بار هم کد AT+VCID=2 را امتحان کنید ببینید چی می شه.

mohammad kafiyan
یک شنبه 09 خرداد 1389, 14:08 عصر
البته کار با تایمر اشتباه است ولی برای AT-Command مشکلی ندارهخیلی ممنون دوست عزیز مشکل در hyperterminal بر طرف شد حالا ممکنه بگی چگونه این دستور در کدام قسمت c# باید بنویسم که همیشه این شماره به من نمایش بدهد من هر چی فکردم چیزی جز استفاده از timer نمی بینم اگر ممکنه بگید که چه کار باید بکنم نیازم دارم
:اشتباه::متفکر::گیج:

peikesms123
دوشنبه 10 خرداد 1389, 09:51 صبح
خیلی ممنون دوست عزیز مشکل در hyperterminal بر طرف شد حالا ممکنه بگی چگونه این دستور در کدام قسمت C#‎ باید بنویسم که همیشه این شماره به من نمایش بدهد من هر چی فکردم چیزی جز استفاده از timer نمی بینم اگر ممکنه بگید که چه کار باید بکنم نیازم دارم
:اشتباه::متفکر::گیج:
سلام
من تو صفحه 6 این تاپیک توضیح دادم. از اینجا (http://www.barnamenevis.org/forum/showpost.php?p=992265&postcount=54)هم میتونی ببینی.
فقط میمونه قست جدا کردن شماره تلفن که با یه دستور if ساده میتونی حلش کنی. بررسی میکنی که اگر متن داخل پورت حاوی شماره بود اون شماره را نمایش بده. به همین راحتی.:خجالت:

soheil_1367
چهارشنبه 12 خرداد 1389, 18:16 عصر
پس چرا دوستان حرفه ای شرکت نمی کنند ؟؟؟

peikesms123
پنج شنبه 20 خرداد 1389, 15:43 عصر
سلام خسته نباشید به علت شروع امتحانات من کمتر میتونم بیام سر بزنم شرمنده

soheil_1367
پنج شنبه 20 خرداد 1389, 21:41 عصر
سلام دوست عزیز دشمنت شرمنده آخه تاپیک اولش خوب رفت جلو ولی یهو ترمزو کشید :قهقهه:

peikesms123
شنبه 22 خرداد 1389, 09:47 صبح
حق با شماست ولی اگه دوست دارید میتونیم ادامه بدیم تا کسی اضافه بشه و همکاری بکنه. فقط اگه متونید بگید که چه موقع هایی میتونید به تاپیک سر بزنید که هماهنگ بشیم حداقل یه بار در روز باشه.

zayens
شنبه 22 خرداد 1389, 10:56 صبح
کالر آیدی ( Caller ID ) بدون استفاده از KDTELE
برنامه ی زیر را دانلود کنید و اجرا کنید.
حالا اینترنت را قطع کنید و به شماره خودتون زنگ بزنید
شمارتون توی تکس باکس میافته
همین

soheil_1367
شنبه 22 خرداد 1389, 11:14 صبح
من تقریبا هر روز میام تو سایت میچرخم مگر اینکه جایی باشم که دسترسی به اینترنت نداشته باشم

peikesms123
شنبه 22 خرداد 1389, 12:23 عصر
کالر آیدی ( Caller ID ) بدون استفاده از KDTELE
برنامه ی زیر را دانلود کنید و اجرا کنید.
حالا اینترنت را قطع کنید و به شماره خودتون زنگ بزنید
شمارتون توی تکس باکس میافته
همین
سلام به شما دوست عزیز اگه لطف میکردی و کل تاپیک را مطالعه میکردید متوجه میشدید که این نوع کدنویسی اشتباه است. چرا از یک تایمر استفاده کردید؟ به نظر شما لازم هست که هر یک ثانیه، به پورت سریال سر بزنیم و آنرا چک کنیم. توی هر دقیقه 60 بار این کار انجام میشه.

peikesms123
چهارشنبه 26 خرداد 1389, 15:49 عصر
soheil_1367 (http://www.barnamenevis.org/forum/member.php?u=122170) سلام
فکر کنم فعلآ فقط خودمون 2 نفر هستیم. اگه اشکالی نداره یه تقسیم کار میکنم که با هم انجام بدیم.
من خودم الآن روی فایل های WAVE کار میکنم. که چه جوری میشه از طریق مودم صدا پخش کرد. شما هم اگه لطف کنی دنبال تغییر دادن "نوع پخش صدا در مودم" بگردید ممنون میشم. توی خیلی از مودم ها این دستود به صورت AT+VSM یا AT#VSM است. ولی متأسفانه من روی 5 مودم کار کردم ولی جواب نداد. البته چند ماه پیش این کارو انجام دادم الآن هرچی فکر میکنم یادم نمیاد.
ممنون از همکاری شما

soheil_1367
چهارشنبه 26 خرداد 1389, 19:30 عصر
سلام به همه دوستان
دوست عزیز تا اینجا که تحقیق کردم به این نتیجه رسیدم که اول باید دستور " ?=AT+FCLASS" یا در بعضی مودم های دیگر دستور "?=ATC#‎‎LS" را زد که یکسری عدد بر میگردونه که اگه عدد 8 هم در اون اعداد بود یعنی مودم حالت voice رو ساپورت میکنه که متاسفانه اکثر مودم ها اعداد 0,1,2 بر میگردونن که 0 یعنی مودم data رو ساپورت میکنه و 1,2 یعنی مودم فکس رو ساپورت میکنه و اینکه اگه مودم voice رو هم ساپورت کرد به جای "?" عدد 8 رو وارد کنید مودم به حالت voice انتقال پیدا میکند .
متاسفانه مودم من که ساپورت نکرد :ناراحت:

peikesms123
چهارشنبه 26 خرداد 1389, 20:00 عصر
مودم شما داخلی هست یا خارجی؟
سلام مودم من VOICE را ساپورت میکنه ولی منظور من این نبود. برای ارسال صدا باید روش ارسال را انتخاب کنیم مثل:

AT+VSM=?
1,"UNSIGNED PCM",8,0,8000,0,0
129,"IMA ADPCM",4,0,8000,0,0
130,"UNSIGNED PCM",8,0,8000,0,0
140,"2 Bit ADPCM",2,0,8000

که برای ارسال باید یکی از این نوع‎ها را انتخاب کرد.


141,"4 Bit ADPCM",4,0,8000,0,0

ostovarit
چهارشنبه 26 خرداد 1389, 23:07 عصر
من این تاپیک رو دارم دنبال میکنم کاری اگر هست که میتونم انجام بدم بهم بگید ...
البته تجربه ای در این مورد تا حالا نداشتم !
ولی موضوع رو دوست دارم ...

soheil_1367
چهارشنبه 26 خرداد 1389, 23:27 عصر
مودم من داخلی مگه مودم های داخلی voice رو ساپورت نمیکنن ؟
دوست عزیز "ostovarit (http://barnamenevis.biz/forum/member.php?u=93395)" منم در این ضمینه هیچ تجربه ای ندارم ولی از وقتی تاپیک رو راه انداختم کلی چیز یاد گرفتم نظر من اینه که شما هم در رابطه با همون چیزی که دوست خوبمون "peikesms123 (http://barnamenevis.biz/forum/member.php?u=106109)" گفتن تحقیق کنید .

ostovarit
چهارشنبه 26 خرداد 1389, 23:35 عصر
مودم من داخلی مگه مودم های داخلی voice رو ساپورت نمیکنن ؟
دوست عزیز "ostovarit (http://barnamenevis.biz/forum/member.php?u=93395)" منم در این ضمینه هیچ تجربه ای ندارم ولی از وقتی تاپیک رو راه انداختم کلی چیز یاد گرفتم نظر من اینه که شما هم در رابطه با همون چیزی که دوست خوبمون "peikesms123 (http://barnamenevis.biz/forum/member.php?u=106109)" گفتن تحقیق کنید .

انجامش میدم

zayens
پنج شنبه 27 خرداد 1389, 00:39 صبح
سلام به شما دوست عزیز اگه لطف میکردی و کل تاپیک را مطالعه میکردید متوجه میشدید که این نوع کدنویسی اشتباه است. چرا از یک تایمر استفاده کردید؟ به نظر شما لازم هست که هر یک ثانیه، به پورت سریال سر بزنیم و آنرا چک کنیم. توی هر دقیقه 60 بار این کار انجام میشه.
اولا این کد را من از همین سایت پیدا کردم و این جا گذاشتم
ثانیا بهتر بود بعد از نظرتون کد اصلاح شده را برامون میذاشتین
ثالثا دیگه نداره. کد را اصلاح کنین و بذارین

peikesms123
پنج شنبه 27 خرداد 1389, 17:22 عصر
اولا این کد را من از همین سایت پیدا کردم و این جا گذاشتم
ثانیا بهتر بود بعد از نظرتون کد اصلاح شده را برامون میذاشتین
ثالثا دیگه نداره. کد را اصلاح کنین و بذارین
سلام دوست عزیز من اصلآ اهل کلکل نیستم. ولی فکر کنم که به این سوال جواب دادم. اگه دوست داشتید این تاپیک را کامل بخوانید.


مودم من داخلی مگه مودم های داخلی voice رو ساپورت نمیکنن ؟
همه مودم ها ساپورت نمیکنن. بیشتر مودم‎های که ساپورت میکنن ورودی میکروفن و خروجی صدا دارن.

ostovarit (http://www.barnamenevis.org/forum/member.php?u=93395)شما هم اگه روی مودم خودتون یا مودم هایی که در دسترستون هست تست کنید. ممنون میشم.

csharpdoost
شنبه 29 خرداد 1389, 21:49 عصر
سلام دوستان
چي شد پس چرا ادامه نميديد؟ موضوعتون جالبه من هم در اين زمينه تجربه اي ندارم اگه كمكي از دستم برمياد بگيد انجام بدم.

peikesms123
یک شنبه 30 خرداد 1389, 16:05 عصر
سلام به همگی
دوستانی که این تاپیک رو دنبال میکنن حتمآ همتون یه مودم دارید. اگه لطف کنید و طریقه تغییر نوع VOICE را امتحان کنید ممنون میشم.

csharpdoost
دوشنبه 07 تیر 1389, 12:40 عصر
دوستان چرا این تاپیک رو ادامه نمیدید؟
بحثتون به جاهای جالب میرسید. موضوع جالبیه.

peikesms123
سه شنبه 08 تیر 1389, 00:22 صبح
قرار بود همه برن بررسی کنن که دستورات مودمشون چه جوری بود. همه بگید اون دستورات رو پیدا کردید تا ادامه بدیم. نمیشه که فقط برای یک مودم برنامه نوشت اگه این کارو بکنیم برنامه به یک مودم خاص وابسته میشه که خیلی بد میشه.
از دوستان می‎خوام که نتیجه تحقیقاتشون را بنویسن ممنون.

soheil_1367
سه شنبه 08 تیر 1389, 20:59 عصر
من که مودمم voice رو ساپورت نمیکنه . باید برم یه مودم بخرم کسی میتونه راهنمایی کنه چه مارکی و چه مدلی بگیرم که voice رو هم ساپورت کنه ؟؟؟

HAMRAHSOFT.IR
سه شنبه 08 تیر 1389, 23:06 عصر
مودم مبکرونت مودم خوبی

negarestan742
جمعه 18 تیر 1389, 19:01 عصر
دوستان سلام
من تمام مطالب مربوط به تلفن گوياي اين سايت را خوانده ام ولي هيچ كس مشكل من را نداشته و جوابي هم براي آن نبود.
لطفا اگر كسي جوابي براي سوال من داره كمكم كنه
مي خواهم يك تلفن گويا بنويسم. از هر روشي كه فكرش را بكنيد امتحان كردم و يك مشكل بزرگ دارم. آنهم اين است كه وقتي كسي به تلفني كه به مودم متصل است زنگ مي زند ، بعد از اتصال ، يك بوق كوتاه شنيده مي شود وبعد از چند ثانيه صداي دلخراشي مانند صداي اتصال به اينترنت شنيده مي شود.
اول فكر كردم مشكل از مودم است. با 2 مودم ديگر هم امتحان كردم ولي جواب نگرفتم. بعد فكر كردم مشكل از ويندوزه ، عوض كردم ولي باز جواب نگرفتم.
با استفاده از دستور ATA‌ در نرم افزار HyperTerminal جهت برقراري تماس استفاده كردم ولي جواب نگرفتم.
واقعا نمي دانم مشكل چيست؟ خواهشا كمكم كنيد. بخاطر اين مشكل تمام پروژه متوقف شده است.

peikesms123
شنبه 19 تیر 1389, 10:56 صبح
negarestan742 (http://barnamenevis.org/forum/member.php?u=155339) سلام
این مشکلی که شما میگید به خاطر اینه که مودم شما در حالت دیتا قرار داره و دقیقآ اون صداهای دلخراش که می‎گید همان دیتا هستن که ارسال می‎شن. برای رفع این مشکل باید 2 کار انجام داد. اول اینکه ببینید مودم VOICE را پشتیبانی می‎کند با دستور AT+FCLASS=? که در جواب باید عدد 8 هم داخل اعداد دیگر باشد. دوم اگر مودم پشتیبانی کرد مودم را در حالت VOICE قرار دهید با دستور AT+FCLASS=8 که در جواب باید کلمه oK را مشاهده کنید. موفق باشید.

soheil_1367
سه شنبه 19 مرداد 1389, 23:47 عصر
دوستان این تاپیکم مثل تاپیکای دیگه در مورد تلفن گویا بی سرانجام موند که !!!! :افسرده:

peikesms123
چهارشنبه 20 مرداد 1389, 15:09 عصر
متأسفانه من توی یک شرکت کار می‎کنم و نمی‎تونم زیاد وقت بزارم قرار بود دوستان کمک کنن که...

ostovarit
چهارشنبه 20 مرداد 1389, 15:13 عصر
متأسفانه من توی یک شرکت کار می‎کنم و نمی‎تونم زیاد وقت بزارم قرار بود دوستان کمک کنن که...

من یک سری تحقیقات در مورد کالر ایدی و تلفن گویا انجام دادم نتیجش اینجاست ...
http://barnamenevis.org/forum/showthread.php?t=233919
شاید مفید باشه ...

در آخر هم وقتی ساختمش عکس و توضیحات کامل رو مینویسم ...

sohrab o
پنج شنبه 28 مرداد 1389, 12:48 عصر
برای ساختن تلفن گویا راههای مختلفی هستش، سریعترین راه استفاده از کامپوننت KDTele 3.5 هستش. برای دریافت لینک کرک، پیام خصوصی بزنید
...
ٍویرایش توسط مدیر انجمن (No Warez Activity)
...

فقط مشکله عمده ایی که با استفاده از این کامپوننت می تونه برات پیش بیاد نمایش CallerID یا استفاده از چند خط تلفن بصورت همزمان هستش.

"استفاده از چند خط تلفن بصورت همزمان هستش"
مشکل شما با چند خط تلفن چیه؟

MohammadHadi2031
جمعه 04 مرداد 1392, 08:30 صبح
سلام
این ها رو ببینید:
http://forum.mobilestan.net/showthread.php?t=112160
http://en.wikipedia.org/wiki/Voice_modem_command_set