【发布时间】:2011-12-15 22:19:30
【问题描述】:
我正在使用Moxa Serial Hub 集中一些使用 RS-232 / NMEA 协议进行通信的设备。
串行集线器作为 TCP 客户端工作,每次接收数据时都会将其传输到我机器中已知的 IP/端口。
问题是我没有正确接收数据(我以为我所要做的就是创建一个接受连接的 TCP 服务器,并将数据读取为字节,但这只会给我一些奇怪的字符)
我收到了字节......但是当转换为文本时......它只是一些奇怪的字符,我在这个转换中遗漏了一些细节。 到目前为止我已经尝试过:
byte[] b = new byte[1000];
int k = s.Receive(b);
Console.WriteLine(Encoding.UTF8.GetString(b, 0, 1000));
Console.WriteLine(Encoding.ASCII.GetString(b));
for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(b[i]));
所有这 3 种方法都写相同的文本...
有谁知道在这种情况下如何正确读取数据?
【问题讨论】:
-
所以您实际上从 moxa 集线器收到连接请求并接收(错误)数据?那么它可能与moxa设备上的错误串口设置有关(可能是错误的波特率)
-
您确定您的数据应该是文本(而不是一些原始字节数组)吗?
-
这听起来像是一个编码问题,因为您声称您收到了“奇怪”的字符。您是否能够手动验证您接收/发送的字节实际上是否正确?所以转换它.....你的问题到底是什么你没有提供代码。
-
你得到了什么字节,你期望得到什么数据?
-
@Hans Passant:您能否请停止在问题标题中添加[已解决]?如果问题已在评论中或由 OP 本人回答,请将其添加为答案。见这里:meta.stackexchange.com/questions/116101/…
标签: c# .net tcp serial-port