PDA

View Full Version : سوال: چک کردن وضعیت خط تلفن modem phone line status



habil_57
سه شنبه 24 شهریور 1388, 23:35 عصر
چک کردن وضعیت خط تلفن modem phone line status
کسی میتونه در باره Error message هایی که مودم تولید میکنه کمک کنه ؟

مثل کد خطاهایی که ویندوز در هنگام بروز خطا نشان میدهد.

665 The modem is not properly configured (http://barnamenevis.org/forum/ms-its:C:\WINDOWS\Help\netcfg.chm::/HELP=netcfg.hlp TOPIC=HC_PORT_NOT_CONFIGURED).
666 The modem is not functioning (http://barnamenevis.org/forum/ms-its:C:\WINDOWS\Help\netcfg.chm::/HELP=netcfg.hlp TOPIC=HC_DEVICE_NOT_READY).
676 The phone line is busy (http://barnamenevis.org/forum/ms-its:C:\WINDOWS\Help\netcfg.chm::/HELP=netcfg.hlp TOPIC=HC_LINE_BUSY).

میخوام قبل از اقدام به شماره گیری وضعیت خط رو چک کنم بعدا شماره گیری کنم
اولا مودم نصبه یا نه؟
ثانیا بوق آزاد داریم یا نه؟ no dial ton نباشه

کاربرد : مثلا وقتی تو یک سازمان شما مجبوری روی سانترال 9 یا # بگیری تا خط آزاده بهت بده این کاربرد داره ؟
تا عدد مربوطه رو شماره گیری نکین خط آزاد به شما نمیده

fazelm
چهارشنبه 25 شهریور 1388, 02:25 صبح
چک کردن وضعیت خط تلفن modem phone line status
کسی میتونه در باره Error message هایی که مودم تولید میکنه کمک کنه ؟

مثل کد خطاهایی که ویندوز در هنگام بروز خطا نشان میدهد.

665 The modem is not properly configured (http://barnamenevis.org/forum/ms-its:C:\WINDOWS\Help\netcfg.chm::/HELP=netcfg.hlp TOPIC=HC_PORT_NOT_CONFIGURED).
666 The modem is not functioning (http://barnamenevis.org/forum/ms-its:C:\WINDOWS\Help\netcfg.chm::/HELP=netcfg.hlp TOPIC=HC_DEVICE_NOT_READY).
676 The phone line is busy (http://barnamenevis.org/forum/ms-its:C:\WINDOWS\Help\netcfg.chm::/HELP=netcfg.hlp TOPIC=HC_LINE_BUSY).

میخوام قبل از اقدام به شماره گیری وضعیت خط رو چک کنم بعدا شماره گیری کنم
اولا مودم نصبه یا نه؟
ثانیا بوق آزاد داریم یا نه؟ no dial ton نباشه

کاربرد : مثلا وقتی تو یک سازمان شما مجبوری روی سانترال 9 یا # بگیری تا خط آزاده بهت بده این کاربرد داره ؟
تا عدد مربوطه رو شماره گیری نکین خط آزاد به شما نمیده

خوب به برنامه بگو اگر اروری دریافت کرد کاری نکنه



Dim xx As ErrObject
On Error GoTo xx

'
xx:
MsgBox(" ")

habil_57
پنج شنبه 26 شهریور 1388, 22:17 عصر
پاسخ به :
خوب به برنامه بگو اگر اروری دریافت کرد کاری نکنه

اول اینکه از جوابت ممنون . مرسی از اینکه توجه کردی!
ولی پسر خوب من میخوام وضعیت خط رو شناسایی و هندل کنم .نه اینکه خطای تولید شده رو زیر سیبیلی رد کنم.
واضح بگم :
من یه عدد رو باید بگیرم تا خط آزاد بشه اون وقت اگر خط آزاد شد شماره اصلی رو بگیرم پس نیاز دارم بعد از گرفتن شماره اول ببینم سانترال به من خط داده یا نه؟
راه شما کلاسی لازم داره که شیء خطا تو اون کلاس کدهای استثناء رو برگردونه تا بشه به روش شما کدهای اکسکپشن رو هندل کرد و پیغام مناسب رو نشون داد.
پس با این کد نمی تونی پیغام مناسب رو به کاربر نشون بدی .
مثلا این پیغامها : که اصلی ترین موارد هستند و شما هم خوب میشناسیدشون.

کاربر گرامی :
*** خط اشغال است ؟ Busy
***خط تلفن به مودم متصل نیست! No dial ton
*** مودم نصب نیست یا شناسایی نشد ! not Connected
*** و ... از این نوع وضعیت ها.
*** یعنی متناسب با نوع بوق های مخابرات بشه وضعیت فعلی خط رو شناسایی کرد .

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

Saeed Hamed
شنبه 28 شهریور 1388, 02:21 صبح
اگر با پورت COM کار میکنی میتونی با استفاده از دستور AT متوجه این بشی که مودم موجود هست یا نه. و برای اینکه بفهمی خط آزاده یا نه یا اینکه اصلا خط وصله خود مودم بعد از رسیدن به این خطاها برات اون خطا رو ارسال می کنه و میتونی اون رو از روی پورت بخونی. به همین راحتی :چشمک:
موفق باشی

habil_57
شنبه 28 شهریور 1388, 16:13 عصر
اولا : قربان هر کی که جواب میده
ثانبا: فقط کد بدین راهنمایی شفاهی هم خودتون خسته میشید هم تو این مورد نتیجه نمیده من راه رو بلدم که چی باید از کجا چطور بشه کد ندارم مهربونای باصفا .
saeed hamed جان
من الان تمام کدهای لازم برای تماس و قطع تماس و ... رو دارم و دارم توی نرم افزار اداره از اونها استفاده میکنم.اما اگه قبلش خط مشکل داشته باشه برنامه برا خودش الافه
مودم من مثلا zoltrix internal و روی com3 نصبه
حالا لطف کن یکی دو خط کد بده وضعیت اشغال بودن خط رو چک کنه.
چه کدی برداشتن گوشی رو روی مودم شبیه سازی میکنه(مثل وقتی که شما گوشی رو برمیداری و صدای بوق آزاد میشنوی؟)
شما وقتی میخوای با گوشی زنگ بزنی قدم های زیر رو برمیداری.
قدم اول : گوشی رو بر میداری : صدای بوق می شنوی حالا یا مثل توی خونه خط همیشه آزاده و یا نه مثل توی اداره باید یک عدی مثل 9 یا # رو بگیری تا خط آزاد بشه .
قدم دوم : اگر خط آزاده که شماره مورد نظر رو میگیری اگر نه باید قطع کنی مجددا سعی کنی
حالا الگوریتم اون رو که خیلی سخته من میدم کدش رو که خیلی آسون شما زحمت بکشین

اصلا گوشی داریم یا نه (مودمی در کار است یا نه؟)
|----------------------------------- |
خیر : برو به پایان----------------- بلی : گوشی رو بردار (کد فعال کردن مودم)
-------------------------------------|
-------------------------------------|
-------------------------------------|
| -------------------------------- Dial Ton داریم یا نه؟ lbl:1
|----------------------------------- |
خیر : برو به پایان---------------- بلی : شماره # رو بگیر
-------------------------------------|
| ---------------------------------آیا خط آزاد شد یا خیر؟
|----------------------------------- |
خیر : دیسکانت کن goto 1 -----بلی : شماره ######رو بگیر : الو سلام علیکم

و دنباله ... کار

Saeed_m_Farid
شنبه 28 شهریور 1388, 16:50 عصر
اولا : قربان هر کی که جواب میده
ثانبا: فقط کد بدین راهنمایی شفاهی هم خودتون خسته میشید هم تو این مورد نتیجه نمیده من راه رو بلدم که چی باید از کجا چطور بشه کد ندارم مهربونای باصفا .
...من الان تمام کدهای لازم برای تماس و قطع تماس و ... رو دارم و دارم توی نرم افزار اداره از اونها استفاده میکنم.اما اگه قبلش خط مشکل داشته باشه برنامه برا خودش الافه
مودم من مثلا zoltrix internal و روی com3 نصبه
دوست عزیز، جناب habil_57 :
آخه شما لطف کنید یکمی از اون "تمام کدهای لازم"، کامپوننتی که استفاده میکنی، و بخشی که مشکل دارید رو بفرمایید تا بهتر بشه راهنمایی کرد، اولین قدم همون تشخیص آزاد بودن خط (یعنی وجود سیگنال 6 کیلوهرتز ممتد روی خط) هست که شما میگی من اینو از کجا بفهمم! دوستان هم که راهنمایی می کنن شما میخواهید براتون کد کامل یه Call Center بفرستن، این که نمیشه راهنمایی همینجوری میشه دیگه؛
بگذریم، مثلاً (با فرض اینکه شما تمام کدهای لازم رو دارید) من نحوه تشخیص وجود خط آزاد (بقول شما فعال بودن) رو برای نمونه با کامپوننت TeleTools v3.7، این پایین میارم ولی بالطبع نمیشه اون الگوریتم شما رو یه لقمه آماده کرد و تحویل داد :

'************************************************* ***************
' CheckActive_Click - Activate and Deactivate the TAPI Line device
'************************************************* ***************
Private Sub CheckActive_Click()
If CheckActive.Value = 0 Then
If etLine1.DeviceActive Then
WriteLog ("etLine1.DeviceActive = False")
etLine1.DeviceActive = False
If Not etLine1.DeviceActive Then
CommandDial.Enabled = False
Else
WriteLog (vbTab & "Error = " & etLine1.ErrorText)
CheckActive.Value = 1
End If
End If
Else
If Not etLine1.DeviceActive Then
CommandHangup.Enabled = False
WriteLog ("etLine.DeviceActive = True")
etLine1.DeviceActive = True
If etLine1.ErrorNumber = INVALID_SERIAL_NUMBER Then
MsgBox ("Error opening line device: " & etLine1.ErrorText & vbCrLf & vbCrLf & _
"See the help topic:" & vbCrLf & vbCrLf & _
vbTab & "Why Serial Numbers Are Important")
End If
' Check for invalid_mediamode error and check tsp property for a non compliant modem
If (Not etLine1.DeviceActive) And (etLine1.ErrorNumber = LINEERR_INVALMEDIAMODE) And _
(InStr(1, etLine1.TAPITSP, "Modem", 1) > 0) Then
etLine1.PrivilegeNone = True 'set proper priviledge for incompatible modems
etLine1.DeviceActive = True
MsgBox ("The program has detected that your device is a (" + etLine1.DeviceName & _
") DATA modem and therefore has no voice capabilities." & vbCrLf & vbCrLf & _
"We will now force a compatibility mode in order to allow you to " & _
" continue while greying out options your modem may not support." & vbCrLf & vbCrLf & _
"This device will be able to:" & vbCrLf & vbCrLf & vbTab & "DIAL" & vbCrLf & vbCrLf & _
"If you think you have a voice modem, expected more functionality, " & _
"or other programs provide more functionality with this modem, see the " & _
"topic 'Working with Modems' in the Appendix of the TeleTools help file.")
End If
If etLine1.DeviceActive Then
CommandDial.Enabled = True
Else
WriteLog ("Error = " & etLine1.ErrorText)
CheckActive.Value = 0
End If
End If
End If
End Sub

اینجا (http://www.exceletel.com/products/TeleTools/SamplePrograms/etQuickDial/SourceCode.htm)هم میتونی سورس کامل نمونه برای این کامپوننت رو ببینی، در مورد KDTele هم بی شمار کد و نمونه هست که فقط باید بدونی چی میخوای ...

موفق باشید.

habil_57
یک شنبه 29 شهریور 1388, 18:48 عصر
دوست عزیز، جناب habil_57 :
آخه شما لطف کنید یکمی از اون "تمام کدهای لازم"، کامپوننتی که استفاده میکنی، و بخشی که مشکل دارید رو بفرمایید تا بهتر بشه راهنمایی کرد، اولین قدم همون تشخیص آزاد بودن خط (یعنی وجود سیگنال 6 کیلوهرتز ممتد روی خط) هست که شما میگی من اینو از کجا بفهمم! دوستان هم که راهنمایی می کنن شما میخواهید براتون کد کامل یه Call Center بفرستن، این که نمیشه راهنمایی همینجوری میشه دیگه؛
بگذریم، مثلاً (با فرض اینکه شما تمام کدهای لازم رو دارید) من نحوه تشخیص وجود خط آزاد (بقول شما فعال بودن) رو برای نمونه با کامپوننت TeleTools v3.7، این پایین میارم ولی بالطبع نمیشه اون الگوریتم شما رو یه لقمه آماده کرد و تحویل داد :

'************************************************* ***************
' CheckActive_Click - Activate and Deactivate the TAPI Line device
'************************************************* ***************
Private Sub CheckActive_Click()
If CheckActive.Value = 0 Then
If etLine1.DeviceActive Then
WriteLog ("etLine1.DeviceActive = False")
etLine1.DeviceActive = False
If Not etLine1.DeviceActive Then
CommandDial.Enabled = False
Else
WriteLog (vbTab & "Error = " & etLine1.ErrorText)
CheckActive.Value = 1
End If
End If
Else
If Not etLine1.DeviceActive Then
CommandHangup.Enabled = False
WriteLog ("etLine.DeviceActive = True")
etLine1.DeviceActive = True
If etLine1.ErrorNumber = INVALID_SERIAL_NUMBER Then
MsgBox ("Error opening line device: " & etLine1.ErrorText & vbCrLf & vbCrLf & _
"See the help topic:" & vbCrLf & vbCrLf & _
vbTab & "Why Serial Numbers Are Important")
End If
' Check for invalid_mediamode error and check tsp property for a non compliant modem
If (Not etLine1.DeviceActive) And (etLine1.ErrorNumber = LINEERR_INVALMEDIAMODE) And _
(InStr(1, etLine1.TAPITSP, "Modem", 1) > 0) Then
etLine1.PrivilegeNone = True 'set proper priviledge for incompatible modems
etLine1.DeviceActive = True
MsgBox ("The program has detected that your device is a (" + etLine1.DeviceName & _
") DATA modem and therefore has no voice capabilities." & vbCrLf & vbCrLf & _
"We will now force a compatibility mode in order to allow you to " & _
" continue while greying out options your modem may not support." & vbCrLf & vbCrLf & _
"This device will be able to:" & vbCrLf & vbCrLf & vbTab & "DIAL" & vbCrLf & vbCrLf & _
"If you think you have a voice modem, expected more functionality, " & _
"or other programs provide more functionality with this modem, see the " & _
"topic 'Working with Modems' in the Appendix of the TeleTools help file.")
End If
If etLine1.DeviceActive Then
CommandDial.Enabled = True
Else
WriteLog ("Error = " & etLine1.ErrorText)
CheckActive.Value = 0
End If
End If
End If
End Sub

اینجا (http://www.exceletel.com/products/TeleTools/SamplePrograms/etQuickDial/SourceCode.htm)هم میتونی سورس کامل نمونه برای این کامپوننت رو ببینی، در مورد KDTele هم بی شمار کد و نمونه هست که فقط باید بدونی چی میخوای ...

موفق باشید.
ضمن تشکر از Saeed_m_Farid
کدهایی که گفتم مربوط به سورس های KDTEL و ExceleTel و سورس کد های کار با Phone dialer ویندوز هستن و همه اینها رو دارم اما نمی تونستم از میون این کد ها فقط کدهای مربوط به " برداشتن گوشی " , " تشخیص بوق آزاد " و " دیسکانکت " رو تشخیص بدم . من برنامه کامل رو نمی خوام فقط سه تا علامت رنگی برای این سه قسمت رو لازم دارم. بابا ما ضعیفیم داداش چرا میزنی؟

Saeed_m_Farid
دوشنبه 30 شهریور 1388, 12:29 عصر
...
کدهایی که گفتم مربوط به سورس های KDTEL و ExceleTel و سورس کد های کار با Phone dialer ویندوز هستن و همه اینها رو دارم اما نمی تونستم از میون این کد ها فقط کدهای مربوط به " برداشتن گوشی " , " تشخیص بوق آزاد " و " دیسکانکت " رو تشخیص بدم . من برنامه کامل رو نمی خوام فقط سه تا علامت رنگی برای این سه قسمت رو لازم دارم. بابا ما ضعیفیم داداش چرا میزنی؟


واسه ExceleTel تو پست قبلی ام، نمونه کد واستون قرار دادم، لینک هم گذاشتم و همونطورکه عرض کردم، تو همون لینک "میتونی سورس کامل نمونه برای این کامپوننت رو ببینی"، همه چی برای شروع کار تو این سورس نمونه بصورت ساده هست، اگه این کدها رو دارید که نمیدونم مشکلتون کجاست؟ دقیقاً بفرمایید کجاش مشکل دارید تا اگه از دستم بر میاد در خدمت باشم ...




من زیاد با VB.Net کار نمی کنم، چون با دید بدی که VB6 واسم ایجاد کرده کلاً با اسم VB مشکل دارم (مساله شخصی هست، لطفاً بی خیال توضیحات در زمینه این موضوع شوید)، ضمناً دیگه زیاد با خطوط آنالوگ هم کار نمی کنم ولی تا اونجایی که یادمه (و به کدها رجوع کردم) یه رویداد OnCallState برای KDTele وجود داره که اونجا میتونید رویدادهای موردنظرتون رو هندل کنید، این رویدادها شامل csBusy، csConnected، csDialing، ... تا csError میشه و میتونید تو هرکدوم از این ها، عمل مورد نظرتون رو انجام بدین، نمونه (خیلی خلاصه شده) کد C#‎‎‎‎ برای رویداد OnCallState رو براتون قرار میدم :


private void KDPhone1_OnCallState(object sender, AxKDTele.IKDPhoneEvents_OnCallStateEvent e)
{
switch (e.callState)
{
case KDTele.TxCallState.csBusy:
MessageBox.Show("Busy"); //Busy tone, any time
break;
case KDTele.TxCallState.csConnected://after answer
MessageBox.Show("اتصال برقرار شده است");
//here need a second delay in code or wave
int iRet = KDVoice1.Play(KDPhone1.WavePlayID,
Application.StartupPath + @"\" + "EnterPassPrompt.wav",
0, -1);
if (iRet != 0)
{
MessageBox.Show("خطای پخش صدا : \n\r" + KDPhone1.GetErrorMsg(iRet));
}
break;
case KDTele.TxCallState.csDialing:
MessageBox.Show("در حال شماره گیری");
break;
case KDTele.TxCallState.csDialTone:
MessageBox.Show("DialTone"); // خط آزاد
break;
case KDTele.TxCallState.csDisconnected:
MessageBox.Show("قطع تماس");
break;
case KDTele.TxCallState.csOfferedCallDropped:
MessageBox.Show("زنگ تلفن قطع شد");
break;
case KDTele.TxCallState.csOffering: //After first ring,before csRing
if (on) KDPhone1.Answer(0);
MessageBox.Show("زنگ تلفن");
break;
case KDTele.TxCallState.csProceeding:
MessageBox.Show("Proceeding");
break;
case KDTele.TxCallState.csRing: //each ring
MessageBox.Show("زنگ تلفن");
break;
case KDTele.TxCallState.csWaitingDisconnection:
MessageBox.Show("WaitingDisconnection");
break;
case KDTele.TxCallState.csError:
MessageBox.Show("رویداد خطا : \n\r" + KDPhone1.GetErrorMsg(e.param1));
break;
}

}

در مورد وضعیت خط هم مثل همین رویداد یه رویداد دیگه هست به نام OnLineState که رویدادهای مرتبط با وضعیت خط رو میتونید اونجا هندل کنید، فکر کنم سه تا حالت LineState بصورت lsActivated ،lsDeactivated و lsError وجود داره و به همین صورت بالا، باید خط (ها) و رابط کاربری تون رو مدیریت کنید.


اگه منظورتون از "سه تا علامت رنگی" مواردی هست که تو پست قبلی ذکر کردید، موارد 2 و 3، که تو همین رویداد OnCallState واستون میاد ولی درمورد " برداشتن گوشی "، موضوع فرق میکنه و قبلاً خیلی در این مورد بحث شده، این مورد و سایر موارد مرتبط با سیگنالینگ (تشخیص اشغال خط، صدای زنگ و گوشی برداری طرف مقابل و ... ) روی خطوط آنالوگ (بر خلاف خطوط دیجیتال) بصورت مجزا با Voice نمیاد، بنابراین شما (یا سخت افزار/کامپوننت مورداستفاده) باید بتونین این موارد رو از صدای روی خط واکشی کنند، برای اینکار مثلاً کارت آنالوگ Dialogic (برای نمونه Dialogic D/160SC-LS)، قبل ارسال مکالمات به DSP (پردازنده مخصوص سیگنالهای صوتی) مدار واسطی برای تشخیص سیگنالینگ روی خطوط آنالوگ داره بنام (EMI (electromagnetic interference : که به ادعای سازنده (http://www.amdevcomm.com/voice-mail-products/voice-mail-components/dialogic/d_160-sc-ls.html) کار تجزیه سیگنالینگ و صوت رو انجام میده؛ ولی در حالت کلی باید مکالمات با استاندارد "FCC-part 68 class B ring detection circuitry" سازگار باشه، درحالی که با این ابتکارات "همراه اول" و "ایرانسل" (مثلاً بجای بوق اشغال یا انتظارمکالمه و ... یه خانمی حرف میزنه! یا کلاً سایر کارهای غیراستاندارد) فکر نمی کنم این مدار تشخیص سیگنالینگ هم جواب بده ...

http://www.amdevcomm.com/images/dialogic/1765b02.gif
امیدوارم زیاد گیج تون نکرده باشم، ولی خواستم موضوع رو بازتر کنم تا دقیقاً متوجه بشید، این موردی که شما فرمودین بهش میگن off hook طرف مقابل (remote party)؛ و موردی هم که شما قراره detect کنید اینه : coupled 600 Ohm (@ 1.8 kHz) termination


اینجا رو هم یه نگاهی بندازید بد نیست، جناب mpmsoft نمونه کدهای قابل استفاده ای قرار دادن : ارتباط با خط داخلی در KDtele (http://www.barnamenevis.org/forum/showthread.php?t=145691)
بنده قصد زدن (بی احترامی به) شما رو نداشتم، امیدوارم از صحبت های بنده سوء تعبیر نشده باشه؛


موفق باشید.

habil_57
سه شنبه 31 شهریور 1388, 00:37 صبح
متشکرم بسیار کمک کرد .
در هر صورت الان کاری جز کلیک روی تشکر و + ارزیابی کردن پست شما از دستم بر نمیاد.
بازم ممنون .بازم مزاحمتون میشم .

mina.net
یک شنبه 27 دی 1388, 13:06 عصر
سلام دوستان
هر چند مدت زیادی از این تاپک گذشته .
اگه می شه بفرمایید کامپونت KDtele رو از کجا دانلود کنم.

golshiri
دوشنبه 13 اردیبهشت 1389, 11:42 صبح
با سلام تشكر از آقاي Mani_rf مدير بخش به جهت راهنمايي و آقاي محمود مهري كه آموزش كار با Kdtele را تهيه نمودند
نمونه برنامه اي از PhoneDialer به همراه كد در زير تهيه شده اميدوارم مفيد واقع بشه
درصورتي كه دوستان تونستند كامل ترش كنند و در سايت قرار بدند تا بقيه هم استفاده كنند

com_eng_abasszadeh
یک شنبه 17 مرداد 1389, 18:41 عصر
سلام به همه دوستان.
یه کامپوننت میخوام که متنی که بهش داده میشه رو به فارسی بخونه.
خودم یک کامپوننت دارم ولی فقط متن انگلیسی رو میخونه.
ممنون میشم راهنمایی کنید.

com_eng_abasszadeh
چهارشنبه 27 مرداد 1389, 23:46 عصر
سلام دوست عزیز.
اگر بخوام با این کامپوننت توی یه شبکه دنبال خط آزاد بگردم...مثل 118 جندتا سیستم هست وقتی مشترک تماس میگیره میخوام سیستم ازاد رو پیدا کنه و خودش مستقیما به اون وصل بشه.
یه سوال دیگه : با این کامپوننت میشه شماره ای که تماس گرفته رو پیدا کرد؟

modern_amin
شنبه 06 اسفند 1390, 10:31 صبح
سلام به همه دوستان.
یه کامپوننت میخوام که متنی که بهش داده میشه رو به فارسی بخونه.
خودم یک کامپوننت دارم ولی فقط متن انگلیسی رو میخونه.
ممنون میشم راهنمایی کنید.
.
پیدا کردی فارسی بخونه به ما هم بگو.....
یک برنامه تو اینترنت با سورس به سی شارپ هست که متن رو میخونه ولی زیاد واضح نیست
مگه اینکه این دوتارو ترکیب کنی بتونی