看板 C_Sharp 關於我們 聯絡資訊
感謝兩位的回應, 我現在的方法是用datareceived event之後, 判斷是不是有資料還沒讀完. 如果是的話,就一次讀一個byte做轉換. 讀完之後再找另一個label放資料,並清空原來的textbox. 另外,閒聊一下readbyte和readexisting readexisting好像讀入的資料就是string了? readbyte則是讀入的資料是byte. 所以我想做到的convert.tostring(byte,16) 只能在readbyte執行,而不在readexisting執行.. void port_op_DataReceived(object sender, SerialDataReceivedEventArgs e) { while (port_op.BytesToRead != 0) { change2(Convert.ToString(port_op.ReadByte(), 16), textBox2); } change(textBox2.Text, label9); //change除了把textbox文字存入label9以外, //存完之後把textbox清空 } 這樣的方法, 不過有一個缺點, 因為datareceived和主程式的label是不同的執行緒, 所以不能跨執行緒更改label的text. 必須用delegate方法更改label的text 這方法我在板上有po過,就不多加敘述了. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.229.97