منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت (/showthread.php?tid=7418)



مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت - adsss - 17-12-12

[COLOR="#A52A2A"]منذ فترى وانا ابحث عن طرق ربط المودم مع vb.net وقد وجدت النتيجة الاولية في هذا المنتدى المبدع , ولكن ليس إلا بعض من المعلومات وهي كيفية فتح المنفذ والاتصال , فأرجو تقديم المساعدة لي في بحثي عن بعض الاكواد التي تساعد في

1_ كود للبحث عن ( رقم منفذ المودم خصيصاً وعرضه في msg او اي شيئ )
2_استعادة الموضوع ( كشف رقم المتصل عن طريق فيجوال بيسك دوت نت ) الذي وجدته ولكن في المنتدى القديم ولكنه معطل
[/COLOR]
انا استخدم هذا الكود الذي قدمه لي الأخ sooriaty03
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SerialPort1.Write("ATDT" & TextBox1.Text & Chr(13))
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        SerialPort1.Close()
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        SerialPort1.PortName = "COM1"    'اسم المنفذ قم بتغييره إلى الرقم الصحيح إذا لم يعمل
        SerialPort1.Open()
    End Sub
وهو للاتصال بالرقم الموجود في textbox وهو ناجح 100%
ولكن بقي ان اعرف كيف يتم البحث عن منفذ المودم من خلال البرنامج ايضاً


[COLOR="#000000"][SIZE=5]
وارجو المساعدة من الاخوى الكرام الذين حتى الان لم يتجاهلوني في اي سؤال ودائما كانت اجاباتهم
تقدم لي المزيد والمزيد من علمهم , واتمنا قريبا ان اشارك بإجابة بدلاً من كثرة الاسئلة


[/SIZE][/COLOR]


مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت - adsss - 18-12-12

ياجماعة الخير , معقو لمافي أي أحد عنده فكرة عن الموضوع


مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت - sooriaty03 - 18-12-12

السلام عليكم ورحمة الله وبركاته
بالنسبة للطلب الأول
قم بإضافة المكتبة System.Management
من Project
ثم Add Reference
ثم ضع هذا الكود
كود :
Imports System.Management
Partial Public Class Form1
    Public Function ModemsConnected(Optional ByRef ListOfModems() As String = Nothing) As String
        Dim modems As String = ""
        Dim _ListOfModems As New List(Of String)
        Try
            Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_POTSModem")
            For Each queryObj As ManagementObject In searcher.Get()
                If queryObj("Status") = "OK" Then
                    modems = queryObj("AttachedTo") & " - " & queryObj("Description")
                    _ListOfModems.Add(modems)
                End If
            Next
        Catch err As ManagementException
            MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
            Return ""
        End Try
        ListOfModems = _ListOfModems.ToArray
        Return modems
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ListOfModems() As String = {}
        Label1.Text = ModemsConnected(ListOfModems)
        ComboBox1.Items.AddRange(ListOfModems)
    End Sub
End Class

بالتوفيق


مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت - sooriaty03 - 18-12-12

بالنسبة للطلب الثاني وهو معرفة رقم المتصل
فالمطلوب:
أولاً: خدمة إظهار رقم المتصل من شركة الإتصالات.
ثانياً: أن يكون المودم يدعم خاصية إظهار رقم المتصل.

الطريقة:
إذا توفرت الشروط لديك سيبقى معرفة الكود المناسب لكي تطلب من المودم إظهار رقم المتصل (الكود سيكون باستخدام أوامر AT)
وهناك عدة أكواد تختلف من مودم لآخر
وهذه بعضها
كود :
AT#CID=1
AT#CLS=8#CID=1
AT#CID=2
AT%CCID=1
AT%CCID=2
AT+VCID=1
AT#CC1
AT*ID1

طبعا الطريقة الوحيدة لمعرفة أي أمر يعمل لديك هي تجربتها كلها
فالأمر الذي سيعمل لديك سيعطي نتيجة OK والذي لا يعمل سيعطي Error
إرسال الأمر سيكون بهذه الطريقة
كود :
SerialPort1.Write("AT#CID=1" & Chr(13))
ولقراءة النتيجة نضع الكود
كود :
SerialPort1.ReadExisting


الآن عندما يتصل بك أحدهم سوف تقوم الأداة باستدعاء الحدث SerialPort1_PinChanged
ليعلمك بأن لديك مكالمة
وعندما تقوم بقراءة البيانات الموجودة سوف يظهر لديك
كالآتي - إذا كان المودم يدعم خاصية كشف الرقم
كود :
RING
CID00966505555555
CIN
DATE050704
TIME1915
تفسير المعطيات:
السطر الأول = كلمة RING أي أن الهاتف يرن وهي الكلمة الافتراضية الوحيدة التي ستظهر إذا لم يكن المودم يدعم خاصية كشف الرقم
السطر الثاني = رقم المتصل
السطر الثالث = اسم المتصل وهو غير مدعوم في أغلب الشركات
السطر الرابع = التاريخ وهو هنا 050704 أي 5/7/2004
السطر الخامس = الوقت وهو هنا 19:15

مرفق مثال كامل على جميع ما تم ذكره منذ مشاركة الاتصال برقم هاتف إلى هذه المشاركة


بالتوفيق


مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت - adsss - 20-12-12

sooriaty03 كتب :السلام عليكم ورحمة الله وبركاته
بالنسبة للطلب الأول
قم بإضافة المكتبة System.Management
من Project
ثم Add Reference
ثم ضع هذا الكود
كود :
Imports System.Management
Partial Public Class Form1
    Public Function ModemsConnected(Optional ByRef ListOfModems() As String = Nothing) As String
        Dim modems As String = ""
        Dim _ListOfModems As New List(Of String)
        Try
            Dim searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_POTSModem")
            For Each queryObj As ManagementObject In searcher.Get()
                If queryObj("Status") = "OK" Then
                    modems = queryObj("AttachedTo") & " - " & queryObj("Description")
                    _ListOfModems.Add(modems)
                End If
            Next
        Catch err As ManagementException
            MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
            Return ""
        End Try
        ListOfModems = _ListOfModems.ToArray
        Return modems
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ListOfModems() As String = {}
        Label1.Text = ModemsConnected(ListOfModems)
        ComboBox1.Items.AddRange(ListOfModems)
    End Sub
End Class

بالتوفيق






بارك الله بك أخي الكريم sooriaty03 ,وعلى ردك المبدع وأنت قد اجبتني على سؤالي بخصوص الاتصال عن طريق المودم في موضوع سابق ... ولم أحب أن احرجك في هذا السؤال أيضاً فشكراً على رحابت صدرك
وزادك من علمه
وأخي الكريم الكود قد عمل معي بشكل ناجح جداً ولكن إن أمكن أن تشرح لي الكود الذي ارفقته حضرتك في المشاركة الأولى ( كود كشف المنفذ ) إن أمكن


وشيئ اخير بشأن كود كشف الرقم , فقد عمل لدي وظهرة كلمة ( RING ) فقط عند ورود اتصال فهل هذا يعني أن المودم لا يدعم كشف الأرقام مثلما فهمت من كلامك السابق ......؟

وســــــــــــــــلــــــــــــــمت يــــــــداكــــــــــــــــ


مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت - sooriaty03 - 20-12-12

adsss كتب :وشيئ اخير بشأن كود كشف الرقم , فقد عمل لدي وظهرة كلمة ( RING ) فقط عند ورود اتصال فهل هذا يعني أن المودم لا يدعم كشف الأرقام مثلما فهمت من كلامك السابق ......؟

وســــــــــــــــلــــــــــــــمت يــــــــداكــــــــــــــــ
حاول تغيير الأمر الظاهر باللون الأحمر
كود :
SerialPort1.Write("[color=#FF0000]AT#CID=1[/color]" & Chr(13))
بأحد الأوامر التالية حتى يعمل
كود :
AT#CID=1
AT#CLS=8#CID=1
AT#CID=2
AT%CCID=1
AT%CCID=2
AT+VCID=1
AT#CC1
AT*ID1
فإن لم يظهرالرقم فهذا يعني أن المودم لا يدعم هذه الخاصية
بالتوفيق


مساعدة بخصوص موضوع بالمنتدى القديم , كشف رقم المتصل عن طريق فيجوال بيسك دوت نت - sooriaty03 - 20-12-12

adsss كتب :
وأخي الكريم الكود قد عمل معي بشكل ناجح جداً ولكن إن أمكن أن تشرح لي الكود الذي ارفقته حضرتك في المشاركة الأولى ( كود كشف المنفذ ) إن أمكن
السلام عليكم
أخي الكريم في هذا الكود قمنا بإضافة مكتبة لاستدعاء معلومات عن النظام
ثم قمنا باستدعاء
Class ManagementObjectSearcher
الذي بدوره تستطيع استدعاء كل ما تريد معرفته عن النظام بواسطة بعض الكلمات الدلالية والتي تسمى
Windows Management Instrumentation (WMI)
في هذا المثال طلبنا جلب المعلومات عن المودم
وفي حلقة تكرارية حصلنا على المنفذ واسم المودم عن طريق الكلمات الدلالية وهي AttachedTo و Description بالتوالي
وهو المطلوب...
بالتوفيق