2

我有一个用 C++/CLI 编写的串口应用程序

从我正在使用的端口输入缓冲区读取数据

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

我需要将 inputString 值转换为字节数组。我试过使用

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

只要读入我的端口输入缓冲区的值小于 0x7F(十六进制),它就可以工作。任何大于的值0x7F都会转换为0x3F= "?"

{0x7F, 0xFF}例如,如果我向我的输入端口发送两个字节,那么当我unicodeBytes = { 0x7F 0x00, 0x3F 0x00}在 VS2008 的调试器监视窗口中查看并转换数组时

根据我查看过的 unicode 表,OxFF 是一个有效的 unicode 值,等于一个拉丁小写字母“y”,上面有两个小点。

任何关于如何将带有两个小点 = 0xFF 的字符串格式的 'y' 转换为字节数组中的 0xFF 的任何建议都将不胜感激。

4

1 回答 1

0

使用SerialPort'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 回答