あるメソッドから別のメソッドにunsignedchar配列を渡す必要があり、次のコードを使用してみました。
{
unsigned char *lpBuffer = new unsigned char[182];
ReceiveSystemState(lpBuffer);
}
BOOL ReceiveSystemState(unsigned char *lpBuffer)
{
unsigned char strRecvBuffer[182] = { 0 };
//strRecvBuffer construction
memcpy(lpBuffer, strRecvBuffer, sizeof(strRecvBuffer));
return TRUE;
}
これらの3つの方法(で使用ReceiveSystemState
)はどちらも期待どおりに機能しませんでした。それらのそれぞれを使用した後、それがコピーされるのは最初の文字でstrRecvBuffer
あり、それ以上のものではありません。にはstrRecvBuffer
要素ごとに空の文字がありますが、その文字列はハードウェアデバイスからのメッセージであり、そのメッセージはプロトコルを使用して分析されるため、そのまま必要です。ここで何が恋しいですか?初期化lpBuffer
が間違っていますか?
編集:私はmemcpy
仕事をするために簡単な方法を使用しました。それでも同じ結果です。コピーされるのは、の最初の文字だけですstrRecvBuffer
。
EDIT2:作業コード:
{
unsigned char *lpBuffer = new unsigned char[182];
ReceiveSystemState(lpBuffer);
for (int i = 0; i < 144; i++)
{
memcpy(&c_dateKG[i], lpBuffer + i * sizeof(unsigned char), sizeof(unsigned char) );
}
}
BOOL ReceiveSystemState(unsigned char *lpBuffer)
{
unsigned char strRecvBuffer[182] = { 0 };
//strRecvBuffer construction
memcpy(lpBuffer, strRecvBuffer, sizeof(strRecvBuffer));
return TRUE;
}