none
SerialPort Open的問題 RRS feed

  • 問題

  • 最近需要寫一支透過SerialPort傳輸資料的程式,程式碼如下,run了之後出現以下錯誤訊息,
    有試過以下面的第一段程式碼取得所有SerialPort的Name有跑出COM1,也有試過COM1裝其他的裝置測試,確定COM1是正常的,請問有哪位大大遇過一樣的問題嗎?

     

    ====取得所有SerialPortName============================================

    foreach(string s in SerialPort.GetPortNames())

    {

            MessageBox.Show(s);

    }


    ===錯誤訊息=========================================================
    指定的連接埠名稱不是以 COM/com 開頭,或無法解析成有效的序列埠。
    參數名稱: portName

    ===程式碼==========================================================

    private SerialPort com1 = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

    private void button1_Click(object sender, EventArgs e)
    {
           try
             {
                  com1.PortName = "COM1";
                  com1.BaudRate = 9600;
                  com1.Parity = Parity.None;
                  com1.DataBits = 8;
                  com1.StopBits = StopBits.One;

                  com1.ReadTimeout = 500;
                  com1.WriteTimeout = 500;
                  com1.Open();
                  MessageBox.Show("開啟COM1完成!");
             }
             catch (Exception Ex)
             {
                 MessageBox.Show(Ex.Message.ToString(),"開啟COM1失敗");
             }
    }

    • 已移動 璉璉 2010年2月20日 下午 01:01 (從:Visual Studio一般討論區(General))
    2007年10月31日 上午 08:01

解答

  • HI  tmwclpu  Sir:

     

    我剛剛試了一下    並不會有錯誤訊息

     

    請問 你的錯誤訊息 是在什麼時候發生呢  (執行時 OR  編譯時 )

     

    給你參考看看

     

    程式碼區塊

     
    public partial class Form1 : Form
        {
            System.IO.Ports.SerialPort comport = new System.IO.Ports.SerialPort("COM1");

     

            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    comport.PortName = "COM1";
                    comport.BaudRate = 9600;
                    comport.Parity = Parity.None;
                    comport.DataBits = 8;
                    comport.StopBits = StopBits.One;

                    comport.ReadTimeout = 500;
                    comport.WriteTimeout = 500;
                    comport.Open();
                    MessageBox.Show("開啟COM1完成!");
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message.ToString(), "開啟COM1失敗");
                }

            }

            private void button2_Click(object sender, EventArgs e)
            {
              if (comport.IsOpen)  comport.Close();
            }
        }

     

     

     

     

     

     


    • 已標示為解答 璉璉 2010年2月20日 下午 12:53
    2007年10月31日 上午 08:23