static SerialPort g_serialPort;

g_serialPort = new SerialPort();

 

//PortName

foreach (string s in SerialPort.GetPortNames())
{
                cboPort.Items.Add(s);
}

g_serialPort.PortName = cboExtRS232Port.Text;

 

//BaudRate

g_serialPort.BaudRate = int.Parse(cboBaudRate.Text);            //預設值為每秒 9600 位元 (bps)。

 

//Parity

foreach (string s in Enum.GetNames(typeof(Parity)))
{
        cboParity.Items.Add(s);
}

Parity.None 不發生同位檢查。(預設)
Pairty.Even 設定同位檢查位元,以便位元集計數為偶數。
Pairyt.Odd 設定同位檢查位元,以便位元集計數為奇數。
Parity.Mark 將同位檢查位元集保持為 1。
Parity.Space 將同位檢查位元集保持為 0。

g_serialPort.Parity = (Parity)Enum.Parse(typeof(Parity), cboParity.Text);

 

//DataBit

g_serialPort.DataBits = int.Parse(txtDataBit.Text);

 

//StopBits

foreach (string s in Enum.GetNames(typeof(StopBits)))
{
        cboStopBits.Items.Add(s);
}

StopBits.None 未使用停止位元。 不支援這個值。 將 StopBits 屬性設定為 None,會引發 ArgumentOutOfRangeException。
StopBits.One 使用一個停止位元。(預設)
StopBits.OnePointFive 使用 1.5 個停止位元。
StopBits.Two 使用兩個停止位元。

g_serialPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), cboStopBits.Text);

 

//Handshake

foreach (string s in Enum.GetNames(typeof(Handshake)))
{
        cboHandshake.Items.Add(s);
}

Handshake.None 沒有用於信號交換的控制。(預設)
Handshake.RequestToSend 使用 Request-to-Send (RTS) 硬體流量控制 (Flow Control)。 RTS 表示資料可用於傳輸。 如果輸入緩衝區已滿,RTS 線路將設為 false。 輸入緩衝區中有更多空間時,RTS 線路將設為 true。 
Handshake.RequestToSendXOnXOff 同時使用 Request-to-Send (RTS) 硬體控制和 XON/XOFF 軟體控制。
Handshake.XOnXOff 使用 XON/XOFF 軟體控制通訊協定。 傳送 XOFF 控制以停止資料傳輸。 傳送 XON 控制以繼續傳輸。 使用這些軟體控制而不是 Request to Send (RTS) 和 Clear to Send (CTS) 硬體控制。 

g_serialPort.Handshake = Handshake.None;

 

g_serialPort.Encoding = Encoding.ASCII;                          //預設值為 ASCIIEncoding。

 

//如果忽略 null 位元組則為 true,否則為 false。

g_serialPort.DiscardNull = false;                                       //預設為 false。

 

//取得或設定 DataReceived 事件發生之前,內部輸入緩衝區中的位元組數。

g_serialPort.ReceivedBytesThreshold = 1;                       //預設值為 1。

 

//緩衝區大小。

g_serialPort.ReadBufferSize=65534;                               //預設值為 4096。

 

//true 表示啟用 Data Terminal Ready (DTR),否則為 false。

g_serialPort.DtrEnable = false;                                       //預設為 false。

* 在 XON/XOFF 軟體交握和 Request to Send/Clear to Send (RTS/CTS) 硬體交握,以及數據機通訊期間,通常啟用 Data Terminal Ready (DTR)。

 

 //如果啟用 Request to Transmit (RTS) 則為 true,否則為 false。

g_serialPort.RtsEnable = false;                                      //預設值為 false。

 

//讀取作業未完成時,發生逾時之前的毫秒數。

g_serialPort.ReadTimeout = 500;                                  

 

//發生逾時之前的毫秒數。

g_serialPort.WriteTimeout = 500;                                  //預設值為 InfiniteTimeout。

 

//連線

g_serialPort.Open();

_continue = true;

Thread readThread = new Thread(Read);

readThread.Start();

 

//接收讀取

public static void Read()
{
    while (_continue)
    {
        try
        {
            string message = g_serialPort.ReadLine();
            
        }
        catch (TimeoutException) { }
    }
}

 readThread.Join();

 

 

 

//發送

g_serialPort.WriteLine(String.Format("{0}", message))

 

 

//結束

if (g_serialPort.IsOpen)
{
        g_serialPort.Close();
        _continue = false;
}

 

 

 

arrow
arrow
    全站熱搜

    tsuozoe 發表在 痞客邦 留言(1) 人氣()