【问题标题】:Read data from a COM port using TCP使用 TCP 从 COM 端口读取数据
【发布时间】: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


【解决方案1】:

此评论提供了问题的解决方案:

所以您实际上从 moxa 集线器收到连接请求并接收(错误)数据?那么它可能与 moxa 设备上错误的串口设置有关(可能是错误的波特率)– 1 月 2 小时前

确实,波特率不对。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2016-05-15
    相关资源
    最近更新 更多