用过qt+msvc2017+snap7的大佬进来,我连接200smart不成功,返回值为12001

今天尝试用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";
    }
}