2017-04-21 58 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符號...