관리 메뉴

안까먹을라고 쓰는 블로그

C#_Serial통신 본문

Language/C#

C#_Serial통신

YawnsDuzin 2012. 9. 1. 18:47

 

반응형

SerialPort 컨트롤을 사용해서 시리얼 통신을 구현할 수 있습니다.
Serial통신을 하려면 PortName, BaudRate, DataBits, Parity, StopBits를 설정을 해줘야 합니다.


SeiralPort 인스턴트 생성

using System;
using System.IO.Ports;
using System.Threading;

SerialPort Serial = new SerialPort();



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
private void Serial_Intitial()
{
   Serial_Open();
 
   // Data수신 Event등록
   Serial.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Serial_DataReceived);
}
 
private void Serial_Open()
{
   if (Serial.IsOpen) Serial.Close();
                       
   Serial.PortName = "Com1";
   Serial.BaudRate = 9600;
   Serial.DataBits = 8;
   Serial.StopBits = System.IO.Ports.StopBits.One;
   Serial.Parity = System.IO.Ports.Parity.None;
   Serial.Open();                      
}          
       
private delegate void Serial_Delegate(string Data);
void Serial_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
   int Len;
   string sTemp = "";
   string CardNo = "";
   byte[] rcvBuff = new byte[1024];
 
   try
   {
      // SerialData byte[]로 Read
      Len = Serial.Read(rcvBuff, 01024);
      // SerialData 짤려서 수신되는 경우관련 += 처리
      // byte[] -> string Converter
      sTemp += Encoding.Default.GetString(rcvBuff, 0, Len);
 
      if (Len >= 11)
      {
         // STX/ETX 체크
         if ((sTemp[0== 0x02&& (sTemp[9== 0x03))
         {
            CardNo = sTemp.Substring(27);
            // Control등에 표시될 때 CrossThread관련 Invoke처리
            this.Invoke(new Serial_Delegate(SerialData_Parsing), CardNo.ToString());
            sTemp = "";
         }
         else
         {
            sTemp = "";
         }
      }
    }
    catch (Exception Ex)
    {
       sTemp = "";
       MessageBox.Show(Ex.ToString());
    }
}
 
private void SerialData_Parsing(string sData)
{
}
cs

 

반응형

'Language > C#' 카테고리의 다른 글

[C#] 제네릭[Generic]  (0) 2012.09.04
[C#] 시간체크(Stopwatch)  (0) 2012.09.04
C#_정규식  (0) 2012.09.01
C#_[Dllimport]  (0) 2012.09.01
C#_Thread  (0) 2012.09.01
Comments