الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التحكم عبر الحاسوب بالاجهزة الخارجية بلغة VB.NET

بدأه حسين احمد طالب في 5 أبريل 2013 · 3 رد · 5,056 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع


مقدمة
كثيرا ما نحتاج الى استخدام الحاسوب لعرض نتائج معينة ترسل من جهاز خارجي او التحكم بجهاز خارجي عبر الحاسوب .او تحسس بحالة جهاز معين وتمرير حالته الى الحاسوب الذي بدوره يحلل الحالة ويأمر الجهاز الخارجي بتنفيذ عمل معين من خلال إرسال أوامر للجهاز الخارجي.مثلا أجهزة التكييف تمرر نسبة هواء الغرفة الى الحاسوب وهو بدوره يرى اذا كانت درجة البرودة اعلى من المطلوب يرسل امر الى المكيف بتقليل نسبة البرودة . او  مثلا التحكم بمروحة نشغلها ونوقفها  عبر الحاسوب  .
اي هنا الحاسوب فقط يرسل أوامر تم تعريف معناها لدى الجهاز الخارجي لتنفذ . مثلا في برمجة PIC (الذي يكتب كوده بلغة Micro C )الخاص بجهاز إنارة خارجي مربوط بحاسوب  تم تحديد الرقم 8H لتشغيل الضوء الأخضر على الجهاز الخارجي فعند ارسال 8H بلغة VB.NET الى الجهاز الخارجي عبر المنفذ المربوط عليه الجهاز سوف يعمل الضوء الأخضر في داخله .
اي هنا دور لغة VB.NET هي تمرير أوامر  من الحاسوب الى الجهاز الخارجي  وتكون هذه الأوامر معرفة لدى الجهاز الخارجي   او يستلم الحاسوب  بيانات من الجهاز الخارجي  ليحللها ويعالجها
سنحتاج الى Cable  يربط بين الحاسوب والجهاز الخارجي ليمرر البيانات بين الطرفين كما في الشكل(1) بالأسفل   طبعا الأجهزة الخارجية ممكن ان تتصل بالحاسوب عبر Serial Port او عبر USB ففي كلا الحالتين يفتح منفذ بين الجهاز والحاسوب لكن في حالة  USB تنتقل البيانات بشكل تسلسلي وسريع و Serial Port  أيضا ينقل بشكل تسلسلي .واغلب الحواسيب الحديثة لا تحتوي على Serial Port وتستخدم USB في إرسال واستلام البيانات
  untitled1.png
شكل(1) Cable يربط بين حاسوب وجهاز خارجي


المنافذ COM & LPT
وبما إننا نريد أن نتعامل مع أجهزة خارجية فلا بد من وجود منفذ معين يتصل به هذا الجهاز الخارجي وكل جهاز خارجي يتصل مع الحاسوب يكون له  الحاسوب منفذ معين من خلال هذا المنفذ نستطيع إرسال بيانات للجهاز واستلام البيانات القادمة من الجهاز من خلال هذا المنفذ وتكون أرقام المنافذ بشكل التالي COM وبعده رقم المنفذ مثلا COM3 معناه المنفذ الثالث .
ولمعرفة المنفذ الذي سيشغله أي جهاز نفتح  Device Manager من خلال الذهاب إلى

 ("Start"? "Run"? "devmgmt.msc")

صورة من جهاز LapTop نرى انه يستخدم كثير من المنافذ من اجل تقنية Bluetooth 

image6.png

صورة من حاسبة مكتبية

DeviceManagerforPorts5.png


في تبويب Ports (COM & LPT) سوف تظهر لنا المنافذ المستغلة في الحاسوب مثلا هنا حدد COM1  مستخدم من قبل منفذ الاتصال. فعند ربط أي جهاز خارجي بالحاسوب سيظهر هنا اسم الجهاز ورقم المنفذ الذي سيستغله ومن خلال معرفة الرقم الذي يستغله الجهاز الخارجي نستخدم هذا المنفذ في إرسال بيانات له ونستقبل بيانات منه

التعامل مع الأجهزة الخارجية في بيئة VB.NET
هناك مكتبة خاصة بالتعامل مع الأجهزة الخارجية تحتوي على جميع الأدوات التي سنحتاجها في التعامل مع أي جهاز خارجي  سوف نستدعيها في أي برنامج نتعامل من خلاله مع المنافذ وهي المكتبة التالية

 

VB.NET CodeImports System.IO.Ports

 

بما إننا نتعامل مع المنافذ  هناك أداة اسمها SerialPort  تمكنا من الاتصال والتعامل مع الأجهزة الخارجية فيها  فيه كل ما نحتاج إليه

 

image2.png

 

أو نكونها بالكود نعرف  كائن جديد من نوع  SerialPort في التعريفات العامة بشكل التالي 

 

VB.NET CodeDim SerialPort1 As New SerialPort

 


تطبيق: لدينا جهاز خارجي فيه شاشة عرض يعرض البيانات القادمة من الحاسوب على شاشته .عند ربطه بالحاسوب يأخذ   منفذ COM1 .وهذا الجهاز مبرمج انه يستقبل البيانات بشكل سلسلة نصية لكلي يعرضها على شاشته؟
 

SerialComBASICStamp4.jpg


المطلوب انه نكون برنامج فيه Textbox1 وزر إرسال Button1 ونكتب في Textbox1 بيانات ونضغط إرسال تعرض هذه البيانات على الجهاز الخارجي. وأداة ComboBox1 لعرض جميع منافذ. نكون مشروع جديد كما في الشكل
 

image3.png


في البداية نستدعي المكتبة المتخصصة بالتعامل مع المنافذ ونكون كائن جديد من نوع SerialPort  للتعامل من خلاله مع المنفذ وإرسال بيانات إلى الجهاز الخارجي

 

VB.NET Code
 Imports System.IO.Ports
Public Class Form1
Dim SerialPort1 As New SerialPort
End Class

 

لكي نحمل ComboBox1 بجميع منافذ الحاسبة الفعالة في حدث تحميل النافذة Form1_Load نكتب الكود التالي. حيث يعمل أجراء SerialPort.GetPortNames بجلب جميع منافذ الحاسبة الفعالة لكي نعرضها منفذ منفذ داخل اداة ComboBox1  وحتى يسهل لنا اختيار المنفذ المطلوب بكل برنامج

 

VB.NET Code
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ComboBox1.Items.Clear()
For Each Nport As String In SerialPort.GetPortNames
ComboBox1.Items.Add(Nport)
Next
End Sub

 

في زر الإرسال نكتب الكود التالي  .هنا استخدمنا أسلوب يفتح منفذ و بعد كل إرسال يغلق المنفذ نستطيع أيضا فتح المنفذ مرة واحدة واستمرار إرسال البيانات عليه.وسيقوم هذا الكود بإرسال النصوص التي سنكتبها داخل  Textbox1 الى الجهاز الخارجي المربوط على المنفذ الذي سنختاره من ComboBox1

 

VB.NET Code
Try
With SerialPort1
.PortName = ComboBox1.Text
.BaudRate = 34800
.DataBits = 8
.Parity = IO.Ports.Parity.None
.StopBits = IO.Ports.StopBits.One
.Handshake = IO.Ports.Handshake.None
End With

If Not (SerialPort1.IsOpen = True) Then
SerialPort1.Open()
End If

SerialPort1.DiscardOutBuffer()
SerialPort1.Write(TextBox1.Text)

SerialPort1.Close()
MsgBox("تم ارسال البيانات الى الجهاز الخارجي")
Catch ex As Exception
MsgBox(ex.Message)
End Try

 

 

كود البرنامج كامل

 

VB.NET Code
Imports System.IO.Ports
Public Class Form1
Dim SerialPort1 As New SerialPort
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
With SerialPort1
.PortName = ComboBox1.Text
.BaudRate = 34800
.DataBits = 8
.Parity = IO.Ports.Parity.None
.StopBits = IO.Ports.StopBits.One
.Handshake = IO.Ports.Handshake.None
End With
If Not (SerialPort1.IsOpen = True) Then
SerialPort1.Open()
End If
SerialPort1.DiscardOutBuffer()
SerialPort1.Write(TextBox1.Text)
SerialPort1.Close()
MsgBox("تم ارسال البيانات الى الجهاز الخارجي")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ComboBox1.Items.Clear()
For Each Nport As String In SerialPort.GetPortNames
ComboBox1.Items.Add(Nport)
Next
End Sub
End Class

 

 

image5.png

 

 

مدونتي

http://hussienahmmed.blogspot.com/

------------------

حسين الربيعي

 

مهندس برامجيات من العراق

 

ادرس  في  RIT  في الولايات المتحدة

 

مدونتي

http://hussienahmmed.blogspot.com/

 

قناة اليوتيوب الخاصة بلدورات

https://www.youtube.com/user/alxs1aa

#2

جزاك الله خير اخي الكريم  بارك الله فيك

الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك  فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة

#3

السلام عليكم ومرحبا يالجميع

لقد استهواني هذاالموضوع ولكن العين بصيره واليد قصيره

فلقد اشتريت  برنامج visual studio c++.net 2003 standard ويتضمن 7 اقراص:

قرصين لتحميل النظام -- وقرص يحتوى على ملفات هي:

’microsoft frontpage 2000 web--Extention client--SetupRutine Files--Microsoft -Netframework 1.1

ثلا ثة اقراص

MSDN -----وقرص واحد لم استعمله وهو Windows 2000

ولما حملت البرنامج على جهازي  XP Pro لم اجد ضمن محتوياته visual Basic مع ان الأوراق المرفقه مع البرنامج تفيد بوجوده مع محتويات شاشته الرئيسيه ولم يظهر  سوى Visual C++ Project مسبوقه بعلامة + وكذلك فقره اخرى تحتها وهي

 

setup and development projects

  وكذلك أخر ى مسبوقه بعلامة+ هي Other Projects وتحتها V isual Studio Solutins

ولقد حملته على اكثر من حهاز وعلى نظام  xp7  ولكن النتيجه واحده

ارجو ممن له خبره مساعدتي لأني مهتم ببرمجة Visual Basic .Net جزاكم الله خيرا

ربما الموضوع فى غير مكانه

#4

موضوع متميز نرجوا المزيد من الأمثلة

شكرا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…