2016-05-05 4 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(){} 

errosはあなたmysql_result_query関数から来ています。 Stringを返す関数の場合は0を返します。

これを試してください。

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

didntの仕事は、まだ同じエラー – Matfik69

+0

エラーは、今追加した関数から来ていた。私の編集を参照してください。 – Ouss4

関連する問題