我想给SerialPort的Read函数做成事件形式,这样以后掉前来方便
在Cgs08v.cs中
static class MyError
{
public static string msg;
};
public class RecvEventArgs : EventArgs
{
public string message;
public byte[] recvbytes;
public int recvlen;
public RecvEventArgs(string message)
{
// recvbytes=new byte[1000];
this.message = message;
}
};
public delegate void RecvHandler22(object Cgs08v, RecvEventArgs myMEA);
public class Cgs08v : SerialPort
{
public event RecvHandler22 OnRecvData;
public string run()
{
Thread thread=new Thread(this.ReadSerialPort );
thread.Start();
return "";
}
public void ReadSerialPort()
{
int readlen=0;
RecvEventArgs x = new RecvEventArgs("收到消息");
try
{
while (true)
{
readlen = this.Read(x.recvbytes, 0, this.BytesToRead);//我想这个Read函数应该是柱塞的
x.recvlen = readlen;
OnRecvData(this, x);
}
}
catch (System.Exception ex)
{
MyError.msg =ex.Message ;
}
return;
}
};
在Form1.cs中
Cgs08v sp = new Cgs08v();
public Form1()
{
InitializeComponent();
sp.OnRecvData += new RecvHandler22(Cgs08v_OnReceive);
} private void Cgs08v_OnReceive(object sender, RecvEventArgs e) //自定义事件响应函数
{
string aa=e.recvbytes.ToString();
MessageBox.Show(aa);
} private void button3_Click(object sender, EventArgs e)
{
sp.run();
}我按了button3,对方已经发过来数据了,但是我这里没显示出来
(另外:SerialPort.Read函数应该是阻塞的把)
我是第一次写c#程序 大家给我指点指点
在Cgs08v.cs中
static class MyError
{
public static string msg;
};
public class RecvEventArgs : EventArgs
{
public string message;
public byte[] recvbytes;
public int recvlen;
public RecvEventArgs(string message)
{
// recvbytes=new byte[1000];
this.message = message;
}
};
public delegate void RecvHandler22(object Cgs08v, RecvEventArgs myMEA);
public class Cgs08v : SerialPort
{
public event RecvHandler22 OnRecvData;
public string run()
{
Thread thread=new Thread(this.ReadSerialPort );
thread.Start();
return "";
}
public void ReadSerialPort()
{
int readlen=0;
RecvEventArgs x = new RecvEventArgs("收到消息");
try
{
while (true)
{
readlen = this.Read(x.recvbytes, 0, this.BytesToRead);//我想这个Read函数应该是柱塞的
x.recvlen = readlen;
OnRecvData(this, x);
}
}
catch (System.Exception ex)
{
MyError.msg =ex.Message ;
}
return;
}
};
在Form1.cs中
Cgs08v sp = new Cgs08v();
public Form1()
{
InitializeComponent();
sp.OnRecvData += new RecvHandler22(Cgs08v_OnReceive);
} private void Cgs08v_OnReceive(object sender, RecvEventArgs e) //自定义事件响应函数
{
string aa=e.recvbytes.ToString();
MessageBox.Show(aa);
} private void button3_Click(object sender, EventArgs e)
{
sp.run();
}我按了button3,对方已经发过来数据了,但是我这里没显示出来
(另外:SerialPort.Read函数应该是阻塞的把)
我是第一次写c#程序 大家给我指点指点
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货