'****************************************************************** ' 21¼¼±âÀǺ½ '****************************************************************** '¾ÆµÎÀ̳ëÀÇ ½Ã¸®¾ó ¸ð´ÏÅ͸¦ °£ÆíÇÏ°Ô »ç¿ëÇϱâ À§ÇÑ °ÍÀÔ´Ï´Ù... 'º» ¿Ã´Ü ÀÛ¼ºÀº ¹®Á¦¸¦ ÇØ°áÇÏ´Â °úÁ¤¿¡¼­ ÀÎÅͳݿ¡ ¿Ã·ÁÁø ¹®Á¦ ÇØ°á ¿ÃÀ» ºÎºÐ ºÎºÐ »ç¿ëÇÏ¿´½À´Ï´Ù. 'Á÷¿­¿¬°á °ü·ÃÇÏ¿© ¿Ã´Ü ÀڷḦ ÀÎÅͳݿ¡ ¿Ã·ÁÁֽЏ¹Àº ºÐµé²² °¨»çÀÇ ¸»¾¸ ¿Ã¸³´Ï´Ù. Imports System Imports System.ComponentModel Imports System.Threading Imports System.IO.Ports Public Class Form1 Dim myPort As List(Of String) '½Ã½ºÅÛÀÇ °Ë»öµÈ Åë½ÅÆ÷Æ®°¡ ¿©±â¿¡ ÀúÀå Public Shared »ç¿ëport As String = Nothing Public Shared »ç¿ëbaud As String = Nothing Public Shared ÀúÀålist As New List(Of String) Public Shared »ç¿ëÆ÷Æ®ÀúÀå´Ü As String = "c:\temp\»ç¿ëÆ÷Æ®³»¿ë.obj" '------------------------------------------------------------------------------------------------------------------------ Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Æû ·Îµù½Ã, ½Ã¸®¾ó Æ÷Æ®°¡ ÀÚµ¿ °Ë»öµÇ°í cmbPort ÄÞº¸¹Ú½º¿¡ Ç¥½ÃµÈ´Ù. myPort = IO.Ports.SerialPort.GetPortNames().ToList 'Get all com ports available myPort.Remove("COM1") 'COM1 Àº PORT LIST¿¡¼­ Á¦°Å If myPort.Count = 0 Then MsgBox("USB¿¡ ¾ÆµÎÀ̳밡 ¿¬°áµÇ ÀÖÁö ¾Ê½À´Ï´Ù.¡± + vbCrLf + "¾ÆµÎ´Ï¿À¸¦ ¿¬°á ÇÑ ÈÄ¿¡ ´Ù½Ã ½ÃÀÛÇØÁÖ¼¼¿ä...", vbCritical) : Dispose() cmbBaud.Items.Add(9600) 'cmbBaud ÄÞº¸¹Ú½º¿¡ »ç¿ëµÇ´Â º¸µå·¹ÀÌÆ®¸¦ Ç¥½ÃÇÑ´Ù. cmbBaud.Items.Add(19200) cmbBaud.Items.Add(38400) cmbBaud.Items.Add(57600) cmbBaud.Items.Add(115200) For i = 0 To myPort.Count - 1 cmbPort.Items.Add(myPort(i)) Next cmbPort.Text = cmbPort.Items.Item(0) 'Set cmbPort text to the first COM port detected cmbBaud.Text = cmbBaud.Items.Item(0) 'Set cmbBaud text to the first Baud rate on the list btnDisconnect.Enabled = False 'Initially Disconnect Button is Disabled »ç¿ëport = cmbPort.Text »ç¿ëbaud = cmbBaud.Text If FileIO.FileSystem.FileExists(»ç¿ëÆ÷Æ®ÀúÀå´Ü) Then ÀúÀålist = IO.File.ReadAllLines(»ç¿ëÆ÷Æ®ÀúÀå´Ü).ToList ÀúÀålist.Remove("COM1") If ÀúÀålist.Count > 1 And ÀúÀålist(0).Contains("COM") Then »ç¿ëport = ÀúÀålist(0) »ç¿ëbaud = ÀúÀålist(1) If myPort.Contains(»ç¿ëport) Then cmbPort.Text = »ç¿ëport : cmbBaud.Text = »ç¿ëbaud End If End If If cmbPort.Items.Count = 1 Then btnConnect_Click(sender, e) ' ¿¬°á·Î°¡ ÇϳªÀ̸é ÀÚµ¿ ¿¬°á ' Timer1.Start() End Sub '------------------------------------------------------------------------------------------------------------------------ Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click SerialPort1.PortName = cmbPort.Text 'Set SerialPort1 to the selected COM port at startup SerialPort1.BaudRate = cmbBaud.Text 'Set Baud rate to the selected value on 'Other Serial Port Property SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.DataBits = 8 'Open our serial port SerialPort1.Encoding = System.Text.Encoding.UTF8 ' ÇѱÛÀÌ ³ª¿Àµµ·Ï ÇÏ´Â ENCODING SerialPort1.DtrEnable = True ' ¿¬°á·Î ¿¬°á½Ã ¾ÆµÎÀ̳ë RESETÀ» À§ÇÔ SerialPort1.Open() SerialPort1.DtrEnable = False '¾ÆµÎÀ̳ë RESET ¸í·É btnConnect.Enabled = False 'Disable Connect button btnDisconnect.Enabled = True 'and Enable Disconnect button End Sub '------------------------------------------------------------------------------------------------------------------------ Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click SerialPort1.Close() 'Close our Serial Port btnConnect.Enabled = True btnDisconnect.Enabled = False TextBox1.Text = "" End Sub '------------------------------------------------------------------------------------------------------------------------ Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click SerialPort1.Write(txtTransmit.Text & vbCrLf) 'The text contained in the txtText will be sent to the serial port as ascii txtTransmit.Text = "" txtTransmit.Focus() 'plus the carriage return (Enter Key) the carriage return can be ommitted if the other end does not need it End Sub '------------------------------------------------------------------------------------------------------------------------ Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived '........................... Á÷·Ä ¿¬°á·Î¿¡ ÀÚ·á ¼ö½Å ´ë±â½Ã ÀÚµ¿ ½ÇÇàµÇ´Â ¼­ºê·çƾ CheckForIllegalCrossThreadCalls = False ' µð¹ö±×½Ã ´Ù¸¥ µå·¹½º¸¦ »ç¿ëÇÑ´Ù´Â ¿¡·¯ ¹ß»ý ¹æÁö¿ë Dim ReceivedStr As String = "" 'Automatically called every time a data is received at the serialPort Do While SerialPort1.BytesToRead > 0 'ÀÚ·á°¡ µé¾î¿À´Â µ¿¾È °è¼Ó ¼ö½Å ReceivedStr &= SerialPort1.ReadExisting 'stringÀ¸·Î ¼ö½Å ' Loop TextBox1.AppendText(ReceivedStr) '±âÁ¸ textbox ³»¿ë¿¡ ¼ö½Å¹®ÀÚ¿­À» Ãß°¡ If TextBox1.Text.Length > 32000 Then TextBox1.Text = Mid(TextBox1.Text, 15000) 'textbox ³»¿ë¹°ÀÌ 32000±ÛÀÚ ÀÌ»óÀ̸é Àü¹ÝºÎÀÇ 15000ÀÚ »èÁ¦ TextBox1.Select(TextBox1.Text.Length, 0) ' ½ºÅ©·ÑÀÌ ÇÏ´ÜÀ¸·Î ³»·Á¿Àµµ·Ï Á¶Ä¡ TextBox1.ScrollToCaret() ' ½ºÅ©·ÑÀÌ ÇÏ´ÜÀ¸·Î ³»·Á¿Àµµ·Ï Á¶Ä¡ End Sub '------------------------------------------------------------------------------------------------------------------------ Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged If Not SerialPort1.IsOpen Then SerialPort1.PortName = cmbPort.Text 'pop a message box to user if he is changing ports Else 'without disconnecting first. MsgBox(¡±ÇöÀç ¿¬°áµÈ ¼±·Î¸¦ ¸ÕÀú ÇØÁ¦ÇÏ¿©ÁÖ¼¼¿ä¡±, vbCritical) End If »ç¿ëport = cmbPort.SelectedItem End Sub '------------------------------------------------------------------------------------------------------------------------ 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 'pop a message box to user if he is changing baud rate Else 'without disconnecting first. MsgBox("ÇöÀç ¿¬°áµÈ ¼±·Î¸¦ ¸ÕÀú ÇØÁ¦ÇÏ¿©ÁÖ¼¼¿ä¡±, vbCritical) End If »ç¿ëbaud = cmbBaud.SelectedItem End Sub '------------------------------------------------------------------------------------------------------------------------ Private Sub txtTransmit_TextChanged(sender As Object, e As KeyEventArgs) Handles txtTransmit.KeyDown Dim e1 As New EventArgs If e.KeyCode = Keys.Enter Then btnSend_Click(sender, e1) '¿£ÅÍŰ ÀԷ½à Àü¼Û ½ÇÇà End Sub '------------------------------------------------------------------------------------------------------------------------ Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click SerialPort1.Write("2" & vbCrLf) End Sub