while (true)
{
serialPort1.DataReceived += new SerialDataReceivedEventHandler(port1_DataReceived);
}
private void port1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(1);
byte DATA = Convert.ToByte(serialPort1.ReadByte());
Console.WriteLine(DATA);
//MessageBox.Show(Convert.ToString(DATA));
}
我可以在控制台上看到串行数据,但我不知道如何处理这个数据并在textBox等上显示它。 我的代码中缺少什么
答案 0 :(得分:2)
除了@adatapost回答:
拳:
while(true)
{
serialPort1.DataReceived += new SerialDataReceivedEventHandler(port1_DataReceived);
} ???!!
希望这只是错误的复制/粘贴,导致在无限while
循环中订阅事件!
第二:目前还不清楚你想在屏幕上看到。
如果只是符号,第一个答案是非常合适的,如果不是,你应该阅读你的设备文档(打印机,账单计数器,RFID阅读器等等)知道如何处理这些字节。
希望这有帮助。
答案 1 :(得分:0)
使用Convert.ToBase64String()
方法。此方法将字节数组转换为Base64字符串。
编辑:
@Muhammad Ashraf:问题不在于字节DATA,问题在于线程处理。
是这是跨线程问题。您可以使用Invoke方法。
private void port1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(1);
byte DATA = Convert.ToByte(serialPort1.ReadByte());
String data=Convert.ToString(DATA);
if (textBox1.InvokeRequired)
{
textBox1.Invoke(new Action(() => { textBox1.Text = data; }));
}
}