我将说我是UWP的新手。我最近下载了VS2017,并开始从旧的C /CLI Winform项目创建一个应用程序。原因是避免设备兼容性问题。
问题。
我遵循了serialuart示例代码可用,https://github.com/ms-iot/samples/tree/develop/serialuart/
我已经能够从基于Arduino的设备成功连接和读取数据到UWP应用程序。我存在的问题是,该应用程序每隔一段时间都会引起cosxception错误:" 在目标多字节代码页中存在的Unicode字符的映射不存在P>
它似乎是引起问题的同一字符(或一组字符(。但是,当将基于Arduino的设备连接到Arduino串行显示器时,数据将完全按照预期打印出来。实际上,它甚至可以按照串行显示器上的介绍将其保存到SD卡中。
我已经使用了'try'和'catch'块来防止应用程序崩溃,并将错误打印在我用作终端窗口的文本块上,但错误似乎并没有清楚。每次收到新数据时,都会重印错误消息。我已经证实,当我尝试通过测试中途连接到Arduino设备时,只有在测试启动和测试端打印的某些字符引起了问题,并使测试数据流出了没有问题。
那么,如何清除此例外错误?当Aruino Serial Monitor不这样做时,为什么UWP应用程序在某些字符上遇到麻烦?
好的,所以我发现了这里的问题。在我的Arduino应用程序中,我发送了诸如
之类的字符²
和
°
Arduino串行终端中发生的情况是,它在打印的平方符号或度符号之前打印出Alt代码符号等。它看起来像是带有帽子的资本" A",然后是符号印刷。
我猜想这是Arduino串行终端的怪癖,因此我实际上能够将字符代码拆分(因为它们是两个字节宽(,并且仅打印出Byte的后半部分。
在VS2017 UWP中出现了问题,因为它仅看到了实际字符代码的一半并抛弃。我想出的"修复"意味着它可以正确解释所有序列数据。VS足够聪明,可以知道显示平方符号或度符号等时不要打印出Alt代码符号...