2

C ++/CLIで記述されたシリアルポートアプリケーションがあります

私が使用しているポート入力バッファからデータを読み取るために

String^ inputString = System::IO:Ports::SerialPort::ReadExisting();

inputString値をバイトの配列に変換する必要があります。使ってみました

array<Byte> ^unicodeBytes = System::Text::Encoding::Unicode->GetBytes( inputString );

これは、ポート入力バッファーに読み込まれる値が0x7F(16進数)未満である限り機能します。より大きい値は、 = "?"0x7Fに変換されます。0x3F

{0x7F, 0xFF}たとえば、入力ポートに2バイトを送信するunicodeBytes = { 0x7F 0x00, 0x3F 0x00}場合、VS2008のデバッガー監視ウィンドウでそれらを読み取って配列を変換すると、

私が調べたUnicodeの表によると、OxFFは、ラテン語の小文字「y」に等しい有効なUnicode値であり、その上に2つの小さなドットがあります。

文字列形式の2つのsamllドット=0xFFを使用して'y'をバイト配列の0xFFに変換する方法に関する提案をいただければ幸いです。

4

1 に答える 1

0

エンコードされたテキストをデコードする代わりに、 SerialPort'sメソッドを使用してバイトを取得します。Read

int BufferSize = <some size>;
array<byte> ^bytes = gcnew array<byte>(BufferSize);
int available = serialPort->BytesAvailable;
serialPort->Read(bytes, 0, Math::Min(available, BufferSize));
于 2016-04-17T23:16:23.803 に答える