2017-04-21 99 views
0

我会先说我是UWP的新手。我最近下载了VS2017,并开始着手创建基于较早的C++/CLI Winform项目的应用程序。原因是为了避免设备兼容性问题。UWP和SerialSample字节编码错误

问题所在。

我跟着SerialUART示例代码availbe这里https://github.com/ms-iot/samples/tree/develop/SerialUART/

而且我已经能够连接并从Arduino的基于设备进入UWP应用成功读取数据。我遇到的问题是,每隔一段时间在App抛出一个收到COMException错误:“在目标多字节代码页中,为Unicode字符没有映射

这似乎是相同的字符(或一组字符)导致问题。但是当基于Arduino的设备连接到Arduino串行监视器时,数据将按照预期打印出来。事实上,它甚至可以保存到SD卡上,正如串行监视器上显示的那样。

我已经使用了“试”“抓”块防止应用程序崩溃,并打印出错误我使用一个终端窗口的文本块,但该错误似乎并不清楚。每次收到新数据时,错误消息都会被重新打印。 我已经验证过,在测试启动和测试结束时只打印了某些字符,导致问题,因为我试图在测试的中途连接到arduino设备并获得测试数据流式传输没有问题。

那么,我该如何清除这个异常错误呢?为什么UWP应用程序在aruino串行监视器不支持某些字符时遇到麻烦?

回答

0

好吧,所以我发现问题出在这里。在我的Arduino的申请,我会发送字符,如

²

°

在Arduino的串行终端,会发生什么,它事先打印出的ALT-码符号的平方符号或学位符号被打印等。它看起来像一顶帽子的大写字母“A”,后面跟着打印的符号。

我猜这是arduino串行终端的一个怪癖,为了解决这个问题,我实际上可以分开字符代码(因为它们是两个字节宽)并仅打印出字节的后半部分。

问题出现在VS2017 UWP中,因为它只看到实际字符代码的一半并且摇摆不定。拿出'修复'我想出了意味着它可以正确解释所有的串行数据。而VS很聪明,在显示方形符号或度数符号等时不会打印出alt-code符号...

相关问题