2 hanxuexuehx hanxuexuehx 于 2015.06.14 10:26 提问

C# socket接收单片机数据问题

单片机通过wifi将采集到传感器的数据传至上位机,单片机是每一秒发送一组数据,如“0xaa,0x55,‘采集到的数据1’,‘采集到的数据2’”
问:怎样才能接收数据并判断第一个是“0xaa“并且第二位是”0x55“时候将”采集到的数据1“和”采集到的数据2“拿出来并整合合,下一秒也是这样循环下去,我现在只能做到接收数据。
private byte[] m_receiveBuffer = new byte[1024];
sock.BeginReceive(m_receiveBuffer, 0, m_receiveBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null);
private void ReceiveCallBack(IAsyncResult ar)
{
try
{
int REnd = sock.EndReceive(ar);

                string strReceiveData = m_receiveBuffer[0].ToString("X2");
                this.HandleMessage(strReceiveData);
                sock.BeginReceive(m_receiveBuffer, 0, m_receiveBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null);

        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
            }       

private void HandleMessage(string message)
{
message = message.Replace("\0", "");
if (!string.IsNullOrEmpty(message))
{
label6.Text = message;
}

    }   

6个回答

hanxuexuehx
hanxuexuehx   2015.06.15 15:04
已采纳

已解决,不过还需要优化,比如延时问题

caozhy
caozhy   Ds   Rxr 2015.06.14 10:45

message = message.Replace("/0", "");
别的不看了,但是这明显斜杠写反了。

hanxuexuehx
hanxuexuehx   2015.06.14 10:31

这个代码只是接收这一部分,剪切出来有点奇怪,希望各位不要介意

hanxuexuehx
hanxuexuehx   2015.06.14 10:35

希望有人回答啊。。。。。

hanxuexuehx
hanxuexuehx   2015.06.14 15:39

为什么没有人回答了???

hanxuexuehx
hanxuexuehx   2015.06.14 16:40

我想问题是由于单片机一次发送一个字节,一直不断发送,不断刷新buffer,所以label6.Text显示的就只是一个当前数据,怎么处理呢?

Csdn user default icon
上传中...
上传图片
插入图片