如何在C+中传递打开串行端口的引用+;? 我需要把一个开放串口的引用传递给C++中的函数。现在我正在打开和关闭函数内的串行端口,这当然是一种糟糕且低效的方法: int main() { myFunc(); }
myFunc在单独的库中定义:如何在C+中传递打开串行端口的引用+;? 我需要把一个开放串口的引用传递给C++中的函数。现在我正在打开和关闭函数内的串行端口,这当然是一种糟糕且低效的方法: int main() { myFunc(); },c++,serial-port,C++,Serial Port,myFunc在单独的库中定义: int myFunc(void) { Serial* SP = new Serial("\\\\.\\COM6"); if (!SP->IsConnected()) { cout << "Arduino is not connected" << endl; return -1; } // do something SP->~Serial();
int myFunc(void)
{
Serial* SP = new Serial("\\\\.\\COM6");
if (!SP->IsConnected()) {
cout << "Arduino is not connected" << endl;
return -1;
}
// do something
SP->~Serial();
}
int-myFunc(无效)
{
串行*SP=新串行(“\\.\\COM6”);
如果(!SP->IsConnected()){
无法断开连接(){
cout您的代码有几个问题:
- 您没有向myFunc传递任何参数
- 您显式调用析构函数,但不释放内存
- 您无需在堆上创建对象
下面我尝试修复代码中的一些问题:
int myFunc(Serial& SP)
{
// do something
}
int main()
{
Serial SP("\\\\.\\COM6");
if (!SP.IsConnected()) {
cout << "Device is not connected" << endl;
return -1;
}
myFunc(SP);
}
int-myFunc(串行和SP)
{
//做点什么
}
int main()
{
串行SP(“\\.\\COM6”);
如果(!SP.IsConnected()){
cout这是我更新的完整代码,现在可以使用了。我还需要在.h文件中包含“SerialClass.h”。非常感谢所有帮助过我的人
#include "mylib.h"
#include "SerialClass.h"
int main()
{
Serial SP("\\\\.\\COM6");
if (!SP.IsConnected()) {
cout << "Device is not connected" << endl;
return -1;
}
myFunc(SP);
return 1;
}
在mylib.h中
#pragma once
#ifndef _MYLIB_H_
#define _MYLIB_H_
#include "SerialClass.h"
int myFunc(Serial& SP);
#endif
首先:指针与引用不同!关于您的问题:您只需将其传递给函数:myFunc(SP)
调用时,就是这样。抱歉,我只是输入错误,忘记传递参数,但我的原始代码中有参数,这不是问题所在。那么,我们怎么知道呢?在单击[帖子]之前,请小心并仔细阅读您的问题按钮。请同时告诉我们,当您这样做时,什么东西不起作用。否则,您的问题太模糊了。对不起,我忘记传递参数。但是对于您的代码,它仍然不起作用,我得到了编译器错误“'Serial':undeclared identifier”,指向我的mylib.h。这是我的代码nowint main(){Serial SP(\\\\\.\\COM6”);如果(!SP.IsConnected()){cout@evi:您需要在向前声明myFunc
之前包含库头文件。不要害怕将#包含行放入您自己的头文件中。
#include "SerialClass.h"
int myFunc(Serial& SP)
{
// do something
SP.WriteData(6, 1);
return 1;
}
#pragma once
#ifndef _MYLIB_H_
#define _MYLIB_H_
#include "SerialClass.h"
int myFunc(Serial& SP);
#endif