初学C#,为什么第一个时间错误。 第二个事件就可以啊?
private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
byte[] rsvdata = Convert.FromBase64String(serialPort.ReadLine());//读取输入缓冲区
string str = Encoding.Unicode.GetString(rsvdata); //解码
serialPort.Close();//关闭串口 rsvbox.Text = str;//错误!
} private void button1_Click(object sender, EventArgs e)
{
byte[] rsvdata = Convert.FromBase64String(serialPort.ReadLine());//读取输入缓冲区
rsvbox.Text = Encoding.Unicode.GetString(rsvdata); //解码
serialPort.Close(); //关闭串口*/
}
private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
byte[] rsvdata = Convert.FromBase64String(serialPort.ReadLine());//读取输入缓冲区
string str = Encoding.Unicode.GetString(rsvdata); //解码
serialPort.Close();//关闭串口 rsvbox.Text = str;//错误!
} private void button1_Click(object sender, EventArgs e)
{
byte[] rsvdata = Convert.FromBase64String(serialPort.ReadLine());//读取输入缓冲区
rsvbox.Text = Encoding.Unicode.GetString(rsvdata); //解码
serialPort.Close(); //关闭串口*/
}
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int count = upsCom.BytesToRead; byte[] buffer = new byte[count]; serialPort.Read(buffer, 0, count); string resultString = Encoding.Default.GetString(buffer);//这里要根据实际情况选择解码 if (serialPort.IsOpen)
{
serialPort.DiscardInBuffer();
}
}
void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int count = serialPort.BytesToRead; byte[] buffer = new byte[count]; serialPort.Read(buffer, 0, count); string resultString = Encoding.Default.GetString(buffer);//这里要根据实际情况选择解码 if (serialPort.IsOpen)
{
serialPort.DiscardInBuffer();
}
}
这里跨线程调用了。提示应该是不是在创建rsvbox的线程上访问它。如果是的话请改用安全的异步调用方法,比如Invoke或用BackgroundWorker异步编程。