xietiao0306
_bbbbbb
采纳率0%
2017-10-17 16:20 阅读 1.6k

C#串口读取较大的数据的问题

5

向下位机发送一条指令,会返回一串数据,数据比较大,可能有几十K,不确定具体大小,上位机怎么接受到完整的数据并保存到本地,求助。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-10-18 00:39
    点赞 1 评论 复制链接分享
  • lengyang2016 lengyang2016 2017-10-18 01:52

    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();
            } 
    
    点赞 评论 复制链接分享
  • qq_28194303 晨易夕 2017-10-18 07:19

    无限读缓冲区直到读完为止,然后拼接。我以前只这么干过。

    点赞 评论 复制链接分享
  • lj1995091 Yentre 2017-10-19 08:36

    你们的通信协议呢,不管串口通信还是套接字通信你们最少得设计一个简单的协议吧,比如从哪位字节后开始是数据区,数据区到哪个字节结束,检验位占多少个字节等等

    点赞 评论 复制链接分享

相关推荐