اولین کاری که برای یک نرم افزار تلفن گویا باید انجام بگیرد ، تشخیص مودم های متصل شده به سیستم و آماده کردن آنها توسط نرم افزار برای پذیرش تماس ها میباشد.
در کامپوننت Tapiex ، یک متغیر به نام Lines وجود دارد که از آرایه ای از جنس ITAPILine می باشد.
نکته : در کامپوننت Tapiex ActiveX تعداد 12 Interface وجود داره که مهمترین اونها عبارتند از :
1) ITAPICall : شامل متغیرها و متدهای مربوط به یک تماس روی یک خط(مودم) میباشد.بوسیله این شی مدیریت تماسها اعم از قبول تماس،رد تماس ، قطع کردن تماس ،پخش یک صوت برای تماس و هر چیزی که مربوط به یک نماس هست رو میشه انجام داد.در واقع این مهمترین کلاس موجود در Tapiex هست که تماس ها رو مدیریت میکنه.
2) ITAPILine : شامل متغیرها و متدهای مربوط به یک خط یا همون مودم میباشد.بوسیله این کلاس میتوان نام مودم های شناخته شده در سیستم،باز کردن مودم برای تماس،گرفتن شماره و بستن یک مودم را انجام داد.
3) ILineCaps : این interface فقط دارای یک سری توابع هست که قابلیت های یک خط را به ما میدهد.
لازم به ذکر می باشد که کنترل Tapiex رو که روی فرم انداختیم(که در اینجا نام آن tapiex_com می باشد) خود شامل متغیرهایی از نوع "آرایه ای از interface های موجود" می باشد که از آنها در صورت لزوم می توان استفاده کرد.
برای شروع کار با Tapiex ، ابتدا بایستی تابع initialize() را صدا بزنیم تا کنترل Tapiex، اطلاعات اولیه را بارگزاری کند.
برای این کار کافیست کد زیر را در Form_load خود بنویسیم :
tapiex_com.initialize()
با صدا زدن این تابع ، خود Tapiex لیست مودم های متصل به دستگاه را پیدا کرده و در متغیر Lines میریزد.این دستگاه ها را بوسیله یک حلقه بصورت زیر می توان در یک ComboBox با نام TPLines_cb قرار داد.(لطفا شرطهایی که گذاشته شده را بگذارید تا قطعات سخت افزاری را نشان دهد.)
ITAPILine tpline;
foreach (ITAPILine tempLoopVar_tpline in tapiex_com.Lines)
{
tpline = tempLoopVar_tpline;
if ((tpline.Caps.Media_Modes & LINEMEDIAMODE.MEDIAMODE_INTERACTIVEVOICE) > 0 || (tpline.Caps.Media_Modes & LINEMEDIAMODE.MEDIAMODE_AUTOMATEDVOICE) > 0)
{
if (tpline.DeviceName != "IPCONF LINE" && tpline.DeviceName != "H323 Line")
{
TPLines_cb.Items.Add(tpline.DeviceName);
}
}
}
حال شما نام تمامی دستگاه ها را در یک لیست باکس قرار داده اید.برای اینکه یک مودم را آماده برای تماس کنیم ، بایستی به اصطلاح آن مودم را باز کنیم.برای این کار بایستی دستگاه انتخاب شده را پیدا کرده و آنرا در یک متغیر از نوع ITAPILine ریخته و سپس تابع open را صدا بزنیم به شکل زیر :
private ITAPILine find_line(string p)
{
for (int i = 0; i < tapiex_com.Lines.Count; i++)
if (tapeix_com.Lines.Item(i).Name == p)
return tapiex_com.Lines.Item(i);
return null;
}
ITAPILine line = find_line(TPLines_cb.SelectedItem.ToString());
if (!line.Opened)
{
if (line.Open())
messagebox.show("line is open");
{
در کد بالا ابتدا تابع find_line صدا زده می شود تا با توجه به نام دستگاه انتخاب شده ، line مربوط به آن را برگرداند.این متد یک رشته را دریافت کرده و یک متغیر از نوع ITAPILine را برمی گرداند.
بعد از این ابتده بوسیله متغیر opend چک می کنیم آیا این خط قبلا باز شده است یا نه.اگر یاز نشده باشد تابع open را صدا زده و خط را باز می کنیم.تابع open هیچ متغیری را نمیگیرد و یک متغیر boolean را برمیگرداند.بدین ترتیب ما یک خط یا همان مودم را آماده دریافت تماس کرده ایم.
متغیر opend از کلاس ITAPILine : چک میکند که آیا شی مربوطه از کلاس ITAPILine (که در واقع همان مودم هست) باز شده یا نه.اگر باز باشد True برمیگرداند.
تابع open از کلاس ITAPILine: شی مربوط به کلاس ITAPILine را (که همان مودم هست) باز و آماده تماس میکند.اگر با موفقیت باز شود ، true بر میگرداند.
به همین ترتیب تابع close یک خط را می بندد.
تست کنید اگر مشکلی بود درخدمتم.