今天尝试用qt+msvc2017+snap7来做上位机界面通信200smart,可是代码能编译过去并且可以运行,就是用snap7中client的connectto函数连接plc时,连接不成功,我打印了返回值,为12001,这是怎么回事,有大佬了解吗?
没人回答。
我也刚好解决了,就自问自答下吧。以免后面的人犯错。
将const char *ip =ui->ip->text().toStdString().c_str();这一行代码修改了
改为
QString ipQString= ui->IP->text();
std::string ipString = ipQString.toStdString();
const char* ip = ipString.c_str();
就可以用了。
但是,讲道理其实我觉得这两个应该是一样的,但是用qt+msvc2017编译似乎有区别,具体原因不知道,有知道的大佬的可以告知下。
void snap7Window::on_connect_clicked()
{
const char *ip =ui->ip->text().toStdString().c_str();
int rack = ui->rack->text().toInt();
int slot = ui->slot->text().toInt();
int reg = client->ConnectTo(ip,rack,slot);
if(reg == 0){
qDebug()<<"success";
byte buffer[256];
client->DBRead(1,100,1,&buffer);
qDebug()<<"success";
qDebug()<<buffer[0];
}else{
qDebug()<<reg;
qDebug()<<"failed";
}
}