456
社区成员




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
);
};
String 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("COM3");
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);
}
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";
}