http://blog.sina.com.cn/s/blog_9faf08510101dhk0.html
2013
private void serialPort1_DataReceived(objectsender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//先读取下位机发来的数据,然后就比较
//如果是呼叫我,则回复他
//下位机接到回复后就发数据过来,这边要接收
//吧接受的数据与该用户的之前的数据进行比较
//如果是减肥成功了,就form5,否则就form4
//最后就插入该用户刚刚测试的数据
if (serialPort1.IsOpen == false)
{
return;
}
Thread.Sleep(2000);
int c = serialPort1.BytesToRead; //获取缓冲区中的字节数
//int n = serialPort1.ReadBufferSize;
byte[] buf = new byte[c];//声明一个临时数组存储当前来的串口数据
StringBuilder strbuilder = new StringBuilder(buf.Length);
serialPort1.Read(buf, 0, c);//读取缓冲数
//data =System.Text.Encoding.ASCII.GetString(buf);//将RevData中的数据转换成字符串
string str2="";
int data = 0;
if (c == 1)
{
foreach (byte b in buf)
{
strbuilder.Append(b.ToString("X2"));//如果两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,我们可以指定X2,这样显示出来就是:0x0A、0x1A。
}
data = 0;