向下位机发送一条指令,会返回一串数据,数据比较大,可能有几十K,不确定具体大小,上位机怎么接受到完整的数据并保存到本地,求助。
http://www.cnblogs.com/haofaner/p/3402307.html
if (serialPort1.IsOpen)////****判断串口是否打开****////
{
serialPort1.WriteLine(ML);////****串口写入texbox输入的指令*****/////
richTextBox1.AppendText(receiveString);/////*****串口接收事件****////
Application.DoEvents();
for (int i = 0; i < 32000; i += 100)
{
System.Threading.Thread.Sleep(100);
Application.DoEvents();
}
richTextBox1.ScrollToCaret();////*****richbox,滚动****/////
string filename;
if (SN == "")
{
filename = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString();
}
else
{
filename = textBox2.Text.Trim();
}
FileStream fs = new FileStream(@"log\" + filename + ".txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB2312"));//通过指定字符编码方式可以实现对汉字的支持,否则在用记事本打开查看会出现乱码
sw.Flush();
sw.BaseStream.Seek(0, SeekOrigin.Begin);
sw.Write(receiveString);//写入textBox2的内容
sw.Flush();
sw.Close();
fs.Close();
}
无限读缓冲区直到读完为止,然后拼接。我以前只这么干过。
你们的通信协议呢,不管串口通信还是套接字通信你们最少得设计一个简单的协议吧,比如从哪位字节后开始是数据区,数据区到哪个字节结束,检验位占多少个字节等等