04-10-12, 05:46 PM
الآن سوف نقوم بعملية تسهيل لبرنامجنا حتى لا نجبر المستخدم إلى الذهاب إلى خصائص المودم فسوف نقوم من خلال برنامجنا بالبحث عن المنافذ المتاحة و إضافتها إلى قائمة منسدلة وبذلك نسهل على المستخدم عملية الاختيار .
نضيف موديولModule جديد ونسميه ListCommPorts
ونضع فيه الكود التالي :
نعود الآن إلى النموذج form ونعدل قليلا في التصميم ليصبح على الشكل التالي :
[ATTACH=CONFIG]635[/ATTACH]
ماذا أضفنا : أداتين فقط
الأولى زر أمر جديد Command اسمه AvailablComm
الثانية قائمة منسدلة جديدة اسمها cboComm
هذا التصميم الجديد سيتيح لنا معرف المنافذ المتاحة بالنقر على الزر ما هي المنافذ المتاحة
الآن نضع الكود التالي:أسفل الكود في الفورم وهما حدث النقر للزر ليظهر المنافذ المتاحة وكذلك حدث النقر على المنفذ لينتقل الرقم إلى صندوق رقم المنفذ تلقائيا بالضغط عليه
في كود فحص المنافذ ستجد الرقم 1 الى 25طبعا تستطيع إنقاص الرقم أو زيادته أنا اعتمدت فحص 25 منفذفقط.انتهينا الآن من برنامجنا الصغير الذي يقوم بعمليات الاتصال و إرسال الرسائل.
نضيف موديول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 منفذفقط.انتهينا الآن من برنامجنا الصغير الذي يقوم بعمليات الاتصال و إرسال الرسائل.
