111,129
社区成员
发帖
与我相关
我的任务
分享 private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
try
{
Thread.Sleep(50);
int len1 = sp.BytesToRead;
if (len1 == 16)
{
len1 = 0;
this.Invoke((EventHandler)(delegate
{
textBox2.Text += "get len16" + "\r\n\r\n";
}));
}
else if (len1 == 30)
{
sp.Write(data_reply, 0, 25);//发送协助转发应答包
byte[] data_temp = new byte[len1];
sp.Read(data_temp, 0, len1);//接收协助转发包
sp.DataReceived -= new SerialDataReceivedEventHandler(DataReceivedHandler);
this.Invoke((EventHandler)(delegate
{
textBox2.Text += " 接收数据" + "\r\n\r\n";
}));
}
else if (len1 == 46)
{
byte[] hello_temp = new byte[len1];
sp.Read(hello_temp, 0, len1);//接收hello包
sp.DataReceived -= new SerialDataReceivedEventHandler(DataReceivedHandler);
this.Invoke((EventHandler)(delegate
{
textBox2.Text += "OK" + "\r\n\r\n";
}));
}
else
{
sp.DataReceived -= new SerialDataReceivedEventHandler(DataReceivedHandler);
this.Invoke((EventHandler)(delegate
{
textBox2.Text += "数据包格式错误错误!" + "\r\n\r\n";
}));
}
}
catch (Exception ee)
{
sp.DataReceived -= new SerialDataReceivedEventHandler(DataReceivedHandler);
MessageBox.Show(ee.Message);
return;
}
}
看这逻辑代码,看得我流泪了,我特么的看不懂啥意思。 private void ZJ()
{
try
{
if (!serialPort1.IsOpen)//若端口没有打开,需打开端口
{
serialPort1.Open();
}
serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
serialPort1.Write(cmd, 0, cmd.Length);
}
catch (Exception ee)
{
serialPort1.DataReceived -= new SerialDataReceivedEventHandler(DataReceivedHandler);
MessageBox.Show(ee.Message );
return;
}
}[/quote]
代码贴错了,应该是sp,不是serialPort1,我自己的程序里写的是正确的 private void ZJ()
{
try
{
if (!serialPort1.IsOpen)//若端口没有打开,需打开端口
{
serialPort1.Open();
}
serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
serialPort1.Write(cmd, 0, cmd.Length);
}
catch (Exception ee)
{
serialPort1.DataReceived -= new SerialDataReceivedEventHandler(DataReceivedHandler);
MessageBox.Show(ee.Message );
return;
}
}