我正在制作一个应用程序,我需要通过蓝牙将手机的加速计读数发送到我的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)的最佳重载方法匹配有一些无效的参数” 请尽快帮我解决这个问题。我知道我在基础知识上犯了一个错误,但我对编码知之甚少。感谢您的任何帮助,您可以提供。 :)
答案 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";
}