質問: 以上宜しくお願いします。
回答: こんにちは。 意味的には、char*は文字列で、unsigned char*はバイト列です。 通常、バイト列に対して文字列用のstrcpy()系の関数を使うと何か問題が起きます。 提示されているソースでは、文字列最後のNULLをコピーするため、文字列の文字数がMAXTRANSと等しい時、不正アクセスするため何が起こるか分かりません。 対策の方針は2つ考えられます。 1) USB通信は文字列だけの場合は、全体的に文字列主で処理するのが良いです。 2) USB通信は基本的にバイナリ値をやり取りする。その一部として文字列を送ることがある場合は、全体的にバイト列で処理するのが良いです。 前者の方が安易に対応できます。 後者はそれなりに面倒ですが、本来の姿は後者と思います。 どちらでしょうか?