2016-05-05 154 views
0

我试图使这个project。当我尝试编译此代码时:编译时出现Arduino + MySql + MySqlIO错误

#include <mysql.h> 

char *host, *user, *pass, *db; 
int isconnected = 0; 

void setup() 
{ 
    Serial.begin(9600); 
    host = "localhost"; 
    user = "root"; 
    pass = ""; 
    db = "arduino"; 
    isconnected = mysql_connect(host,user,pass,db); 
    if(isconnected){ 
     Serial.print("Connected to "); 
       Serial.println(host); 
    } 
    else{ 
     Serial.println("Connection failed."); 
    } 
    mysql_close(); 
} 

void loop(){} 

也许问题出现在库或Arduino IDE中。我得到这些错误和警告:

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino: In function 'void setup()':

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino:30:7: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

host = "localhost";

^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino:31:7: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

user = "root";

^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino:32:7: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

pass = "";

^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\examples\ConnectToMysql\ConnectToMysql.ino:33:5: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

db = "arduino";

^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\mysql.cpp: In function 'String mysql_result_query(String, String)':

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\mysql.cpp:67:10: error: converting to 'String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'

return 0;

^

C:\Users\Mateusz\Documents\Arduino\libraries\mysql\mysql.cpp:71:10: error: converting to 'String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'

return 0;

^

exit status 1

编辑: 有图书馆mysql.cpp。

#include "mysql.h" 

int mysql_connect(char *host, char *user, char *pass, char *db){ 
    Serial.print("host="); 
     Serial.println(host); 
    Serial.print("user="); 
     Serial.println(user); 
    Serial.print("pass="); 
     Serial.println(pass); 
    Serial.print("db="); 
     Serial.println(db); 
     Serial.println("mysql_connect()"); 
    int x = Serial.read(); 
     if(x == '-') 
     return 0; 
     while(x <= 0){ 
     x = Serial.read(); 
     if(x == '-') 
      return 0; 
     } 
    return x-48; 
} 

int is_mysql(){ 
    Serial.print("is_mysql()"); 
    int x = Serial.read(); 
     if(x == '-') 
     return 0; 
     while(x <= 0){ 
     x = Serial.read(); 
     if(x == '-') 
      return 0; 
     } 
    return x-48; 
} 

void mysql_close(){ 
    Serial.println("mysql_close()"); 
} 
int mysql_query(char *query){ 
    Serial.print("query="); 
     Serial.println(query); 
    int x = Serial.read(); 
     if(x == '-' || x == '0') 
     return 0; 
     while(x <= 0){ 
     x = Serial.read(); 
     if(x == '-' || x == '0') 
      return 0; 
     } 
    return x-12; 
} 

String mysql_result_query(String query, String field){ 
    String res = ""; 
    String q = "query=" + query + "&field=" + field; 
    Serial.println(q); 
    res = Serial.readString(); 
    if(res == "-") 
    return 0; 
    while(res.length() <= 0){ 
    res = Serial.readString(); 
    if(res == "-") 
    return 0; 
    } 
    return res; 
} 

而且有mysql.h中:

#ifndef mysql_h 
#define mysql_h 

#include "Arduino.h" 

int mysql_connect(char *, char *, char *, char *); 
void mysql_close(); 
int is_mysql(); 
int mysql_query(char *); 
String mysql_result_query(String, String); 


#endif 

我不知道如何解决这个问题。我无法找到任何解决方案。对不起,我的英文:)

回答

0

你需要初始化你的变量。 试试这个:

#include <mysql.h> 

char *host = "localhost", *user="root", *pass="", *db="arduino"; 
int isconnected = 0; 

void setup() 
{ 
    Serial.begin(9600); 
    isconnected = mysql_connect(host,user,pass,db); 
    if(isconnected){ 
     Serial.print("Connected to "); 
       Serial.println(host); 
    } 
    else{ 
     Serial.println("Connection failed."); 
    } 
    mysql_close(); 
} 

void loop(){} 

的误差修改是从您的mysql_result_query正在添加的功能。您将返回0作为返回String的函数。

试试这个。

String mysql_result_query(String query, String field){ 
    String res = ""; 
    String q = "query=" + query + "&field=" + field; 
    Serial.println(q); 
    res = Serial.readString(); 
    if(res == "-") 
    return ""; 
    while(res.length() <= 0){ 
    res = Serial.readString(); 
    if(res == "-") 
    return ""; 
    } 
    return res; 
} 

这里我返回一个空字符串。您可以稍后使用length()方法进行检查。

+0

没有工作,仍然是相同的错误 – Matfik69

+0

错误来自你刚才添加的功能。看我的编辑。 – Ouss4