hanxuexuehx
2015-06-14 02:26
采纳率: 100%
浏览 2.3k
已采纳

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;
}

    }   
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • hanxuexuehx 2015-06-15 07:04
    已采纳

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • hanxuexuehx 2015-06-14 02:31

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

    评论
    解决 无用
    打赏 举报
  • hanxuexuehx 2015-06-14 02:35

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

    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-06-14 02:45

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

    评论
    解决 无用
    打赏 举报
  • hanxuexuehx 2015-06-14 08:40

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题