数据是从port端口接受的,暴露的父类是一个blueprintlibrary代码如下:
.h
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "mainBP.generated.h"
/**
*
*/
UCLASS()
class MYPJT_API UmainBP : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable, BlueprintPure, Category = Game)
static FString BodyTurn
(
FString& LX_uparm,
FString& LY_uparm,
FString& LZ_uparm,
FString& LZ_lowarm,
FString& LX_hand,
FString& LY_hand,
FString& RX_uparm,
FString& RY_uparm,
FString& RZ_uparm,
FString& RZ_lowarm,
FString& RX_hand,
FString& RY_hand
);
};
.cpp
FString UmainBP::BodyTurn(
FString& LX_uparm,
FString& LY_uparm,
FString& LZ_uparm,
FString& LZ_lowarm,
FString& LX_hand,
FString& LY_hand,
FString& RX_uparm,
FString& RY_uparm,
FString& RZ_uparm,
FString& RZ_lowarm,
FString& RX_hand,
FString& RY_hand
)
{
int32_t wTempList[20] = { 0 }, i = 0;
HANDLE hCom1 = init_com("COM4");
char readBuf[1000] = { 0 }, bufTemp1[1024] = { 0 }, bufTemp2[1024] = { 0 };
DWORD readsize;
int n = 2;
string str = "";
int index = 0;
while (n--)
{
ReadFile(hCom1, readBuf, 256, &readsize, NULL);
str += readBuf;
memset(readBuf, 0, sizeof(readBuf));
index = str.find('\n');
if (index < 0) {}
else if (index == 113)
{
string p = str.substr(0, index + 1);
if (p[0] == ':' && p[113] == '\n')
{
for (i = 0; i < 14; i++)
{
wTempList[i] = strtoul(p.substr(i * 8 + 1, 8).c_str(), NULL, 16);
}
uint32_t crcData = wTempList[13];
uint32_t crcRes = crc32_in_c(0, (uint8_t*)wTempList, 52);
}
index = 0;
float lz_uparm = 180*wTempList[1]/32768;
float ly_uparm = 180*wTempList[2]/32768;
float lx_uparm = 180*wTempList[3]/32768;
float lz_lowarm = 180*wTempList[4]/32768;
float lx_hand = 180*wTempList[5]/32768;
float ly_hand = 180*wTempList[6]/32768;
float rz_uparm = 180*wTempList[7]/32768;
float ry_uparm = 180*wTempList[8]/32768;
float rx_uparm = 180*wTempList[9]/32768;
float rz_lowarm = 180*wTempList[10]/32768;
float rx_hand = 180*wTempList[11]/32768;
float ry_hand = 180*wTempList[12]/32768;
LZ_uparm = FString::SanitizeFloat(lz_uparm);
LY_uparm = FString::SanitizeFloat(ly_uparm);
LX_uparm = FString::SanitizeFloat(lx_uparm);
LZ_lowarm = FString::SanitizeFloat(lz_lowarm);
LX_hand = FString::SanitizeFloat(lx_hand);
LY_hand = FString::SanitizeFloat(ly_hand);
RZ_uparm = FString::SanitizeFloat(rz_uparm);
RY_uparm = FString::SanitizeFloat(ry_uparm);
RX_uparm = FString::SanitizeFloat(rx_uparm);
RZ_lowarm = FString::SanitizeFloat(rz_lowarm);
RX_hand = FString::SanitizeFloat(rx_hand);
RY_hand = FString::SanitizeFloat(ry_hand);
int32 MyVar = CVarRefractionQuality.GetValueOnGameThread();
}
else
{
str.erase(0,index + 1);
LZ_uparm = "0";
LY_uparm = "0";
LX_uparm = "0";
LZ_lowarm = "0";
LX_hand = "0";
LY_hand = "0";
RZ_uparm = "0";
RY_uparm = "0";
RX_uparm = "0";
RZ_lowarm = "0";
RX_hand = "0";
RY_hand = "0";
}
}
return "0";
}
AnimGraph蓝图:
你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。
您可以点击问题下方的【编辑】,进行补充修改问题。