none
Serial Port RRS feed

  • 질문

  • 감사 합니다
      Serial Port로 화일전송 하는 프로그램을 하고 있습니다.
      딸들과 공부중!

    1:1 통신이 된다면 화일 전송도 될것같아 찾다가 못찾아서
    요청 합니다.

    고수님들의 간단한 셈플이나 동영상등 각종 도움이 될만한것 모두 요청 합니다.

    감사 합니다

     
    2021년 8월 17일 화요일 오후 11:43

모든 응답

  • 어떤 프로그램을 사용중이신지요? 정확한 조사를 위한 코드를 제공해 주시겠습니까? 
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.


    2021년 8월 18일 수요일 오전 6:09
    중재자
  • Imports System
    Imports System.Threading
    Imports System.IO.Ports
    Imports System.IO
    Imports System.ComponentModel
    Imports System.Text
    Imports System.Windows.Forms

    Public Class Basic_Serial

        Dim myPort As Array
        Delegate Sub settextCallBack(ByVal [text] As String) 

        Private Sub Basic_Serial_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            myPort = IO.Ports.SerialPort.GetPortNames()
            portComboBox.Items.AddRange(myPort)
            WriteButton.Enabled = False

            With ComboBox1.Items    '선택 화일 확장자
                .Add("*.txt")       'ListIndex = 0
            End With
            ComboBox1.SelectedIndex = 0

            FileListBox1.Path = DriveListBox1.Drive
            FileListBox1.Pattern = ComboBox1.Text '"*.EXE"
            FileListBox1.SelectionMode = SelectionMode.MultiExtended '다중선택 
        End Sub

        Private Sub InitButton_Click(sender As Object, e As EventArgs) Handles InitButton.Click

            SerialPort1.PortName = portComboBox.Items(0)
            portComboBox.Text = SerialPort1.PortName
            SerialPort1.BaudRate = baudComboBox.Items(0)
            baudComboBox.Text = SerialPort1.BaudRate
            SerialPort1.DataBits = 8
            SerialPort1.Parity = Parity.None
            SerialPort1.StopBits = StopBits.One
            SerialPort1.Handshake = Handshake.None
            SerialPort1.Open()

            InitButton.Enabled = False
            WriteButton.Enabled = True
            closeButton.Enabled = True
        End Sub

        Private Sub WriteButton_Click(sender As Object, e As EventArgs) Handles WriteButton.Click
            SerialPort1.Write(inputTextBox.Text & vbCrLf)
            inputTextBox.Text = Nothing
        End Sub

        Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Receivetext(SerialPort1.ReadExisting())
        End Sub

        Private Sub Receivetext(ByVal [text] As String)
            If Me.outputTextBox.InvokeRequired Then
                Dim x As New settextCallBack(AddressOf Receivetext)
                Me.Invoke(x, New Object() {(text)})
            Else
                Me.outputTextBox.Text &= [text]
            End If
        End Sub

        Private Sub FileListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles FileListBox1.SelectedIndexChanged
            Dim i, N As Integer
            N = FileListBox1.SelectedItems.Count - 1
            '=============================================
            '한글 깨짐 해결
            Try
                'Dim encoding As System.Text.Encoding = System.Text.Encoding.GetEncoding(949)
                Dim strFile As String = DirListBox1.Path & "\" & FileListBox1.Text '디렉토리와 화일명 설정

                Using sr As System.IO.StreamReader = New System.IO.StreamReader(strFile, System.Text.Encoding.GetEncoding(949))
                    TextBox1.Text = sr.ReadToEnd()
                End Using

            Catch ex As Exception
                MsgBox("File Not Found", MsgBoxStyle.Exclamation)
            End Try
        End Sub
    End Class

    vb.net 2019입니다

    windows 10




    • 편집됨 박희철 2021년 8월 20일 금요일 오전 3:48 *
    2021년 8월 18일 수요일 오후 10:50
  • 안녕하세요, 
    님께서 어떠한 예외를 얻으셨는지, 더 자세한 정보를 제공해 주실수 있나요? 
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2021년 8월 19일 목요일 오전 7:59
    중재자
  •              

        Private Sub WriteButton_Click(sender As Object, e As EventArgs) Handles WriteButton.Click
            For i = 0 To DataGridView1.RowCount - 2
                Dim strFile As String = DirListBox1.Path & "\" & DataGridView1.Item(1, i).Value '디렉토리와 화일명 설정

                SerialPort1.Encoding = System.Text.Encoding.GetEncoding(65001)

                SerialPort1.Write(File.OpenText(strFile).ReadToEnd)        

            Next
        End Sub

        Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Receivetext(SerialPort1.ReadExisting())
        End Sub

        Private Sub Receivetext(ByVal [text] As String)
            If Me.outputTextBox.InvokeRequired Then
                Dim x As New settextCallBack(AddressOf Receivetext)
                Me.Invoke(x, New Object() {(text)})
            Else
                Me.outputTextBox.Text &= [text]
            End If
        End Sub


    DataGridView에 화일을 읽어서 전송하면,

    outputTextBox.Text 받을수 있습니다.
    outputTextBox.Text 받은 내용을, 
    DataGridView1.Item(1, i).Value(화일명)에 있는 이름으로 저장 하고 싶은데.

    화일명 전달과 저장위치, 저장방법을 모르겠습니다.

    도와주세요.



    • 편집됨 박희철 2021년 8월 20일 금요일 오전 4:35 *
    2021년 8월 20일 금요일 오전 3:41
  • 안녕하세요.
    피드백 주셔서 감사합니다. 
    'DirListBox1'은 정확히 무엇을 의미합니까? 어떤 값이 저장되어 있습니까?
    테스트중 '경로'가 'ListBox'컨트롤의 속성이 아니라는것을 알았습니다. 자세한 정보를 제공해 주시면 저희가 테스트를 진행하는데 도움이 될것입니다.
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2021년 8월 20일 금요일 오전 6:44
    중재자
  • 디렉토리와 화일명이 있습니다.


    • 편집됨 박희철 2021년 8월 20일 금요일 오전 6:48
    2021년 8월 20일 금요일 오전 6:48
  • 현재 'outputTextBox.text'를 'DataGridView1.Item(1, i).Value'에 저장하려고 하십니까?
    혹은 Onedrive 또는 Github에 프로젝트를 공유하는것을 고려하실수 있습니다. 저희가 문제를 재현하는데 도움이 될것입니다.
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2021년 8월 20일 금요일 오전 7:32
    중재자
  • 전송 받은 내용은 outputTextBox.text에 있습니다.

    이 내용을 DataGridView1.Item(1, i).Value 에 이름으로 저장 하고 싶습니다.

    원하는 path는 바탕 화면으로 하고요.
    2021년 8월 21일 토요일 오전 2:27
  • 안녕하세요,
    다음 코드를 사용하여 파일 확장자를 추출하고 파일 이름을 DataGridView에 할당하실수 있습니다.

            Dim lines As String() = outputTextBox.Lines 
            For i As Integer = 0 To lines.Length - 1
                Dim extension As String = Path.GetExtension(lines(i))
                Dim result As String = lines(i).Substring(0, lines(i).Length - extension.Length)
                DataGridView1.Item(1, i).Value = result
            Next

    도움이 되였으면 합니다,감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.


    2021년 8월 23일 월요일 오전 8:32
    중재자
  • 감사합니다
    검토 해주신 대로 코딩하여 실행 하였습니다.

    아래에 코팅은 SerialPort1에 라인단위로 읽어오니 화일명을 알수가 없게 됩니다. 하여 답답

    Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Receivetext(SerialPort1.ReadExisting())
        End Sub

        Private Sub Receivetext(ByVal [text] As String)
            If Me.outputTextBox.InvokeRequired Then
                Dim x As New settextCallBack(AddressOf Receivetext)
                Me.Invoke(x, New Object() {(text)})
            Else
                Me.outputTextBox.Text &= [text]
            End If
    End Sub

    <질문>
    1. 상대 컴의 시리얼 포트가 open되었는지 알수 있는지

    요청 / 부탁 / 고견을

    • 편집됨 박희철 2021년 8월 25일 수요일 오전 5:41 *
    2021년 8월 25일 수요일 오전 12:43
  • 안녕하세요
    <질문>
    1. 상대 컴의 시리얼 포트가 open되었는지 알수 있는지...
    Check 방법은 아래 링크를 참조하십시오.
    https://stackoverflow.com/a/2607256/12666543
    도움이 되였으면 합니다,감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.


    2021년 8월 25일 수요일 오전 6:56
    중재자