PDA

View Full Version : سوال: چه طور میشه فهمید که مودم، کالرآیدی را پشتیبانی میکند یا نه؟



zayens
سه شنبه 04 خرداد 1389, 19:04 عصر
با کامپوننت KDTELE تا حدودی از آموزش هایی که توی همین سایت بود آشنا شدم.
البته آموزشها به زبان دلفی بود و از اونجایی که من دلفی بلد نیستم خیلی سخت بود که کدها را به C# تبدیل کنم.
از جمله کد زیر که نتونستم همشو تبدیل کنم...


var
lvLineCaps:TLineCaps;
begin
kdPhone.GetLineCaps(0,lvLineCaps);
iflcCallerID in lvLineCaps then
StatuseListBox.Items.Add('کالرآیدی پشتیبانی میشود');
else
StatuseListBox.Items.Add('کالرآیدی پشتیبانی نمیشود');

مشکل من if هست
کد تبدیل شده به #C در زیر آمده که قسمت if آن ناقص است. لطفا اگه ممکنه کامل کنید


int lvLineCapes;
KDPhone.GetLineCaps(0,ref lvLineCapes);
if (KDTele.TxLineCaps.lcCallerID ...) ;
StatuseListBox.Items.Add("کالرآیدی پشتیبانی میشود");
else
StatuseListBox.Items.Add("کالرآیدی پشتیبانی نمیشود");

zayens
چهارشنبه 05 خرداد 1389, 11:52 صبح
لازم به ذکر است که اگر کد اصلاح شده ی بالا را در برنامه قرار بدیم مشخص میکنه که بعد از اتصال خط، آیا کالرآیدی قابل نمایش هست یا نه؟
مثلا


private void KDPhone_OnCallState(object sender, AxKDTele.IKDPhoneEvents_OnCallStateEvent e)
{
switch (e.callState)
{
//شماره گیری
case KDTele.TxCallState.csConnected:
{
StatuseListBox.Items.Add("ارتباط برقرار شد");
BtnDial.Enabled = false;
BtnHangUp.Enabled = true;
//int lvLineCapes;
//KDPhone.GetLineCaps(0,ref lvLineCapes);
//if (KDTele.TxLineCaps.lcCallerID) ;
// StatuseListBox.Items.Add("کالرآیدی پشتیبانی میشود");
//else
//StatuseListBox.Items.Add("کالرآیدی پشتیبانی نمیشود");
} break;
case KDTele.TxCallState.csDisconnected:
{
StatuseListBox.Items.Add("ارتباط قطع شد");
BtnDial.Enabled = true;
BtnHangUp.Enabled = false;
} break;
.
.
.

کسی نمیتونه کد را برام اصلاح کنه...
من وقتی از کد زیر استفاده می کنم:


private void KDPhone_OnCallerID(object sender, AxKDTele.IKDPhoneEvents_OnCallerIDEvent e)
{
lblCallerID.Text = e.number.ToString();
}

شماره طرف را مشخص نمیکنه. می خوام ببینم از مودمم هست یا نه...کمـــــــــــــــــــ ــــــــــــک:عصبانی++:

Sajjad.Aghapour
جمعه 07 خرداد 1389, 00:31 صبح
سلام دوست عزیز....
من هم مثل خیلی های دیگه که به سوال شما جواب ندادن با این کامپوننت کار نکردم...


int lvLineCapes;

در کد دلفی این متغیر از نوع TLineCaps گرفته شده....



شماره طرف را مشخص نمیکنه. می خوام ببینم از مودمم هست

قبلا هم برای CallerID بحث شده.شاید این امکان رو مودم شما نداشته باشه.شما میتونید از AT Command ها برای دیدن اینکه مودمتون این قابلیت رو داره یا نه استفاده کنید.
در HyperTerminal دستور AT مربوطه رو بنویسید.فکر میکنم برای CallerID دستور ATC#‎ID هستش.اگه ERROR داد یعنی اینکه پشتیبانی نمیشه...

zayens
جمعه 07 خرداد 1389, 11:51 صبح
سلام دوست عزیز....
من هم مثل خیلی های دیگه که به سوال شما جواب ندادن با این کامپوننت کار نکردم...

آیا هیچ لینکی هم چه در داخل و چه در خارج سایت نیست که KDTELE را به زبان C#‎ کدنویسی کرده باشه؟

قبلا هم برای CallerID بحث شده.شاید این امکان رو مودم شما نداشته باشه.شما میتونید از AT Command ها برای دیدن اینکه مودمتون این قابلیت رو داره یا نه استفاده کنید.
هدف من در واقع اینه:
برنامه ای برای یه رستوران نوشتم و کامل هم شده. حالا فقط میخواستم خاصیتی بهش اضافه کنم
که در صورتی که مشتری برای سفارش غذا زنگ میزنه، شمارش به دیتابیس بره و اگر قبلا شماره اشتراک گرفته بود،
نام اون بجای شمارش بیفته تا کاربر رستوران لازم نباشه شماره اشتراک را بپرسه
و فقط سفارش را بگیره و نام و آدرس مشتری به فاکتور اضافه میشد.
خوب کدی هم که می خواستم برای این بود که اگر سیستم های کاربران CallerID را ساپورت نمیکنند،
پیغامی بهشون بده که اینجوری یا بعدا مودمشون را عوض می کردن و یا شماره اشتراک را از مشتری می پرسیدن
مشخصه که من میخواستم همه ی کارها در برنامه باشه نه اینکه دونه دونه برم سر هر سیستم و از
دستورات AT Command استفاده کنم و بعد براشون هم توضیح بدم که فلان کار را انجام بدن