전체 소스
WATSerialCom_20100629.zip
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 로 하고,
{
m_byteRxData.Initialize();
m_iRxDataCount = 0;
txtRxData.Text =
""
;
}
RX 루틴에서 m_byteRxData 로 수신데이터를 넣어주는 부분을 추가해줍니다.
Array.Copy(buff, 0, m_byteRxData, m_iRxDataCount, iRecSize);
m_iRxDataCount += iRecSize;
수신된 데이터를 파일로 저장하겠습니다.
02.
{
03.
try
04.
{
05.
if
(DialogResult.OK == sfdSaveFileName.ShowDialog())
06.
{
07.
System.IO.BinaryWriter objWrite =
new
System.IO.BinaryWriter(File.Open(sfdSaveFileName.FileName, FileMode.Create));
08.
objWrite.Write(m_byteRxData, 0, m_iRxDataCount);
09.
objWrite.Close();
10.
}
11.
}
12.
catch
(System.Exception ex)
13.
{
14.
MessageBox.Show(ex.Message);
15.
}
16.
}
한쪽에서 a.gif 파일을 보내고, 한쪽에서 데이터를 받은후에
[파일로저장]버튼을 사용하여 파일을 저장합니다.
저장된 파일을 열어보면, 보낸파일과 동일하다는 것을 알 수 있습니다.
다음 장에는 포트열고 닫기를 메뉴로 이동하고
포트 설정을 새로운 폼을 만들어 해보겠습니다.
'스터디 > C#.NET:시리얼통신' 카테고리의 다른 글
03_HEXA, CHAR 구분하여 데이터 보내기 (0) | 2013.01.13 |
---|---|
02_이벤트로 수신데이터 받기 (0) | 2013.01.13 |
01_포트 열기/닫기 데이터 보내기/받기 (0) | 2013.01.13 |
foreach statement cannot operate on variables of type 에러 해결방법 (0) | 2011.01.21 |