日期:2014-05-17  浏览次数:20977 次

C#串口通信接收数据部完整
自己做可发送接收的串口通信,发5代码个字节数据(FA FB FC FD FE),每次只能接2-3个数据(FA FB)。再按发送键就能接(FC FD FE),以此类推。求大神帮忙。发送接收代码如下:
发送:
 try
                {
                    string s = textBox1.Text;
                    s = s.Replace(" ", "");
                    byte[] buffer = new byte[s.Length / 2];
                    for (int i = 0; i < s.Length; i += 2)
                    {
                        buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
                        richTextBox1.Text += buffer[i / 2];
                    }
                    serialPort1.Write(buffer, 0, buffer.Length);
                }
                catch (Exception)
                {
                    MessageBox.Show("发送数据时发生错误!");
                    return;
                }
接收
int c = serialPort1.ReadByte();
richTextBox1.Text += c.ToString("X2") + " ";
------解决方案--------------------
http://download.csdn.net/detail/yeqi3000/4663134
自己下一个,带源码,好好看看。
------解决方案--------------------
你的接收端没有接收完就发送了的
需要在服务器端判断下网络流时候还有数据
如果有就继续读,读完再传输
------解决方案--------------------

有可能是粘包了,用一个缓存队列接收数据。
然后根据分隔符进行粘包的数据解析。
你关心的不是单词的首发,而是从队列中依次取一段值。
把收和解析两件事情分开做。