通过C ++ Serial与Arduino交谈

时间:2011-11-22 22:15:04

标签: c++ windows serial-port arduino

我正在尝试创建一个程序,用户输入一个字符串,该字符串可以编码为一条消息并通过USB发送到我的Arduino板,后者接收消息并将其显示在LCD屏幕上。我有Arduino方面的东西全部工作:我可以通过Arduino IDE中的串行监视器发送一个字符串(带有标记值来标记开始和结束)。

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

我觉得我的需求相当适中,因为我实际上是在创建一个带有循环驱动菜单系统的控制台应用程序,该系统将询问用户他们想要下一个字符串的内容,然后将其编码为新字符串并发送。

我已经看到一些涉及在CLR C ++中使用SerialPort类/库的不同帖子,但我没有CLR C ++的经验,它看起来确实有些不同。对于具有良好本机C ++知识的人(我只是在数据结构和OOP上完成我的第二个C ++类,这个项目实际上是什么)来快速转移到CLR C ++或者是否有更好的表现似乎特别困难替代那里?

我能找到的最好的东西是在这个页面上:http://arduino.cc/playground/Interfacing/CPPWindows但是,当我尝试在Visual Studio中将标题和CPP文件添加到我的本机项目时,我在编译时遇到错误:{{1} }。有谁知道我是否可以在这种类型的项目中使用它?

感谢您的帮助!我对这个项目的进展感到困惑。

1 个答案:

答案 0 :(得分:1)

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

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

有两个修改:将CreateFile宏改为CreateFileA,static_cast改为第一个param。如果仍有问题,请尝试添加一些更具体的问题。