通过C ++ / CLI中的串行端口读取字节数据

时间:2011-04-14 19:42:19

标签: c++-cli serial-port readline wchar-t

我正在尝试与其他程序建立接口,所以我必须使用C ++。

我用C ++编程已经好几年了,我已经解决了这个问题大约一个星期,所以我慢慢开始看看一切是如何工作的。

我想读取来自串口设备的字节数据。

我已经验证我可以使用readline命令通过串口获取文本:

例如:

String^ message = _serialPort->Readline();

我是如何在MSDN的一个示例中读取数据的,我已经成功地工作了。

但是我已经尝试过多次修改它并且我没有运气想出一些将数据读取为字节的东西。 (我已经将字节数据转换为字符串,所以我实际上可以看到字节数,例如数字15等于0f,以字节为单位。)

将代码修改为

wchar_t message = _serialPort->Readline();

给了我

error c2440: 'initializing' : cannot convert from System::String ^' to 'wchar_t'.

我不熟悉Readline。它只适用于弦乐吗?我已经验证它可以使用字符串,如果我使用发送字符串的串行设备,则第一组代码可以正常工作。

有人可以解释一下我用什么方法来读取字节数据吗?感谢。

2 个答案:

答案 0 :(得分:1)

更新

纯C ++ Win32 API版本:

请参阅以下参考资料

您是否有任何特定原因要在C ++ / CLI代码中执行此操作?

我以为你甚至可能都没有意识到这一点(否则,请标记你的问题)。

String ^,Readline等是CLR函数(即.NET,思考:“你可以在C#中更容易地做到这一点。)所以,再次,

  • 如果需要使用C ++,为什么不查看本机Win32 API
  • 否则,你为什么要打扰C ++

如果您真的想要C ++ / CLI,我建议在处理串行IO时不要混合使用本机/托管代码。您可以获取UnmanagedMemoryStream来封送管理土地中的数据。

$ 0.02

答案 1 :(得分:1)

如果您确实想使用C ++而不是C ++ / CLI,我建议您使用boostasio。它已经建立,相对容易理解,并且具有一组特定功能,仅适用于serial ports