我想实现的是上位机发送数据,然后接收数据,然后上位机处理数据,再继续发送数据一直循环到结束。
目前的问题就是,我通过以下代码实现的是在循环调用测试函数,循环运行完了以后,才开始读取数据
public Form1()
{
InitializeComponent();
serialPort1.DataReceived += serialPort1_DataReceived;
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.Invoke(new EventHandler(Read));
}
private void Read(object s, EventArgs e)
{
int n = serialPort1.BytesToRead;
byte[] buf = new byte[n];
serialPort1.Read(buf, 0, n);
data_catched=true;
}
public bool test_CA()
{//测试CA
//定义附加信息
Byte[] test_CA_add = new Byte[1] { 0x00 };
//发送命令帧
Write(test_cmd_CA, test_CA_add);//发送数据函数测试无误,并在发送完后立刻有数据返回
byte test_CA_data;
//时延等待接收数据
for (int i = 0; !data_catched && i < 300; i++)
{
Thread.Sleep(10);
}
if (!data_catched)
{
//处理数据
}
data_catched=false;
}