这就是我正在做的事情。基本上,我在 linux C 中有一些代码处理一堆数据,然后我需要将这些数据发送到可以“实时”绘制数据的 C# 应用程序。所以我所做的就是将数据保存到一个文件中,让 C# 应用程序只监视文件更改,然后更新图表。但这真的没有那么好。该文件正在读取它正在更频繁地更改而不是它并不有趣。因此,在听取了一些有用的人的建议后,我决定学习如何使用套接字发送数据。
这就是我现在正在做的事情。C 中的处理数据使用套接字内容发送到 C#。完全有效。但问题就在这里。我需要在发送信息后使用 usleep(10000) ,或者使用 getchar() 并慢慢发送每个值。否则,我在尝试将发送的值转换为双精度时出现错误。
错误读取“System.FormatException:输入字符串的格式不正确。在 System.Number.ParseDouble(字符串值,NumberStyles 选项,NumberFormatInfo numfmt)。
sprintf(line, "%.4f", value[i][j]);
write(sock, line, 128);
usleep(10000);
C# 代码取自此处的示例:http: //www.codeproject.com/Articles/463947/Working-with-Sockets-in-Csharp
问题在这里:
content = Encoding.ASCII.GetString(buffer, 0, bytesRead);
chart4.Series["Graph"].Points.Add(Convert.ToDouble(content.ToString()));
那么为什么当我在发送数据后暂停时它会起作用,但如果我不暂停就发送它就不行呢?我发送的太快了吗?
另外,如果我有 4 个不同的图表需要接收恒定的数据流,我应该有 4 个不同的套接字,每个套接字都有不同的端口号,这样我就知道哪个正在接收数据?对不起菜鸟问题。我正在尝试自己学习这些东西。我还在上学,还没有学到任何类似的东西。