如何解决通过C ++ / CLI中的串行端口读取字节数据
| 我试图与另一个程序建立接口,所以我必须使用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\'.
我不熟悉3英镑。仅用于字符串吗?我已验证它可以与字符串一起使用,并且如果我使用发送字符串的串行设备,则第一组代码可以使用。
有人可以解释我可以使用哪种方法读取字节数据吗?谢谢。
解决方法
如果您实际上要使用C ++而不是C ++ / CLI,则建议使用boost.asio。它已经建立良好,相对容易理解,并且具有一组专门用于串行端口的功能。
,更新资料
纯C ++ Win32 API版本:
请参阅以下良好参考
CodeProject文章
MSDN
您在C ++ / CLI代码中执行此操作有任何特定原因吗?
我认为您甚至可能都不知道(否则,请标记您的问题)。
String ^,Readline等都是CLR函数(即.NET,请考虑:\“您可以在C#中更轻松地执行此操作)。因此,
如果需要使用C ++,则为什么不查看本机Win32 API
否则,为什么要打扰C ++
如果您真的想要C ++ / CLI,我建议在处理串行IO时不要混合使用本机/托管代码。您可以获取UnmanagedMemoryStream来封送进/出受管理土地的数据。
$ 0.02
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。