none
serialPort DataReceived事件 RRS feed

  • 問題

  • 以下為我的程式片段

    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                inttemp = serialPort1.ReadByte();
                u32ReadBuf[u8Read_Index] = inttemp;   //u8Read_Index=200
                if (++u8Read_Index == READ_BUFFER_SIZE)
                    u8Read_Index = 0;
                textBox1.AppendText(u8ReadBuf[u8Read_Index].ToString());
                       
            }

    想請問各位前輩這樣寫有什麼問題?上面的程式執行時會出現執行緒有問題,我查了一下資料好像是執行緒要各自獨立,所以我不能在這個事件裡作動作,然後我把從u32ReadBuf[u8Read_Index] = inttemp; 這行以下的程式搬到其它地方之後出現了一個問題,我的DataReceived這個事件變成無窮迴圈,程式一直在裡面繞。

    我的目的是想利用datareceived事件來收資料,然後存在一個buffer再利用其它的事件把buffer裡的資料透出來,重點是不要用timer做,不知有沒有辦法,請問有人會嗎?請多多指教!

    謝謝回答的各位前輩!

    2007年4月19日 上午 10:01

解答

所有回覆