あるメソッドから別のメソッドに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;
}