如何通过蓝牙将整数发送到WP8中的Arduino?

时间:2015-02-22 18:23:35

标签: c# windows-phone-8 bluetooth arduino

我正在制作一个应用程序,我需要通过蓝牙将手机的加速计读数发送到我的Arduino。我能够轻松地发送字符串,但是当我改变整数函数时,我遇到了错误。 这是我使用的代码:

private async void BT2Arduino_Sendint(int value)
{
       if (BTSock == null)
       {
           txtBTStatus.Text = "No connection found. Try again!";
           return;
        }
        else
            if (BTSock != null)
            {
               byte[] buffer = new byte[] { Convert.ToByte(value) };
               var datab = GetBufferFromByteArray(UTF8Encoding.UTF8.GetBytes(buffer, 0, 4));                  await BTSock.OutputStream.WriteAsync(datab);               
               txtBTStatus.Text = "Connected to the Device";
            }
 }


private IBuffer GetBufferFromByteArray(byte[] package)
{
    using (DataWriter dw = new DataWriter())
    {
        dw.WriteBytes(package);
        return dw.DetachBuffer();
    }
}

错误基本上在我使用UTF8编码的行中。它说 “System.Text.Encoding.GetBytes(char [],int,int)的最佳重载方法匹配有一些无效的参数” 请尽快帮我解决这个问题。我知道我在基础知识上犯了一个错误,但我对编码知之甚少。感谢您的任何帮助,您可以提供。 :)

2 个答案:

答案 0 :(得分:0)

显然System.Text.Encoding.GetBytes的第一个参数需要是char数组,而不是字节数组。

答案 1 :(得分:0)

对我来说,你可以简单地使用BitConverter类替换代码:

if (BTSock != null)
{
    byte[] buffer = new byte[] { Convert.ToByte(value) };
    var datab = GetBufferFromByteArray(UTF8Encoding.UTF8.GetBytes(buffer, 0, 4));                  
    await BTSock.OutputStream.WriteAsync(datab);               
    txtBTStatus.Text = "Connected to the Device";
}

使用:

if (BTSock != null)
{
    byte[] datab = BitConverter.GetBytes(value);
    await BTSock.OutputStream.WriteAsync(datab);               
    txtBTStatus.Text = "Connected to the Device";
}