সিরিয়াল পোর্ট ইন্টারফেসিং এর জন্য ভিজুয়্যাল বেসিক ডট নেটে নিজেই সফটওয়্যার তৈরি করুন

asআমরা অনেকেই মাইক্রোকন্ট্রোলার আরডুইনো নিয়ে কাজ করছি। মাইক্রোকন্ট্রোলার আরডুইনো নিয়ে কাজ করতে গেলে প্রায়ই বিভিন্ন প্রজেক্টে সিরিয়াল পোর্টের মাধ্যমে হার্ডওয়্যারের সাথে কম্পিউটারের ইন্টারফেস করতে হয়। কারণ আমরা যখন আমাদের হার্ডওয়্যারকে কম্পিউটার থেকে সিগন্যাল পাঠিয়ে নিয়ন্ত্রণ করতে চাই তখনই আমাদের এই ধরণের সিরিয়াল কমিউনিকেশন প্রয়োজন হয়।

অনেকেই প্যারাল্যাল পোর্টের মাধ্যমে কম্পিউটার দ্বারা বিভিন্ন ডিভাইস নিয়ন্ত্রণের কথা শুনেছেন, কিন্তু সিরিয়াল কমিউনিকেশনে বেশ কিছু বাড়তি সুবিধা পাওয়া যায়। এক্ষেত্রে সবচেয়ে বড় সুবিধা হচ্ছে প্রয়োজনীয় তার কম লাগে, বেশ দূরে ডাটা পাঠানো যায় এবং এর মাথে নতুন টেকনোলজি যেমন ব্লুটুথ ব্যবহার করা যায়।

যা হোক আজকে আমি আপনাদের দেখাব কিভাবে ভিজুয়্যাল বেসিক ডট নেটের মাধ্যমে সিরিয়াল পোর্টের সাথে মাইক্রোকন্ট্রোলার বা আরডুইনো ইন্টার ফেসিং এর সফটওয়্যার তৈরি করতে হয়।

প্রয়োজনীয় প্রস্তুতি:

প্রথমে আপনাকে ভিজুয়্যাল বেসিক ডট নেটে কাজ করার জন্য ভিজ্যুয়্যাল স্টুডিও কম্পিউটারে সেটআপ করে নিতে হবে। এটা মাইক্রোসফটের একটা সফটওয়্যার। আপনারা এখান থেকে serialভিজুয়্যাল স্টুডিও সংগ্রহ করতে পারেন। আমি এই টিউটোরিয়ালে ভিজ্যুয়্যাল স্টুডিও ২০১০ অনুসরণ করব।

একটা গুরুত্বপূর্ণ বিষয় হচ্ছে, আমাদের অনেকের ডেক্সটপে বা ল্যাপটপে সিরিয়াল পোর্ট নেই। এক্ষেত্রে ইউ এস বি টু সিরিয়াল কনভার্টার সংগ্রহ করে নেয়া যেতে পারে।

আরডুইনো ব্যবহার করলে কমিউনিকেশনের জন্য বাড়তি কোন হার্ডওয়্যার লাগে না, এমনকি ইউ এস বি টু সিরিয়াল কনভার্টারও লাগে না।আরডুইনোর যে ইউ এস বি কেবল আছে, ওটা ব্যবহার করলেই কাজ করবে। কিন্তু মাইক্রোকন্ট্রোলারের জন্য RS232 মডিউল তৈরি করে নিতে হবে বা বাজার থেকে সংগ্রহ করে নিতে হবে।

 7

আসুন শুরু করা যাক।

সিরিয়াল পোর্ট ইন্টারফেসিং এর জন্য ভিজুয়্যাল বেসিক ডট নেটে সফটওয়্যার তৈরির পদ্ধতি

 ভিজুয়্যাল বেসিক সফটওয়্যারটি ইন্সটল দিয়ে ওপেন করলে, নিচের ছবির মত উইন্ডো আসবে।

1

এর পর ভিজুয়্যাল বেসিক ল্যাঙ্গুয়েজ সিলেক্ট করে New Project এবং এরপর Windows Form Application সিলেক্ট করতে হবে।

 2

এরপর প্রোজেক্টের নাম দিয়ে Browse অপশন থেকে লোকেশন দেখিয়ে দিয়ে Ok করতে হবে। তাহলে নিচের মত ফরম উইন্ডো আসবে।

 3

এখন বাম পাশের Toolbox এ ক্লিক করে টুলবক্স থেকে ২টা Label, ২টা ComboBox এবং ২টা Button নিয়ে নিচের মত ডিজাইন করতে হবে। টুলবক্সে ডানদিকে x চিহ্নের আগের বাটনটাতে ক্লিক করে Toolbox কে ফিক্সড করে নেয়া যেতে পারে।

 4

এখন Form1 এর উপর ক্লিক করে Properties window থেকে Name হিসেবে frmMain দিতে হবে। আর স্ক্রল করে নিচে এসে MaximizeBox কে false করতে হবে ও text এ Serial Communication Terminal করে দিতে হবে।

যদি Properties window ডিফল্টভাবে না থাকে তাহলে View মেনু থেকে Properties window নিয়ে আসতে হবে।

 5a

 4ab

 5b

  • এখন ছবির মত Lebel1 এবং Lebel2 এর Properties window থেকে text কে যথাক্রমে Com Port এবং Baud Rate করে দিতে হবে।
  • ১ম ComboBox এর Name হিসেবে cmbPort এরং ২য় ComboBox এর Name হিসেবে cmbBaud দিতে হবে।
  • Button1 এবং Button2 এর Properties window থেকে text কে যথাক্রমে Connect এবং Disconnect করে দিতে হবে।
  • Button1 এবং Button2 এর Name হিসেবে যথাক্রমে btnConnect এবং btnDisconnect করতে হবে।

এরপর আবার বাম পাশের Toolbox এ ক্লিক করে টুলবক্স থেকে ২টা GroupBox, ১টা TextBox এবং ১টা Rich TextBox এবং একটা Button নিয়ে নিচের মত ডিজাইন করতে হবে।

 5

  • এখন GroupBox1 এবং GroupBox2 এর Properties window থেকে text কে যথাক্রমে Transmit Data এবং Received Data করে দিতে হবে।
  • TextBox এর Name হিসেবে txtTransmit দিতে হবে।
  • Rich TextBox এর Name হিসেবে rtbReceived দিতে হবে।
  • Button এর Name হিসেবে btnSend এবং text কে Send করতে হবে।

এখন সবচেয়ে গুরুত্বপূর্ণ কাজ হল Toolbox এ ক্লিক করে টুলবক্স থেকে Serial Port এনে ফরমে ছেরে দিতে হবে ,তাহলে নিচের ছবির মত দেখাবে।

 6a

এরপর আমরা যে ফরমটি ডিজাইন করলাম এর উপর অর্থাৎ Serial Communication Terminal লেখার উপর ডাবল ক্লিক করলে কোড দেখা যাবে সমস্ত কোড কটে দিয়ে নিচের কোড বসিয়ে দিতে হবে।

প্রয়োজনীয় কোড:

‘Code Starts here ….
‘Import Systems which we are gonna use in our code
Imports System
Imports System.ComponentModel
Imports System.Threading
Imports System.IO.Ports

‘frmMain is the name of our form ….
‘Here starts our main form code …..
Public Class frmMain
Dim myPort As Array
Delegate Sub SetTextCallback(ByVal

[text][/text]

As String)

‘Page Load Code Starts Here….
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
myPort = IO.Ports.SerialPort.GetPortNames()
cmbBaud.Items.Add(9600)
cmbBaud.Items.Add(19200)
cmbBaud.Items.Add(38400)
cmbBaud.Items.Add(57600)
cmbBaud.Items.Add(115200)
For i = 0 To UBound(myPort)
cmbPort.Items.Add(myPort(i))
Next
cmbPort.Text = cmbPort.Items.Item(0)
cmbBaud.Text = cmbBaud.Items.Item(0)
btnDisconnect.Enabled = False
End Sub
‘Page Load Code Ends Here ….

‘Connect Button Code Starts Here ….
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
SerialPort1.PortName = cmbPort.Text
SerialPort1.BaudRate = cmbBaud.Text
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = IO.Ports.StopBits.One
SerialPort1.DataBits = 8
SerialPort1.Open()
btnConnect.Enabled = False
btnDisconnect.Enabled = True
End Sub
‘Connect Button Code Ends Here ….

‘Disconnect Button Code Starts Here ….
Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
SerialPort1.Close()
btnConnect.Enabled = True
btnDisconnect.Enabled = False
End Sub
‘Disconnect Button Code Ends Here ….

‘Send Button Code Starts Here ….
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
SerialPort1.Write(txtTransmit.Text)
End Sub
‘Send Button Code Ends Here ….

‘Serial Port Receiving Code Starts Here ….
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
ReceivedText(SerialPort1.ReadExisting())
End Sub
‘Serial Port Receiving Code Ends Here ….

‘Serial Port Receiving Code(Invoke) Starts Here ….
Private Sub ReceivedText(ByVal
[text][/text]

As String)
If Me.rtbReceived.InvokeRequired Then
Dim x As New SetTextCallback(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Else
Me.rtbReceived.Text &=

[text][/text]

End If
End Sub
‘Serial Port Receiving Code(Invoke) Ends Here ….

‘Com Port Change Warning Code Starts Here ….
Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged
If SerialPort1.IsOpen = False Then
SerialPort1.PortName = cmbPort.Text
Else
MsgBox(“Valid only if port is Closed”, vbCritical)
End If
End Sub
‘Com Port Change Warning Code Ends Here ….

‘Baud Rate Change Warning Code Starts Here ….
Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBaud.SelectedIndexChanged
If SerialPort1.IsOpen = False Then
SerialPort1.BaudRate = cmbBaud.Text
Else
MsgBox(“Valid only if port is Closed”, vbCritical)
End If
End Sub
‘Baud Rate Change Warning Code Ends Here ….

Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click

End Sub
End Class
‘Whole Code Ends Here ….

এখন Debug মেনু থেকে Start Debugging এ ক্লিক করলে কাজ হয়ে যাবে । এখন আপনি যে লোকেশনে প্রজেক্টটি Save করেছেন সেই লোকেশনে গেলে bin ফোল্ডারের মধ্যে Debug ফোল্ডারে exe ফাইলটি পাবেন। এটাই আপনার সফটওয়্যার। Properties window থেকে লোগো এবং বিভিন্ন ইলিমেন্টের ব্যকগ্রাউন্ড কালার, টেক্সট কালার ইত্যাদি পরিবর্তন করে সফটওয়্যারটিকে কালারফুল করতে পারেন।

 Capture

Build মেনু থেকে Publish এ ক্লিক করে সফটওয়্যারটির ইন্সটলার তৈরি করতে পারেন।

সোর্স ফাইল ডাউনলোড

আশাকরছি সবাই সফটওয়্যারটি তৈরি করতে পারবেন। ধন্যবাদ সবাইকে।

………………………………………………………………………………..

জ্ঞন বিজ্ঞানের সংস্পর্শে আলোকিত একটা সুন্দর সমৃদ্ধ পৃথিবীর প্রত্যাশায় আজ এখানেই শেষ করছি। সকলের জন্য শুভকামনা রইল।