我在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";
上显示错误
请帮助我。确实需要一些帮助。谢谢。
答案 0 :(得分:0)
在C ++中,文字字符串是 恒定 个字符数组。因此,您需要const char*
来指向它们的指针。
如果必须将非常量指针传递给函数,请使用 arrays :
char port[] = "\\\\.\\COM7";
一种可能更好的解决方案是修改SerialPort
构造函数以接受const char*
作为其参数。甚至最好开始使用std::string
作为字符串。