C ++设置串行com端口时出现问题

时间:2019-01-31 07:41:05

标签: c++ visual-c++ visual-studio-2017

我在C ++程序上设置串行COM端口时遇到问题。 下面是我的代码。

conn.commit()

#include<iostream> using namespace std; #include<string> #include<stdlib.h> #include"SerialPort.h" char output[MAX_DATA_LENGTH]; char incomingData[MAX_DATA_LENGTH]; char *port = "\\\\.\\COM7"; int main(){ SerialPort arduino(port); if(arduino.isConnected()){ cout<<"Connection made"<<endl<<endl; } else{ cout<<"Error in port name"<<endl<<endl; } while(arduino.isConnected()){ cout<<"Enter your command: "<<endl; string data; cin>>data; char *charArray = new char[data.size() + 1]; copy(data.begin(), data.end(), charArray); charArray[data.size()] = '\n'; arduino.writeSerialPort(charArray, MAX_DATA_LENGTH); arduino.readSerialPort(output, MAX_DATA_LENGTH); cout<<">> "<<output<<endl; delete [] charArray; } return 0; } 上有错误

显示错误消息"\\\\.\\COM7"

当我将其更改为a value of type "const char *" cannot be used to initialize an entity of type "char *"

它在const char *port = "\\\\.\\COM7";上显示错误

请帮助我。确实需要一些帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

在C ++中,文字字符串是 恒定 个字符数组。因此,您需要const char*来指向它们的指针。

如果必须将非常量指针传递给函数,请使用 arrays

char port[] = "\\\\.\\COM7";

一种可能更好的解决方案是修改SerialPort构造函数以接受const char*作为其参数。甚至最好开始使用std::string作为字符串。