串口数据接收
新手请教高手,为何我的port1_DataReceived 不被调用呢,串口另一边传值过来了啊,这么接收不到呢 , 高手指点下
谢谢,急........
{
InitializeComponent();
port1.BaudRate = 1200;//波特率
port1.Parity = Parity.Odd;//无奇偶校验位
port1.StopBits = StopBits.One;//两个停止位
port1.Handshake = Handshake.None;//控制协议
port1.DataBits = 7;
port1.DataReceived+= new System.IO.Ports.SerialDataReceivedEventHandler(port1_DataReceived);
OpenPort();
}
//打开串口的方法
public void OpenPort()
{
try
{
port1.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
if (port1.IsOpen)
{
MessageBox.Show("COM1" + "开的!");
}
else
{
MessageBox.Show("COM1" + "关的!");
}
}
//关闭串口的方法
public void ClosePort()
{
port1.Close();
if (!port1.IsOpen)
{
Console.WriteLine("the port is already closed!");
}
}
private void port1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
MessageBox.Show("测试3");
StringBuilder currentline = new StringBuilder();
//循环接收数据
MessageBox.Show(port1.BytesToRead + "");
while (port1.BytesToRead > 0)
{
char ch = (char)port1.ReadByte();
currentline.Append(ch);
}
//在这里对接收到的数据进行处理
//
MessageBox.Show(port1.BytesToRead.ToString());
textBox1.Text = currentline.ToString();//currentline.ToString();
MessageBox.Show("测试1");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString() + "测试2");
}
}