我目前正在为此现代化HMI,我使用Microsoft提出的平台UWP。 HMI的旧版本是在C++
中开发的,但是出于新的需要,现在是在C# / XAML
中开发的。
我负责应用程序的所有通信部分,它与服务器永久通信。
要处理此连接,我使用套接字和后台任务永久读取数据。在连接级别上没有问题,应用程序可以很好地连接到服务器。通过缺点,我无法读取HMI接收到的数据。
这是旧代码的一部分(部分数据恢复):(C++
int ServerConnexion::server_input (ACE_HANDLE) {
char data[2048];
int tailleRecue = 0;
switch (tailleRecue = peer().recv(data, sizeof(data))) {
case -1:
console.print("Read Error.");
case 0:
console.print("Closed");
default:
char *debutMsg = data;
int longueurMsg;
do {
longueurMsg = decodeMsg(debutMsg);
debutMsg = debutMsg + longueurMsg;
} while (((debutMsg - data) < tailleRecue) && (longueurMsg != -1));
}
return 0;
}
现在这是我在新HMI中的代码,该部分在后台任务中执行:(C#
)
var socket = socketInformation.StreamSocket;
DataReader reader = new DataReader(socket.InputStream);
reader.InputStreamOptions = InputStreamOptions.Partial;
await reader.LoadAsync(250);
var dataString = reader.ReadString(reader.UnconsumedBufferLength);
localSettingsData.Values["data"] = dataString;
当然,我遇到的问题是显示此错误:
No mapping for the Unicode character exists in the target multi-byte code page
我该如何解决问题?
是否存在用于通过UWP套接字读取和解码字节的函数或方法?