发送40 40 00 84 00 00 00 11 11 11 11 41 41 41 04 0d 0a 
串口线 2 3短接,自发自收第一次发送之后收到 40 40 00 84 00 00 00 11 11 11 11 41 41 41 04 0d 0a 但是第二次以后发送之后只收到 40 40 00 84 00 00 00 11 11 11 11 41 41 4104 0d 0a 没了  经测试发现第二次以后发送,bytes = port.Read(recvBytes, 0, recvBytes.Length);
recvBytes最大只能接收到14字节,超出的部分没掉了求达人推测原因

解决方案 »

  1.   

    我是这么做的
                              try
                {                bool isGet = false;
                    string received = string.Empty;
                    int nTimeout = 0;
                    do
                    {
                        received += m_Port.ReadExisting();
                        if (received.IndexOf("\x0a") >= 0)
                        {
                            //.....do your work
                        }                }
                    while (!isGet);
                }
                catch
                {            }
      

  2.   

    看发送,如果你使用received += m_Port.ReadExisting();这种方式来接收,有可能把04之后的字符都丢弃了,这是string对象的问题,第二次发送就自然没了04后面的了,改为byte[]发送和接收吧。
      

  3.   

    port.Write(bs, 0, bs.Length);
    bytes = port.Read(recvBytes, 0, recvBytes.Length);
    用的就是byte收发
      

  4.   

    有两个可能,
    1,接收等待时间不够,只接受到04之前的的字节,后面的还没收到就不等了,一般都有循环接收,然后把结果+起来,然后判断是否有需要的数据,你那里接收太简单了。
    2,刚才说过,任何时候都不能使用string对象来处理发送和接受的数据,string对象在某些情况下会把04等字符截断。