如何在C+中传递打开串行端口的引用+;? 我需要把一个开放串口的引用传递给C++中的函数。现在我正在打开和关闭函数内的串行端口,这当然是一种糟糕且低效的方法: int main() { 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();

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(无效)
{
串行*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