感謝兩位的回應,
我現在的方法是用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