通过c++串口与Arduino对话

Talking to Arduino via C++ Serial

本文关键字:Arduino 对话 串口 c++ 通过      更新时间:2023-10-16

我试图创建一个程序,用户输入一个字符串,可以编码为消息并发送(通过USB)到我的Arduino板,它接收消息并显示在LCD屏幕上。我已经得到了Arduino方面的一切,但工作:我可以通过Arduino IDE中的串行监视器发送字符串(完成标记开始和结束的标志值)。

我现在的问题是创建程序来驱动它。我从来没有尝试过通过c++连接到串行连接。今天下午我一直在看一些不同的实现,但我很难在它们之间进行排序,并找到,至少对我来说,最容易使用的。

我觉得我的需求是相当适度的,因为我基本上是创建一个控制台应用程序与一个循环驱动的菜单系统,将询问用户他们想要的下一个字符串是什么,然后编码成一个新的字符串,并发送它。

我看过一些不同的帖子,涉及使用CLR c++中的SerialPort类/库,但我没有CLR c++的经验,它确实看起来有些不同。对于具有不错的本地c++知识的人来说(我刚刚完成了关于数据结构和面向对象的第二个c++课程,这就是这个项目的实际目的),快速迁移到CLR c++是否特别困难,或者是否有更好的替代方案?

我能找到的最好的是在这个页面上:http://arduino.cc/playground/Interfacing/CPPWindows,然而,当我试图在Visual Studio中将头文件和CPP文件添加到我的本地项目时,我在compile: error C2664: 'CreateFileW' : cannot convert parameter 1 from 'char *' to 'LPCWSTR'上得到了一个错误。有人知道我是否可以在那种类型的项目中使用它吗?

谢谢你的帮助!

我只是不知道该从哪里着手这个项目。

我认为CLR是不必要的。您提供的样例类应该足够了,您指出的问题可以使用强制类型转换来解决,例如

this->hSerial = CreateFileA( static_cast<LPCSTR>(portName),
            GENERIC_READ | GENERIC_WRITE,
            0,
            NULL,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL,
            NULL);

有两个修改:将宏CreateFile更改为CreateFileA函数,并将第一个参数static_cast。