تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
أوامر at بشكل مبسط و موسع --منقول--
#8
الآن سوف نقوم بعملية تسهيل لبرنامجنا حتى لا نجبر المستخدم إلى الذهاب إلى خصائص المودم فسوف نقوم من خلال برنامجنا بالبحث عن المنافذ المتاحة و إضافتها إلى قائمة منسدلة وبذلك نسهل على المستخدم عملية الاختيار .
نضيف موديولModule جديد ونسميه ListCommPorts
ونضع فيه الكود التالي :
كود :
Option Explicit
'// API Declarations
Public Declare Function CreateFile Lib
"kernel32" Alias "CreateFileA" (ByVal
lpFileName As String, ByVal
dwDesiredAccess As Long, ByVal
dwShareMode As Long,
lpSecurityAttributes As
SECURITY_ATTRIBUTES, ByVal
dwCreationDisposition As Long, ByVal
dwFlagsAndAttributes As Long, ByVal
hTemplateFile As Long) As Long
Public Declare Function CloseHandle Lib
"kernel32" (ByVal hObject As Long) As
Long
'// API Structures
Public Type SECURITY_ATTRIBUTES
    nLength As Long
    lpSecurityDescriptor As Long
    bInheritHandle As Long
End Type
'// API constants
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
Public Const OPEN_EXISTING = 3
Public Const FILE_ATTRIBUTE_NORMAL =
&H80
'// Return TRUE if the COM exists, FALSE
if the COM does not exist
Public Function COMAvailable(COMNum As
Integer) As Boolean
    Dim hCOM As Long
    Dim ret As Long
    Dim sec As SECURITY_ATTRIBUTES
    '// try to open the COM port
    hCOM = CreateFile("\\.\\COM" &
COMNum & "", 0, FILE_SHARE_READ + _
            FILE_SHARE_WRITE, sec,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
    If hCOM = -1 Then
        COMAvailable = False
    Else
        COMAvailable = True
        '// close the COM port
        ret = CloseHandle(hCOM)
    End If
End Function

نعود الآن إلى النموذج form ونعدل قليلا في التصميم ليصبح على الشكل التالي :
[ATTACH=CONFIG]635[/ATTACH]

ماذا أضفنا : أداتين فقط
الأولى زر أمر جديد Command اسمه AvailablComm
الثانية قائمة منسدلة جديدة اسمها cboComm
هذا التصميم الجديد سيتيح لنا معرف المنافذ المتاحة بالنقر على الزر ما هي المنافذ المتاحة
الآن نضع الكود التالي:أسفل الكود في الفورم وهما حدث النقر للزر ليظهر المنافذ المتاحة وكذلك حدث النقر على المنفذ لينتقل الرقم إلى صندوق رقم المنفذ تلقائيا بالضغط عليه

كود :
Private Sub AvailablComm_Click()
    'AvailablComm
    Dim iCount As Integer
    cboComm.Clear
    For iCount = 1 To 25
        If COMAvailable(iCount) Then
            cboComm.AddItem iCount
        End If
    Next
    cboComm.ListIndex = 0
End Sub
Private Sub cboComm_Click()
'print
TextCom.Text = cboComm.Text
End Sub

في كود فحص المنافذ ستجد الرقم 1 الى 25طبعا تستطيع إنقاص الرقم أو زيادته أنا اعتمدت فحص 25 منفذفقط.انتهينا الآن من برنامجنا الصغير الذي يقوم بعمليات الاتصال و إرسال الرسائل.


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة: Amir_Alzubidy


الردود في هذا الموضوع
أوامر at بشكل مبسط و موسع --منقول-- - بواسطة oneyemenweb2_mybb_import4801 - 04-10-12, 05:46 PM

التنقل السريع :


يقوم بقرائة الموضوع: