0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32+JAVA寵物管理系統(tǒng)的設(shè)計與實現(xiàn)

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-09-09 11:40 ? 次閱讀

【摘要】 本系統(tǒng)主要是由RFID自動識別技術(shù),通過無線射頻方式對寵物的電子標(biāo)簽進(jìn)行讀取,獲取寵物的基本信息和在店內(nèi)的所有消費,然后將數(shù)據(jù)通過網(wǎng)絡(luò)傳輸至服務(wù)器。在應(yīng)用層開發(fā)一個管理系統(tǒng),對寵物信息、店內(nèi)消費等各種行為進(jìn)行管理。同時系統(tǒng)需有登錄注冊功能,寵物信息管理,店內(nèi)消費管理等功能。

一、設(shè)計需求

本系統(tǒng)主要是由RFID自動識別技術(shù),通過無線射頻方式對寵物的電子標(biāo)簽進(jìn)行讀取,獲取寵物的基本信息和在店內(nèi)的所有消費,然后將數(shù)據(jù)通過網(wǎng)絡(luò)傳輸至服務(wù)器。在應(yīng)用層開發(fā)一個管理系統(tǒng),對寵物信息、店內(nèi)消費等各種行為進(jìn)行管理。同時系統(tǒng)需有登錄注冊功能,寵物信息管理,店內(nèi)消費管理等功能。

寵物店管理系統(tǒng)主要分為以下模塊:

1.RFID模塊:由天線射頻電路組成,通過自動識別電子標(biāo)簽,采集數(shù)據(jù),采用RFID封裝技術(shù)將其封裝,并傳輸給服務(wù)器。

2.電子標(biāo)簽?zāi)K:接收外部信號和發(fā)送信號

3.店鋪管理模塊:管理員可以對店鋪商品進(jìn)行增刪改操作,修改、刪除顧客寵物信息以及店內(nèi)消費行為。

4.登錄注冊模塊:新用戶可以進(jìn)行注冊和登錄5.用戶管理模塊:對注冊用戶進(jìn)行管理

二、設(shè)計需求總結(jié)

整個系統(tǒng)的設(shè)計:

(1). 寵物店每來一個新的寵物,就在軟件端進(jìn)行注冊、注冊時填入寵物的名稱,寵物的類型,主人的電話號碼、選擇一張寵物的圖片方便后面展示(圖片可以預(yù)存幾張貓、狗即可)、如果寵物后面在店里有消費也會記錄包含時間,這些數(shù)據(jù)都保存在軟件端的數(shù)據(jù)庫里。

(2). 開卡: 新寵物注冊之后,需要為這個寵物辦理一張電子標(biāo)簽卡,這個卡里存放著這個寵物主人的電話號碼,后面要查詢這個寵物的信息,就讀取整個電子標(biāo)簽里的電話號碼,到數(shù)據(jù)庫里查詢。

(3). 開卡和查詢的數(shù)據(jù)傳輸: 設(shè)備端與軟件端采用 TCP網(wǎng)絡(luò)方式進(jìn)行通信;設(shè)備端當(dāng)做TCP客戶端,軟件端當(dāng)做TCP服務(wù)器;當(dāng)設(shè)備端查詢寵物的電子標(biāo)簽時,設(shè)備端讀取電話號碼之后,會通過約定的數(shù)據(jù)格式通過網(wǎng)絡(luò)傳遞給軟件端。 當(dāng)軟件端開卡注冊時,也會用約定好的數(shù)據(jù)格式傳遞給設(shè)備端,如果設(shè)備端收到數(shù)據(jù),開發(fā)板上的LED會點亮;這時把IC拿到RC522射頻模塊上刷一下即可;如果成功寫入LED燈就會關(guān)閉。

(4). 軟件端的設(shè)計(這個軟件是給店家用的,功能都是針對店家這邊方向開發(fā)):

有注冊界面、登錄界面;

主界面上顯示店內(nèi)有所有注冊過的寵物信息,每個寵物有圖片進(jìn)行顯示、寵物圖片下面就顯示寵物的名稱;

商品界面: 展示一些狗糧、貓糧、藥劑、一些寵物周邊物品。 用于演示消費功能。 可以預(yù)定幾個商品即可。 用戶可以自己動態(tài)添加修改。

管理員界面: 可以對店內(nèi)的商品進(jìn)行添加、設(shè)計價格、修改寵物的信息等。

查詢頁面: 輸入寵物信息可以查詢這個寵物在店里的所有詳細(xì)信息。

設(shè)備硬件部分:

這里的硬件刷卡部分采用的使用STM32開發(fā)的,更加靈活方便,完成對IC卡讀寫通過網(wǎng)絡(luò)與JAVA服務(wù)器通信,也可以換成掃碼槍之類的其他設(shè)備。

\1. RC522刷卡模塊負(fù)責(zé)對卡進(jìn)行讀寫。

\2. ESP8266WIFI初始化工作在STA模式,連接到指定WIFI,與軟件所在的電腦處于同一個局域網(wǎng),方便連接軟件端的服務(wù)器進(jìn)行數(shù)據(jù)通信,每次設(shè)備開機(jī)將會自動連接到程序里設(shè)置好WIFI熱點和服務(wù)器。

\3. 設(shè)備端上有一個LED燈,用來顯示刷卡的狀態(tài)—成功與否。

三、硬件設(shè)備效果圖與部分核心代碼

imgimgimg
#include "esp8266.h"
u8 ESP8266_IP_ADDR[16]; //255.255.255.255
u8 ESP8266_MAC_ADDR[18]; //硬件地址
/*
函數(shù)功能: ESP8266命令發(fā)送函數(shù)
函數(shù)返回值:0表示成功  1表示失敗
*/
u8 ESP8266_SendCmd(char *cmd)
{
    u8 i,j;
    for(i=0;i<10;i++) //檢測的次數(shù)--發(fā)送指令的次數(shù)
    {
        USARTx_StringSend(USART3,cmd);
        for(j=0;j<100;j++) //等待的時間
        {
            delay_ms(50);
            if(USART3_RX_FLAG)
            {
                USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                USART3_RX_FLAG=0;
                USART3_RX_CNT=0;
                if(strstr((char*)USART3_RX_BUFFER,"OK"))
                {
                    return 0;
                }
            }
        }
    }
    return 1;
}

/*
函數(shù)功能: ESP8266硬件初始化檢測函數(shù)
函數(shù)返回值:0表示成功  1表示失敗
*/
u8 ESP8266_Init(void)
{
    //退出透傳模式
    USARTx_StringSend(USART3,"+++");
    delay_ms(50);
    return ESP8266_SendCmd("AT\r\n");
}

/*
函數(shù)功能: 一鍵配置WIFI為AP+TCP服務(wù)器模式
函數(shù)參數(shù):
char *ssid  創(chuàng)建的熱點名稱
char *pass  創(chuàng)建的熱點密碼 (最少8位)
u16 port    創(chuàng)建的服務(wù)器端口號
函數(shù)返回值: 0表示成功 其他值表示對應(yīng)錯誤值
*/
u8 ESP8266_AP_TCP_Server_Mode(char *ssid,char *pass,u16 port)
{
    char *p;
    u8 i;
    char ESP8266_SendCMD[100]; //組合發(fā)送過程中的命令
    /*1. 測試硬件*/
    if(ESP8266_SendCmd("AT\r\n"))return 1;
    /*2. 關(guān)閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 2;
    /*3. 設(shè)置WIFI模式*/
    if(ESP8266_SendCmd("AT+CWMODE=2\r\n"))return 3;
    /*4. 復(fù)位*/
    ESP8266_SendCmd("AT+RST\r\n");
    delay_ms(1000);
    delay_ms(1000);
    delay_ms(1000);
    /*5. 關(guān)閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 5;
    /*6. 設(shè)置WIFI的AP模式參數(shù)*/
    sprintf(ESP8266_SendCMD,"AT+CWSAP=\"%s\",\"%s\",1,4\r\n",ssid,pass);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 6;
    /*7. 開啟多連接*/
    if(ESP8266_SendCmd("AT+CIPMUX=1\r\n"))return 7;
    /*8. 設(shè)置服務(wù)器端口號*/
    sprintf(ESP8266_SendCMD,"AT+CIPSERVER=1,%d\r\n",port);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 8;
    /*9. 查詢本地IP地址*/
    if(ESP8266_SendCmd("AT+CIFSR\r\n"))return 9;
    //提取IP地址
    p=strstr((char*)USART3_RX_BUFFER,"APIP");
    if(p)
    {
        p+=6;
        for(i=0;*p!='"';i++)
        {
            ESP8266_IP_ADDR[i]=*p++;
        }
        ESP8266_IP_ADDR[i]='\0';
    }
    //提取MAC地址
    p=strstr((char*)USART3_RX_BUFFER,"APMAC");
    if(p)
    {
        p+=7;
        for(i=0;*p!='"';i++)
        {
            ESP8266_MAC_ADDR[i]=*p++;
        }
        ESP8266_MAC_ADDR[i]='\0';
    }
    
    //打印總體信息
    USART1_Printf("當(dāng)前WIFI模式:AP+TCP服務(wù)器\n");
    USART1_Printf("當(dāng)前WIFI熱點名稱:%s\n",ssid);
    USART1_Printf("當(dāng)前WIFI熱點密碼:%s\n",pass);
    USART1_Printf("當(dāng)前TCP服務(wù)器端口號:%d\n",port);
    USART1_Printf("當(dāng)前TCP服務(wù)器IP地址:%s\n",ESP8266_IP_ADDR);
    USART1_Printf("當(dāng)前TCP服務(wù)器MAC地址:%s\n",ESP8266_MAC_ADDR);
    return 0;
}

/*
函數(shù)功能: TCP服務(wù)器模式下的發(fā)送函數(shù)
發(fā)送指令: 
*/
u8 ESP8266_ServerSendData(u8 id,u8 *data,u16 len)
{
    u8 i,j,n;
    char ESP8266_SendCMD[100]; //組合發(fā)送過程中的命令
    for(i=0;i<10;i++)
    {
        sprintf(ESP8266_SendCMD,"AT+CIPSEND=%d,%d\r\n",id,len);
        USARTx_StringSend(USART3,ESP8266_SendCMD);
        for(j=0;j<10;j++)
        {
            delay_ms(50);
            if(USART3_RX_FLAG)
            {
                USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                USART3_RX_FLAG=0;
                USART3_RX_CNT=0;
                if(strstr((char*)USART3_RX_BUFFER,">"))
                {
                    //繼續(xù)發(fā)送數(shù)據(jù)
                    USARTx_DataSend(USART3,data,len);
                    //等待數(shù)據(jù)發(fā)送成功
                    for(n=0;n<200;n++)
                    {
                        delay_ms(50);
                        if(USART3_RX_FLAG)
                        {
                            USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                            USART3_RX_FLAG=0;
                            USART3_RX_CNT=0;
                            if(strstr((char*)USART3_RX_BUFFER,"SEND OK"))
                            {
                                return 0;
                            }
                         }            
                    }   
                }
            }
        }
    }
    return 1;
}

/*
函數(shù)功能: 配置WIFI為STA模式+TCP客戶端模式
函數(shù)參數(shù):
char *ssid  創(chuàng)建的熱點名稱
char *pass  創(chuàng)建的熱點密碼 (最少8位)
char *p     將要連接的服務(wù)器IP地址
u16 port    將要連接的服務(wù)器端口號
u8 flag     1表示開啟透傳模式 0表示關(guān)閉透傳模式
函數(shù)返回值:0表示成功  其他值表示對應(yīng)的錯誤
*/
u8 ESP8266_STA_TCP_Client_Mode(char *ssid,char *pass,char *ip,u16 port,u8 flag)
{
    char ESP8266_SendCMD[100]; //組合發(fā)送過程中的命令
    //退出透傳模式
    //USARTx_StringSend(USART3,"+++");
    //delay_ms(50);
    /*1. 測試硬件*/
    if(ESP8266_SendCmd("AT\r\n"))return 1;
    /*2. 關(guān)閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 2;
    /*3. 設(shè)置WIFI模式*/
    if(ESP8266_SendCmd("AT+CWMODE=1\r\n"))return 3;
    /*4. 復(fù)位*/
    ESP8266_SendCmd("AT+RST\r\n");
    delay_ms(1000);
    delay_ms(1000);
    delay_ms(1000);
    /*5. 關(guān)閉回顯*/
    if(ESP8266_SendCmd("ATE0\r\n"))return 5;
    /*6. 配置將要連接的WIFI熱點信息*/
    sprintf(ESP8266_SendCMD,"AT+CWJAP=\"%s\",\"%s\"\r\n",ssid,pass);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 6;
    /*7. 設(shè)置單連接*/
    if(ESP8266_SendCmd("AT+CIPMUX=0\r\n"))return 7;
    /*8. 配置要連接的TCP服務(wù)器信息*/
    sprintf(ESP8266_SendCMD,"AT+CIPSTART=\"TCP\",\"%s\",%d\r\n",ip,port);
    if(ESP8266_SendCmd(ESP8266_SendCMD))return 8;
    /*9. 開啟透傳模式*/
    if(flag)
    {
       if(ESP8266_SendCmd("AT+CIPMODE=1\r\n"))return 9; //開啟
       if(ESP8266_SendCmd("AT+CIPSEND\r\n"))return 10;  //開始透傳
       if(!(strstr((char*)USART3_RX_BUFFER,">")))
       {
            return 11;
       }
        //如果想要退出發(fā)送:  "+++"
    }
    
     //打印總體信息
    USART1_Printf("當(dāng)前WIFI模式:STA+TCP客戶端\n");
    USART1_Printf("當(dāng)前連接的WIFI熱點名稱:%s\n",ssid);
    USART1_Printf("當(dāng)前連接的WIFI熱點密碼:%s\n",pass);
    USART1_Printf("當(dāng)前連接的TCP服務(wù)器端口號:%d\n",port);
    USART1_Printf("當(dāng)前連接的TCP服務(wù)器IP地址:%s\n",ip);
    return 0;
}
/*
函數(shù)功能: TCP客戶端模式下的發(fā)送函數(shù)
發(fā)送指令: 
*/
u8 ESP8266_ClientSendData(u8 *data,u16 len)
{
    u8 i,j,n;
    char ESP8266_SendCMD[100]; //組合發(fā)送過程中的命令
    for(i=0;i<10;i++)
    {
        sprintf(ESP8266_SendCMD,"AT+CIPSEND=%d\r\n",len);
        USARTx_StringSend(USART3,ESP8266_SendCMD);
        for(j=0;j<10;j++)
        {
            delay_ms(50);
            if(USART3_RX_FLAG)
            {
                USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                USART3_RX_FLAG=0;
                USART3_RX_CNT=0;
                if(strstr((char*)USART3_RX_BUFFER,">"))
                {
                    //繼續(xù)發(fā)送數(shù)據(jù)
                    USARTx_DataSend(USART3,data,len);
                    //等待數(shù)據(jù)發(fā)送成功
                    for(n=0;n<200;n++)
                    {
                        delay_ms(50);
                        if(USART3_RX_FLAG)
                        {
                            USART3_RX_BUFFER[USART3_RX_CNT]='\0';
                            USART3_RX_FLAG=0;
                            USART3_RX_CNT=0;
                            if(strstr((char*)USART3_RX_BUFFER,"SEND OK"))
                            {
                                return 0;
                            }
                         }            
                    }   
                }
            }
        }
    }
    return 1;
}

四、JAVA端效果圖與部分代碼示例

如果需要資料包可以去這里下載: https://download.csdn.net/download/xiaolong1126626497/20687600

imgimgimgimgimgimgimgimgimgimgimgimgimgimgimgimgimg
package com.controller;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.common.bean.MySessionContext;
import com.common.bean.ResultData;
import com.entity.User;
import com.mapper.UserMapper;

@RestController()
@RequestMapping("/user")
public class UserController {
	@Autowired
	private UserMapper um;
	
	@PostMapping("changepswd.action")
	ResultData changePswd(String token,@RequestBody Map map) {
		 HttpSession ss = MySessionContext.getSession(  token );
		 if( ss == null ) {
			 return ResultData.fail("請先登錄!");
		 }
		 User uu = (User) ss.getAttribute("login_user");
		 if( uu == null )  return ResultData.fail("請先登錄!");
		 String password = map.get("password");
		 String newpassword = map.get("password2");
		 int num = um.updatePassword(uu.getId(), password, newpassword);
		 if( num > 0) return ResultData.success();
		  return ResultData.fail("原始密碼錯誤");
	}
	@PostMapping("adduser.action")
	ResultData addUser(String token,@RequestBody User user) {
		 HttpSession ss = MySessionContext.getSession(  token );
		 if( ss == null ) {
			 return ResultData.fail("請先登錄!");
		 }
		 
		 User uu = (User) ss.getAttribute("login_user");
		 System.out.println( uu );
		 if( uu == null )  return ResultData.fail("請先登錄!");
		 
		 if( !("admin".equalsIgnoreCase(uu.getRole()) ||
				    "root".equals( uu.getRole() )    )  )   {
			 return ResultData.fail("請用管理員賬號登錄再添加");
		 }
		 um.addUser(user);
		 return ResultData.success();
	}
	
	@PostMapping("delete.action")
	ResultData deleteUser(String token,@RequestBody User user) {
		 System.out.println( user);
		 HttpSession ss = MySessionContext.getSession(  token );
		 if( ss == null ) {
			 return ResultData.fail("請先登錄!");
		 }
		 
		 User uu = (User) ss.getAttribute("login_user");
		 if( uu == null )  return ResultData.fail("請先登錄!");
		 if("admin".equalsIgnoreCase(user.getRole()) || "root".equals( user.getRole() ))  return ResultData.fail("無法刪除管理員用戶!");
		 
		 if( !("admin".equalsIgnoreCase(uu.getRole()) ||
				    "root".equals( uu.getRole() )    )  )   {
			 return ResultData.fail("請用管理員賬號登錄再刪除");
		 }
		 um.deleteUser(user);
		return ResultData.success();
	}
	@PostMapping("getall.action")
	ResultData getAll(String token) {
		 HttpSession ss = MySessionContext.getSession(  token );
		 if( ss == null ) {
			 return ResultData.fail("請先登錄!");
		 }
		List list = um.getAll();
		for(User u:list) {
			u.setPassword(null);
		}
		return ResultData.success().setData( list );
	}
	@PostMapping("logout.action")
	ResultData getAllUser(String token) {
		 HttpSession ss = MySessionContext.getSession(  token );
		 if( ss != null ) {
			 ss.invalidate();
		 }
		return  ResultData.success();
	}
	
	@PostMapping("login.action")
	ResultData login(@RequestBody User user,HttpSession ss) {
		User rs = um.Login( user );
		if(rs != null ) {
			rs.setPassword( null );
			ss.setAttribute("login_user", rs );
			MySessionContext.AddSession( ss );
			return  ResultData.success().setData( rs ).setToken(ss.getId() );
		}else {
			return ResultData.fail("用戶名或密碼錯誤!");
		}
	}
}
,string>
package com.common.wx;

import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;

import com.common.bean.WebSocketProductHolder;

public class WebSocketServerService extends TextWebSocketHandler{
	 
	@Override
	public void afterConnectionEstablished(WebSocketSession session) throws Exception {
		WebSocketProductHolder.setSession( session );
	}

} 
package com.common.bean;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;

import com.alibaba.fastjson.JSONObject;
import com.entity.Product;
import com.mapper.ProductMapper;

@Component
public class WebSocketProductHolder implements ApplicationContextAware{
	private volatile static WebSocketSession oneSession;
	private volatile static Socket client;
	
	public WebSocketProductHolder() {
		initServer();
	}
	public static void setSession(WebSocketSession ss) {
		oneSession = ss;
	}
	 
	private static void initServer()   {
		new Thread() {
			public void run() {
				ServerSocket ss = null;
				try {
					ss = new ServerSocket(9988);
					System.out.println("初始化");
					while(true) {
						client = ss.accept();
						byte [] b = new byte[128];
						try {
							while(true) {
								int num = client.getInputStream().read(b);//數(shù)據(jù)少,一次讀完就阻塞。
								if(num != -1 ) {
									String cmd = new String(b,0,num);
									parseCMD( cmd);
								}
							}
						}catch (Exception e) {
							 System.out.println("連接斷開...");
						}
					}
				}catch (Exception e) {
				}
			}
		}.start();
	}
	public static void register(String cardid)throws IOException {
		if(cardid!=null && cardid.length() >0 && 
				client!=null && client.isConnected()) {
			client.getOutputStream().write(("register:"+cardid+"\r\n").getBytes());
		}
	}
 
	private static void parseCMD(String cmd) {
		 if(cmd.startsWith("query")) {
			try {
				 String cardid = cmd.split(":")[1].trim();
				 if(  oneSession != null ) {
					 oneSession.sendMessage( new TextMessage( cardid ) );
				 } 
			}catch (Exception e) {
				 System.out.println("數(shù)據(jù)錯誤:"+cmd);
			}
			  
		 }
	}
	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		initServer();
	}
}
商品名稱商品價格商品數(shù)量商品分類商品描述商品圖片提交
查詢 當(dāng)前共 {{datalist.length}} 件商品 商品編號商品名稱商品分類商品價格商品數(shù)量商品圖片操作 {{item.name}} {{item.sortname}} {{item.price|priceText}} {{item.num}} 詳情刪除修改返回商品編號 {{detail.id}} 商品名稱 {{detail.name}} 商品價格 {{detail.price|priceText}} 商品數(shù)量 {{detail.num}} 商品分類 {{detail.sortname}} 商品描述 {{detail.detail}} 商品圖片
商品名稱商品價格商品數(shù)量商品分類商品描述商品圖片提交
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5046

    文章

    18817

    瀏覽量

    298563
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

    352492
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104101
收藏 人收藏

    評論

    相關(guān)推薦

    RIFD技術(shù)在寵物管理上的應(yīng)用方案

    ; 系統(tǒng)管理模塊同時也提供數(shù)據(jù)同步和數(shù)據(jù)備份、還原功能。系統(tǒng)備份、還原是用戶通過Web操作輕松實現(xiàn)數(shù)據(jù)的備份和還原,除去了復(fù)雜的數(shù)據(jù)庫操作。數(shù)據(jù)同步用來保證寵物移動
    的頭像 發(fā)表于 12-13 09:33 ?7429次閱讀
    RIFD技術(shù)在<b class='flag-5'>寵物</b><b class='flag-5'>管理</b>上的應(yīng)用方案

    java學(xué)生信息管理系統(tǒng)

    java學(xué)生信息管理系統(tǒng)
    發(fā)表于 10-03 14:47

    機(jī)智云技術(shù)在寵物管理系統(tǒng)中的應(yīng)用

    ,整合市場上單一產(chǎn)品的優(yōu)點,設(shè)計實現(xiàn)基于機(jī)智云技術(shù)的智能寵物管理系統(tǒng)。本系統(tǒng)以Cortex-M4為內(nèi)核的
    發(fā)表于 04-22 19:01

    機(jī)智云技術(shù)在寵物管理系統(tǒng)中的應(yīng)用

    摘要: 為了方便人們更好地管理寵物,設(shè)計基于STM32和機(jī)智云SDK進(jìn)行二次開發(fā)的安卓APP寵物管理系統(tǒng)
    發(fā)表于 03-03 21:33

    怎么實現(xiàn)基于java的土地檔案管理系統(tǒng)設(shè)計?

    怎么實現(xiàn)基于java的土地檔案管理系統(tǒng)設(shè)計?
    發(fā)表于 09-18 06:41

    如何利用Java swing mysql去實現(xiàn)一種電影票訂票管理系統(tǒng)

    Java swing mysql實現(xiàn)的電影票訂票管理系統(tǒng),主要實現(xiàn)的功能有:用戶端:登錄注冊、查看電影信息、選擇影院場次、選座購票、查看自己
    發(fā)表于 01-03 06:23

    基于Web遠(yuǎn)程文件管理系統(tǒng)java實現(xiàn)

    為了實現(xiàn)遠(yuǎn)程文件管理系統(tǒng)的跨操作系統(tǒng)運行,設(shè)計了一套基于 Java Socket 的遠(yuǎn)程文件類應(yīng)用程序接口(API),并在此基礎(chǔ)上
    發(fā)表于 05-31 14:38 ?40次下載

    RFID寵物狗防疫管理系統(tǒng)如何制作

    寵物狗疫苗管理系統(tǒng),從根本上解決寵物丟失、遺棄和監(jiān)管問題,帶著全球唯一識別碼(UID)的寵物電子芯片,將作為
    發(fā)表于 11-15 14:15 ?992次閱讀

    使用Java實現(xiàn)的學(xué)生管理系統(tǒng)詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用Java實現(xiàn)的學(xué)生管理系統(tǒng)詳細(xì)資料說明。
    發(fā)表于 12-04 08:00 ?3次下載
    使用<b class='flag-5'>Java</b><b class='flag-5'>實現(xiàn)</b>的學(xué)生<b class='flag-5'>管理</b><b class='flag-5'>系統(tǒng)</b>詳細(xì)資料說明

    RFID寵物狗防疫管理如何來實現(xiàn)

    rfid寵物狗疫苗管理系統(tǒng),從根本上解決寵物丟失、遺棄和監(jiān)管問題,帶著全球唯一識別碼(UID)的寵物電子芯片,將作為
    發(fā)表于 04-01 09:58 ?732次閱讀

    使用Java實現(xiàn)超市貨物管理系統(tǒng)的資料合集免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用Java實現(xiàn)超市貨物管理系統(tǒng)的資料合集免費下載。
    發(fā)表于 05-29 08:00 ?2次下載
    使用<b class='flag-5'>Java</b><b class='flag-5'>實現(xiàn)</b>超市貨物<b class='flag-5'>管理</b><b class='flag-5'>系統(tǒng)</b>的資料合集免費下載

    基于機(jī)智云技術(shù)的智能寵物管理系統(tǒng)

    摘要:為了方便人們更好地管理寵物,設(shè)計基于STM32和機(jī)智云SDK進(jìn)行二次開發(fā)的安卓APP寵物管理系統(tǒng)
    的頭像 發(fā)表于 03-03 15:40 ?3931次閱讀
    基于機(jī)智云技術(shù)的智能<b class='flag-5'>寵物</b><b class='flag-5'>管理</b><b class='flag-5'>系統(tǒng)</b>

    基于機(jī)智云寵物管理系統(tǒng)總體設(shè)計

    針對目前市場的需求,整合市場上單一產(chǎn)品的優(yōu)點,本文基于機(jī)智云平臺技術(shù)設(shè)計了一款智能寵物管理系統(tǒng)
    的頭像 發(fā)表于 03-31 14:56 ?2237次閱讀

    【IoT畢設(shè)】機(jī)智云物聯(lián)網(wǎng)平臺+STM32單片機(jī)+智能寵物實現(xiàn)

    、溫濕度傳感器和電機(jī)驅(qū)動等模塊,實現(xiàn)了智能喂養(yǎng)、空氣凈化和寵物排泄物清理等功能。系統(tǒng)利用ESP-01SWiFi模塊接入機(jī)智云平臺,將傳感器收集的信息實時傳輸?shù)绞謾C(jī)App
    的頭像 發(fā)表于 08-30 09:25 ?1871次閱讀
    【IoT畢設(shè)】機(jī)智云物聯(lián)網(wǎng)平臺+<b class='flag-5'>STM32</b>單片機(jī)+智能<b class='flag-5'>寵物</b>屋<b class='flag-5'>實現(xiàn)</b>

    物聯(lián)網(wǎng)智能寵物管理系統(tǒng)

    隨著物聯(lián)網(wǎng)技術(shù)發(fā)展,智能寵物管理系統(tǒng)備受關(guān)注。本文提出基于物聯(lián)網(wǎng)技術(shù)的系統(tǒng),智能管理寵物飲食和環(huán)
    的頭像 發(fā)表于 06-01 08:10 ?936次閱讀
    物聯(lián)網(wǎng)智能<b class='flag-5'>寵物</b><b class='flag-5'>管理</b><b class='flag-5'>系統(tǒng)</b>