【问题标题】:Passing data between a C# application and a C console application in visual studio while debugging调试时在 Visual Studio 中的 C# 应用程序和 C 控制台应用程序之间传递数据
【发布时间】:2018-01-01 02:37:33
【问题描述】:

我正在研究一种嵌入式系统协议,用于从微控制器与计算机进行通信。微控制器代码使用 C 语言,计算机应用程序使用 C#。出于调试目的,我目前在 Visual Studio 项目中拥有微控制器部分,因为它比直接在微控制器上编译和单步执行要快。我希望能够在我的 C# 应用程序和 C 控制台应用程序之间来回传递数据,并且都在它们自己的调试器中运行,这样我就可以逐步完成通信循环的所有步骤。

我已经看到一些看起来应该可以通过从 C 控制台应用程序重定向标准输入和标准输出来实现的参考,但所有示例都是从 C# 应用程序启动进程时的。由于这两个应用程序都需要从它们的 VS 调试会话中启动,因此我不确定如何使此连接正常工作。

我所需要的只是一种在每个方向发送字节数组并在另一个应用程序中接收它的方法。

任何帮助将不胜感激!

谢谢, 约翰维克斯

【问题讨论】:

  • windows中进行进程间通信的方式有很多种。套接字是我的首选方式,其他方法是管道和共享内存。这是关于 IPC 的 windows 文章:msdn.microsoft.com/en-us/library/windows/desktop/…
  • 他们平时是怎么交流的?
  • 如果是串口,就用串口,为你的微控制器代码写一个适配层发送串口。然后,您可以使用虚拟串行端口来连接它们。
  • 如果您不想要虚拟串口,则将您的串口伪装成 tcp 连接。我所做的另一种方法是将我的 C 代码编译到一个库中,然后创建一个托管库。我这样做是为了模拟各种外围设备(如 I2C)并创建可视化并检查代码没有不必要地磨损闪存等
  • 最后一点,如果你在 Visual Studio 中进行单元测试,很多那种测试风格就会消失(我写 SeaTest 是为了对这种事情进行单元测试)github.com/keithn/seatest

标签: c# c console console-application communication


【解决方案1】:

凯恩O.,

感谢您向我介绍 ICP,我并没有真正考虑过做套接字,因为我认为在 Windows 下用 C 语言做一个服务器会很复杂。在阅读了不同类型的 ICP 之后,我看到了这篇文章:

http://www.binarytides.com/winsock-socket-programming-tutorial/

它有非常简单的示例,用于在 C 中创建客户端和服务器。这种方法对我来说应该非常有效,因为它直接模拟了我将在 micro 中使用的一种连接方法(USB 和RS232 是其他类型的连接)。

这样我还可以同时在我的 C# 应用程序中测试我的以太网套接字连接代码,而且我不必像我认为我必须使用其他方法那样伪造它!

希望这对其他人也有帮助!

再次感谢, 约翰维克斯

【讨论】:

    猜你喜欢
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多