我用桃花赊春风 2023-04-04 14:11 采纳率: 0%
浏览 59
已结题

虚幻TCP协议/如何以16进制发送

使用UE4 TCP Socket Plugin 插件 与报警传感器TCP链接
其中使用7E FF 06 0D 00 00 00 FE ER EF 通讯指令 使传感器播放声音(报警器不响)
使用网络调试助手建立服务器 与UE 链接, 服务器HEX接收信息 收到的是:37 45 20 46 46 20 30 36 20 30 44 20 30 30 20 30 30 20 30 30 20 46 45 20 45 45 20 45 46, 求解决方法UE里向服务器以16进制格式发送

img

img

img

  • 写回答

2条回答 默认 最新

  • weixin_42846454 2023-04-12 14:20
    关注

    在 TCP Socket Actor 组件中,设置连接的服务器地址和端口。

    在需要发送数据的事件中,调用 TCP Socket Actor 组件的 Send Bytes 方法,将需要发送的16进制数据转换为字节数组,并传递给该方法。

    以下是使用UE4 TCP Socket Plugin 插件向服务器发送16进制数据的示例代码:

    #include "MyActor.h"
    #include "TCPActor.h"
    #include "Kismet/KismetStringLibrary.h"
    
    void AMyActor::SendHexData()
    {
        // 获取需要发送的16进制数据
        FString HexData = "7EFF060D000000FEEREF";
        
        // 将16进制字符串转换为字节数组
        TArray<uint8> ByteArray;
        UKismetStringLibrary::Conv_HexStringToBytes(HexData, ByteArray);
        
        // 获取 TCP Socket Actor 组件
        UTCPActor* TCPActor = Cast<UTCPActor>(GetComponentByClass(UTCPActor::StaticClass()));
        
        // 发送字节数组
        if (TCPActor && TCPActor->IsConnected())
        {
            TCPActor->SendBytes(ByteArray);
        }
    }
    

    在该示例代码中,首先使用 Conv_HexStringToBytes 方法将16进制字符串转换为字节数组,然后通过 Send Bytes 方法发送字节数组。

    在上述示例代码中,需要注意的是,16进制字符串的格式应该为没有空格的连续字符,如示例代码中的 "7EFF060D000000FEEREF",而非网络调试助手中显示的每两个字符之间有一个空格的格式。

    评论

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 赞助了问题酬金15元 4月6日
  • 创建了问题 4月4日

悬赏问题

  • ¥15 w10部分软件不能联网
  • ¥15 关于安装hbase的问题(操作系统-windows)
  • ¥15 cadence617版本,如何做一个参数可调的反相器
  • ¥15 novnc连接pve虚拟机报错安全协议不支持262
  • ¥15 设备精度0.03给多少公差能达到CPK1.33
  • ¥15 qt+ffmpeg报错non-existing PPS 0 referenced
  • ¥15 FOC simulink
  • ¥50 MacOS 使用虚拟机安装k8s
  • ¥20 玩游戏gpu和cpu利用率特别低,玩游戏卡顿
  • ¥25 oracle中的正则匹配