转移无线射频识别标签编号到 MySQL


Transfer RFID tag no. to mysql

我很难将我的RFID标签号转移到mysql数据库。当我编译给定的代码服务器时,连接起来并打印 rfid no。还说数据发送到服务器,但是当我打开我的PHP文件(也是MySQL(时,没有存储任何数据。我做错了什么!!P.s对不起我的英语不好。

#include <Ethernet.h>
#include <SPI.h>
#include <Client.h>
#include<SoftwareSerial.h>
SoftwareSerial RFID(2,3);
int i;
int rfid;
char newtag[14];// = {2,49,51,48,48,57,69,66,48,51,57,48,52,3};
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte subnet[] = {255,255,255,0};
//IPAddress gateway(192,168,1,1);
//IPAddress DBserver(192, 168, 1, 2);
IPAddress server(192,168,1,7);
//char server[] = "localhost/te";
IPAddress ip(192,168,1,2);
EthernetClient client;
void setup()
{
    Serial.begin(9600);
    RFID.begin(9600);
    delay (1000);
    Serial.print("*********Initializing Ethernet*********n");
    if (Ethernet.begin(mac) == 0)
    {
        Serial.println("Failed to configure Ethernet using DHCP");
        Ethernet.begin(mac, ip);
    }
    //Ethernet.begin(mac, server, gateway);
    delay(1000);
    Serial.println("connecting...");
    Serial.print("IP Address:");
    Serial.println(Ethernet.localIP());
    Serial.print("Subnet Mask:");
    Serial.println(Ethernet.subnetMask());
    Serial.print("Default Gateway IP:");
    Serial.println(Ethernet.gatewayIP());
    Serial.print("DNS Server IP:");
    Serial.println(Ethernet.dnsServerIP());
}
void loop()
{
    // while(1)
    {
        if (client.connect(server, 80))
        {
            Serial.print("Connected to server:");
            Serial.println(Ethernet.dnsServerIP());
            while(1)
            {
                if (RFID.available() > 0)
                {
                    Serial.println("reading rfid tags");
                    delay(100);
                    for (i=0; i < 14; i++)
                    {
                        rfid = RFID.read();
                        newtag[i]=rfid;
                    }
                    RFID.flush();
                    Serial.print("rfid tag no:");
                    Serial.print(newtag);
                    Serial.println("Sending to Server...");
                    client.println("GET 192.168.1.7/te/add_data.php?sensor=2323 HTTP/1.1");
                    client.print(newtag);
                    client.println(" HTTP/1.1");
                    client.println("Host: 192.168.1.7/te/");
                    client.println("User-Agent: Arduino");
                    client.println("Accept: text/html");
                    Serial.println("data sent to server");
                }
            }
        }
        else
        {
            Serial.println("Cannot connect to Server");
        }
    }

我的PHP代码是

<?php
    // Start MySQL Connection   
    include('dbconnect.php'); 
?>
<html>
<head>
    <title> Log</title>    
    <style type="text/css">    
        .table_titles, .table_cells_odd, .table_cells_even {    
                padding-right: 20px;    
                padding-left: 20px;    
                color: #000;    
        }    
        .table_titles {    
            color: #FFF;    
            background-color: #666;    
        }    
        .table_cells_odd {    
            background-color: #CCC;    
        }    
        .table_cells_even {    
            background-color: #FAFAFA;    
        }    
        table {    
            border: 2px solid #333;    
        }    
        body { font-family: "Trebuchet MS", Arial; }    
    </style>    
</head>    
    <body>    
        <h1>Arduino  Log</h1>    
    <table border="0" cellspacing="0" cellpadding="4">    
      <tr>
           <td class="table_titles">ID</td>    
            <td class="table_titles">Date and Time</td>
            <td class="table_titles">RFID tag</td>
      </tr>
<?php    
    // Retrieve all records and display them
    $result = mysql_query("SELECT * FROM FYP ORDER BY id ASC");
    // Used for row color toggle
    $oddrow = true;
    // process every record
    while( $row = mysql_fetch_array($result) )
    {
        if ($oddrow) 
        { 
            $css_class=' class="table_cells_odd"'; 
        }
        else
        { 
            $css_class=' class="table_cells_even"';
        }
        $oddrow = !$oddrow;
        echo '<tr>';
        echo '   <td'.$css_class.'>'.$row["id"].'</td>';
        echo '   <td'.$css_class.'>'.$row["event"].'</td>';
        echo '   <td'.$css_class.'>'.$row["tag"].'</td>';
        echo '</tr>';
    }
?>
    </table>
    </body>
</html>

你在C++程序中逐行实现HTTP。查找适当的 RFC 可能对您的学习有所帮助,即使它们有点难以阅读。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5

鉴于您向我们展示的 GET 请求,您的add_data.php程序需要接受 $_REQUEST['sensor'] 参数。我找不到你在哪里这样做。

在Arduino上,您的HTTP客户端程序需要将这种块发送到运行php程序的Web服务器。 首先,它打开与服务器的连接。您似乎在端口 80 上正确执行此操作。然后它发送类似这样的内容。

GET /te/add_data.php?sensor=2323 HTTP/1.1'r'n
Host: 192.168.1.7'r'n
User-Agent: Arduino'r'n
Accept: text/html'r'n
'r'n

请注意两件事。

  1. 你的有效载荷 - 你被发送到php程序的有用信息 - 完全在GET行中。
  2. 每行都需要以回车符/换行符结尾。并且,在请求块的末尾,需要有一个以额外的回车符/换行符结尾的空行。

你的C++代码 - 你的client.println()代码 - 似乎没有这样做。特别是,newtag的值将错放在请求块中。

另请注意,您发送到 php 程序的唯一数据项是"sensor",并且您正在向其发送硬编码值2323。我无法从您的程序中确切地看出您要做什么。但是你正在做的事情不是很有趣,所以也许这是一个让事情顺利进行的测试。

我希望这有所帮助。当你让它工作时,你将实现一个相当复杂的系统。