메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

시리얼통신 소스( C# .NET )
조회 수 29013 추천 수 0 댓글 1
Atachment
첨부 '2'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

전체 소스

         WATSerialCom_20100629.zip

 

watSerialcom_RX2.gif  

 

 Binary 파일 보내기

       메뉴에서 [파일보내기]를 선택하여 파일을 보내게 하겠습니다.

       - 메뉴를 만드는 방법은 http://whiteat.com/zbxe/31871 를 참조하세요..

     

        MenuStrip을 이용해서 Name이 mnuMainMenu 인 메뉴를 추가합니다.

        [파일보내기] 메뉴를 추가하고 더블클릭해서 코드를 입력합니다.

 

        OpenFileDialog 컨트롤을 사용해서 Name을 ofdSendFileName 로 해서 OpenFileDialog를 하나 만듭니다.

         - Binary 파일 읽는 http://whiteat.com/zbxe/31824 를 참조하세요

 

        private void 파일전송하기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                if (DialogResult.OK == ofdSendFileName.ShowDialog())
                {
                    System.IO.FileInfo infoFile = new System.IO.FileInfo(ofdSendFileName.FileName);
                    int iFileSize = Convert.ToInt32(infoFile.Length); // 파일 사이즈 얻기
                    byte[] byteSendData = new byte[iFileSize];
                    System.IO.BinaryReader objRead = new System.IO.BinaryReader(File.Open(ofdSendFileName.FileName, FileMode.Open));
                    byteSendData = objRead.ReadBytes(Convert.ToInt32(iFileSize));
                    objRead.Close();
                    m_sp1.Write(byteSendData, 0, iFileSize);
                }      
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

Binary 수신 후에 파일로 쓰기

        SaveFileDialog 컨트롤로 sfdSaveFileName 라는 파일저장컨트롤을 추가합니다.

            - Binary 파일 쓰는 http://whiteat.com/zbxe/31824 를 참조하세요

        수신된 데이터를 초기화 하는 [수신데이터 초기화]버튼과

        수신된 데이터를 파일로 저장하는 [파일로 저장] 버튼을 만들겠습니다.

 

        byte[] m_byteRxData = new byte[100*1024]; // 약 100K 수신데이터를 저장할 변수

         int m_iRxDataCount = 0; // m_byteRxData 에서 유효한 실제 값

 

        [RX 초기화 버튼]의 Name 을 btnRxClear 로 하고,    

        private void btnRxClear_Click(object sender, EventArgs e)
        {
            m_byteRxData.Initialize();
            m_iRxDataCount = 0;
            txtRxData.Text = "";
        } 


 

 RX 루틴에서 m_byteRxData 로 수신데이터를 넣어주는 부분을 추가해줍니다.               

Array.Copy(buff, 0, m_byteRxData, m_iRxDataCount, iRecSize);
                m_iRxDataCount += iRecSize;


 

수신된 데이터를 파일로 저장하겠습니다.       

private void btnSaveToFile_Click(object sender, EventArgs e)
        {
            try
            {
                if (DialogResult.OK == sfdSaveFileName.ShowDialog())
                {
                    System.IO.BinaryWriter objWrite = new System.IO.BinaryWriter(File.Open(sfdSaveFileName.FileName, FileMode.Create));
                    objWrite.Write(m_byteRxData, 0, m_iRxDataCount);
                    objWrite.Close();
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        한쪽에서 a.gif 파일을 보내고, 한쪽에서 데이터를 받은후에 

        [파일로저장]버튼을 사용하여 파일을 저장합니다.

        저장된 파일을 열어보면, 보낸파일과 동일하다는 것을 알 수 있습니다.

 

      다음 장에는 포트열고 닫기를 메뉴로 이동하고

                             포트 설정을 새로운 폼을 만들어 해보겠습니다.

                            

 

 

 

 

  

 

  • 돼랑지 2014.05.28 15:10

    안녕하세요 또 질문 합니다.

    동영상과 같이 대용량 파일의 경우는 보내는 쪽(송신)의 프로그램이 송신이 끝날때 까지 그냥 뻗어버리는 증상이 있어서 그러는데, 분할하여 전송하는 방법이 있다고하는데 그 방법좀 일러주시면 안될까요?