You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure IoT Hub Trigger v2读取Teltonika设备上传的原始字节数据

解决方案

问题根因

  • 你使用的Teltonika设备上传的是Codec8格式的二进制数据,不是UTF8编码的文本,直接调用Encoding.UTF8.GetString转码必然会生成乱码,也就是你遇到的异常输出。
  • 直接把byte[]类型变量传入日志输出时,C#默认的ToString逻辑只会返回System.Byte[]类型名,不会展示数组内的实际内容。

代码修改

你可以直接将原始字节数组转换为十六进制字符串输出查看,同时保留原始字节数组供后续使用,修改后的完整代码如下:

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.EventHubs;
using System;
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)
        {
            // 直接获取原始字节,无需任何转码
            byte[] originalBytes = message.Body.Array;
            // 转十六进制字符串方便日志查看,可按需选择是否保留分隔符
            string hexView = BitConverter.ToString(originalBytes).Replace("-", string.Empty);
            
            log.LogInformation($"收到原始数据,十六进制格式:{hexView}");

            // 后续要解析Codec8直接操作originalBytes数组即可
        }
    }
}

补充说明

  • 如果你不需要十六进制展示,只需要原始字节做后续处理,直接使用originalBytes变量即可,不需要做任何转换操作。
  • 如果希望十六进制字符串用连字符分隔每个字节,去掉代码中的.Replace("-", string.Empty)部分即可。

内容的提问来源于stack exchange,提问作者LordIver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:42:02