아두이노 직렬 연결 간편 송수신기 vb 올단 (code file) – 시리얼 모니터 대용

시리얼송수신_vb_올   …….. 내려받기하세요….

‘******************************************************************
‘ 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

2018-04-16 20;58;08