RS232 ( SerialPort ) 連接埠應用方法

寫一個RS232連接埠程式,開始與機器溝通吧!!!

在工業控制中常常使用到RS232連接埠作為通訊的媒介,曾經在一些嵌入式裝置上也常常使用到RS232連接埠來做裝置與裝置的溝通橋梁,RS232相對於RJ45、USB來說算是非常古老的連接埠,在線材的準備上需要的是Null Modem規格,如果不做特別的硬體控制,只要注意線材的2、3線有跳線,也就是Rx、Tx要交換接,否則對方是永遠收不到資料的喔,這篇文章有參考到【跨執行緒對控件做控制,使用BackgroundWorker】與【RichTextBox模仿ListBox之應用】兩篇文章,遇到RichTextBox與BackgroundWorker可以看看以前的文章就會明白其中的寫法了。

 

1.宣告一個變數為SerialPort,供以後使用

	System.IO.Ports.SerialPort serialport = new System.IO.Ports.SerialPort();

 

2.在任一個觸發事件下取得所有可以使用的連接埠

 

	foreach(string com in System.IO.Ports.SerialPort.GetPortNames())//取得所有可用的連接埠
{
    comboBox1.Items.Add(com);
}

 

3.設定連接埠相關傳輸參數

	serialport.PortName = comboBox1.Text;
serialport.BaudRate = 9600;
serialport.DataBits = 8;
serialport.Parity = System.IO.Ports.Parity.None;
serialport.StopBits = System.IO.Ports.StopBits.One;
serialport.Encoding = Encoding.Default;

 

4.開啟連接埠

	serialport.Open();

 

5.監聽連接埠輸入,需要使用到一個執行緒在背景不斷的聽,所以建議使用【backgroundWorker】

(詳細寫法請參考範例檔)

	private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    try
    {
        if (serialport.BytesToRead != 0)
        {
            label2.Text = "緩衝區:" + serialport.BytesToRead.ToString();
            AddText(MsgType.System, "接收:" + serialport.ReadExisting() + "\r\n");
            serialport.DiscardInBuffer();
        }
    }
    catch(Exception)
    {}
}

 

6.這樣的寫法已經可以做簡單的傳輸,詳細的方法在範例中,當然,在整個連接埠的使用上,有更多的技巧,請多多搜尋MSDN。

PeterDotNetCS10091301

PS:如果要讓ovalShape為實心,設定ovalShape1的FillStyle屬性為Soild,顏色可以在FillColor屬性設為Color底下的所有顏色。

 

前一個版本的範例中有BUG會導致接收有問題,已經上傳新的範例檔,請下載過的朋友重新下載新版本^^

 PeterDotNetCS10091301.zip