从Azure IoT集线器触发器读取原始数据



我只想说我是c#和Visual Studio编程新手。

我有一个项目,我使用远程信息处理单元将传感器数据发送到我的Azure物联网中心。我已经建立了连接,我正试图读取来自远程信息处理单元的原始数据。我还使用Azure功能在Visual Studio中设置了Azure IoT hub触发器,IoT hub trigger v2。

参见下面的代码:


using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Azure.EventHubs;
using System.Text;
using System.Net.Http;
using Microsoft.Extensions.Logging;
namespace Teltonika_trigger_v3
{
public static class Function1
{
private static HttpClient client = new HttpClient();
[FunctionName("Function1")]
public static void Run([IoTHubTrigger("messages/events", Connection = "EventHubConnection")]EventData message, ILogger log)
{
log.LogInformation($"C# IoT Hub trigger function processed a message: {Encoding.UTF8.GetString(message.Body.Array)}");
}
}
}

我正在使用Teltonika远程信息处理单元,我知道他们使用一种称为Codec8的特殊编码(https://wiki.teltonika-gps.com/view/Codec)

最初我只是有兴趣在没有任何翻译的情况下读取发送到我的物联网中心的原始字节,我该如何做到这一点?

通过上面的代码,我得到了一些非常奇怪的结果

我已经尝试删除Encoding.UTF8.GetString部分,但这只是显示数据为"System.Byte[]"

如何读取进入物联网中心的原始数据?

通过调用Encoding.UTF8.GetString(message.Body.Array),您告诉函数善意地接受这些字节并将它们视为Unicode,因此'奇怪的结果'。如果你只是想把字节值作为文本,看看这个StackOverflow的答案。

最新更新