国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

節(jié)點(diǎn)數(shù)據(jù)采集和標(biāo)簽信息的遠(yuǎn)程洪泛傳輸

這篇具有很好參考價(jià)值的文章主要介紹了節(jié)點(diǎn)數(shù)據(jù)采集和標(biāo)簽信息的遠(yuǎn)程洪泛傳輸。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

要求:

????????完成節(jié)點(diǎn)數(shù)據(jù)采集和標(biāo)簽信息的遠(yuǎn)程洪泛傳輸,在與 Sink 節(jié)點(diǎn)相連接的 PC 上能看到結(jié)果(標(biāo)簽信息、感知的數(shù)據(jù))。其中,節(jié)點(diǎn)感知數(shù)據(jù)采集包括光照值、溫濕度值,采集節(jié)點(diǎn)每 20s 采集一次溫濕度、每10s 采集一次光照。標(biāo)簽數(shù)據(jù)讀寫控制周期自行決定。

注:下面只貼出關(guān)鍵代碼,完整程序代碼詳見(jiàn)我的資源......

????????讀卡器節(jié)點(diǎn)會(huì)周期性地讀取溫濕度,光照,標(biāo)簽數(shù)據(jù)并通過(guò)洪泛廣播的形式發(fā)給Sink節(jié)點(diǎn),Sink節(jié)點(diǎn)與PC機(jī)相聯(lián),Sink接收到數(shù)據(jù)包后上傳至串口,PC機(jī)上的Python程序?qū)Υ跀?shù)據(jù)進(jìn)行處理并顯示在UI界面上。

運(yùn)行效果截圖(Python語(yǔ)言) :

節(jié)點(diǎn)數(shù)據(jù)采集和標(biāo)簽信息的遠(yuǎn)程洪泛傳輸

節(jié)點(diǎn)數(shù)據(jù)采集和標(biāo)簽信息的遠(yuǎn)程洪泛傳輸

節(jié)點(diǎn)數(shù)據(jù)采集和標(biāo)簽信息的遠(yuǎn)程洪泛傳輸


配置組件代碼:?

includes Adhoc_APP;

configuration Adhoc_APP { }
implementation
{
  components MainC, Adhoc_APPM
           	, new TimerMilliC() as Timer1, new TimerMilliC() as Timer2,new TimerMilliC() as Timer3,new TimerMilliC() as Timer4
          	, LedsC
           	, FloodingC as Route
	   		, BusyWaitMicroC
     		, RFID_ControlC;

  	Adhoc_APPM.RFID_Control -> RFID_ControlC;

  	Adhoc_APPM.Boot -> MainC; // 初始化組件
  	Adhoc_APPM.Leds -> LedsC; // Led燈控制組件
  	Adhoc_APPM.Timer1 -> Timer1; // 定時(shí)器控制組件
  	Adhoc_APPM.Timer2 -> Timer2; // 定時(shí)器控制組件
  	Adhoc_APPM.Timer3 -> Timer3; // 定時(shí)器控制組件
  	Adhoc_APPM.Timer4 -> Timer4; 
  	Adhoc_APPM.BusyWait ->BusyWaitMicroC;

  	Adhoc_APPM.RControl	-> Route;
  	Adhoc_APPM.Rout_Send  -> Route;
  	Adhoc_APPM.Rout_Receive -> Route;

  	// Sensors Components
  	components new SensirionSht11C(), new PhotoSensorC();
  	Adhoc_APPM.Read_Humi -> SensirionSht11C.Humidity;
  	Adhoc_APPM.Read_Temp -> SensirionSht11C.Temperature;
  	Adhoc_APPM.Read_Photo -> PhotoSensorC;

  	// Uart Components
  	components SCSuartDBGC;
  	components ActiveMessageC;
  	Adhoc_APPM.CommControl -> ActiveMessageC;
  	Adhoc_APPM.SCSuartSTD -> SCSuartDBGC;
  	Adhoc_APPM.SCSuartDBG -> SCSuartDBGC;
}

模塊組件代碼:?

module Adhoc_APPM {
	uses {
    	interface Boot;
    	interface Timer<TMilli> as Timer1;
		interface Timer<TMilli> as Timer2;
		interface Timer<TMilli> as Timer3;
		interface Timer<TMilli> as Timer4;
    	interface Leds;
    	interface BusyWait<TMicro, uint16_t>;
		interface RFID_Control;
    	interface StdControl as RControl;
    	interface AMSend as Rout_Send;
    	interface Receive as Rout_Receive;
		interface SplitControl as CommControl;
  	}

  	// Sensor components
  	uses {
		interface Read<uint16_t> as Read_Humi;
		interface Read<uint16_t> as Read_Temp;
		interface Read<uint16_t> as Read_Photo;
  	}

  	// Uart component
  	uses {
		interface StdControl as SCSuartSTD;
		interface SCSuartDBG;
  	}

}
implementation {

  	message_t TXData;

  	 sensor data 
  	uint16_t myTemp=0xFFFF;
  	uint16_t myHumi=0xFFFF;
  	uint16_t myPhoto=0xFFFF;
  	uint16_t Raw_Temp=0xFFFF; // Raw temp info
  	uint8_t FUN = 0x00;
  	uint8_t Data[5] = {0x00,0x00,0x00,0x00,0x00,};
  	
	//   uint8_t OutputUartMsg[64]; // 串口輸出消息buff
  	void calc_SHT_(uint16_t p_humidity ,uint16_t p_temperature);


  	event void Boot.booted() {
	    uint8_t mote_id = (uint8_t) TOS_NODE_ID;
		if (TOS_NODE_ID != Sink_Addr) // 不是sink節(jié)點(diǎn)
		{ 
			call Timer3.startOneShot(1000);
	    	call Timer1.startPeriodic(SHT_Interval);  // 每隔20s讀取一次溫濕度數(shù)據(jù)
			call Timer4.startPeriodic(3000); // 每隔7s讀取一次標(biāo)簽
		} 
		call RControl.start(); 
    	call CommControl.start(); 
  	}

  	event void CommControl.startDone(error_t error) {
    	call SCSuartSTD.start();
    	call RFID_Control.start();
  	}

  	event void CommControl.stopDone(error_t error) {}

  	event void Timer3.fired() {
		call Timer2.startPeriodic(light_Interval); // 每隔10s讀取一次光照數(shù)據(jù)
  	}
  	// get sensor data as photo, temp., humi.
  	// 定時(shí)器溢出讀取光照數(shù)據(jù)
  	event void Timer2.fired() {
    	call Leds.led2Toggle();
    	call Read_Photo.read(); 
  	}
  	// 定時(shí)器溢出讀取溫濕度
  	event void Timer1.fired() {
		call Leds.led2Toggle();
		call Read_Temp.read();
  	}

  	// 一般節(jié)點(diǎn)發(fā)送給Sink節(jié)點(diǎn)采集到的數(shù)據(jù)
  	task void transmit_frame(){
  
	  	DataFrameStruct DFS;
	
	  	call Leds.led1On();
	
	  	DFS.Temp	= myTemp;
	  	DFS.Humi	= myHumi;
	  	DFS.Photo	= myPhoto;
	  	atomic DFS.FUN = FUN;
	  	// memcpy (DFS.ID, ID, sizeof(ID));
		memcpy (DFS.Data, Data, sizeof(Data));
	  	memcpy (call Rout_Send.getPayload(&TXData), &DFS, sizeof(DataFrameStruct));

	  	call Rout_Send.send(Sink_Addr, &TXData, sizeof(DataFrameStruct));
  	}

  	// 一般節(jié)點(diǎn)數(shù)據(jù)發(fā)送完成事件
  	event void Rout_Send.sendDone(message_t* m, error_t err) {
    	if (err == SUCCESS)
	    	call Leds.led1Off();
  	}

  	// sink節(jié)點(diǎn)接收到一般節(jié)點(diǎn)發(fā)送的數(shù)據(jù)事件
	event message_t* Rout_Receive.receive(message_t* msg, void* payload, uint8_t len) {
    	if (TOS_NODE_ID == Sink_Addr) 
    	{
	    	uint8_t UART_Buff[65], *UART_Buff_p;
	    	uint8_t UART_Buff_len = 0, i;
	    	Route_Msg NWKF;
	    	DataFrameStruct DFS;
	    	UartFrameStruct UFS; 

	    	memcpy(&NWKF,  call Rout_Send.getPayload(msg), sizeof(Route_Msg));
	    	memcpy(&DFS, NWKF.AppData, sizeof(DataFrameStruct));
	    	UART_Buff_p = (uint8_t *)&UFS;

	    	{
		    	uint32_t Packet_Seq = (uint32_t) NWKF.Sequence;
		    	int16_t OrigiSrcAddr = NWKF.OrigiSrcAddr;
		    	//call SCSuartDBG.UARTSend(UART_Buff, 6);

		    	memcpy (UART_Buff_p+6, (void *)&OrigiSrcAddr, 2);
		    	memcpy (UART_Buff_p+8, (void *)&TOS_NODE_ID, 2);
		    	memcpy (UART_Buff_p+10, (void *)&NWKF.Dst2_for_multihop, 2);
		  		memcpy (UART_Buff_p+12,(void *)&NWKF.Dst3_for_multihop, 2);
		  		memcpy (UART_Buff_p+14,(void *)&Packet_Seq, 4);
		  		memcpy (UART_Buff_p+18,(void *)&DFS.Temp, 2);
		  		memcpy (UART_Buff_p+20,(void *)&DFS.Humi, 2);
		  		memcpy (UART_Buff_p+22,(void *)&DFS.Photo, 2);
		  		memcpy (UART_Buff_p+24,(void *)&DFS.FUN, 1);
				// memcpy (UART_Buff_p+25,(void *)&DFS.ID, 8);
		 		memcpy (UART_Buff_p+25,(void *)&DFS.Data, 5);
	    	}
	    	UART_Buff_len = 0;
	    	for ( i=6; i<sizeof(UartFrameStruct) ; i++)
	    	{
				UART_Buff[UART_Buff_len++] = UART_Buff_p[i];
	    	}
			// call SCSuartDBG.UARTSend(DFS.Data, sizeof(DFS.Data));
        	// 串口數(shù)據(jù)發(fā)送
	    	call SCSuartDBG.UARTSend(UART_Buff, UART_Buff_len -13);
	
	    	call Leds.led0Toggle();
    	}
    	return msg;
	}

  	// 讀取光照完成事件,發(fā)送數(shù)據(jù)至sink節(jié)點(diǎn)
  	event void Read_Photo.readDone(error_t err, uint16_t val) {
	if (err == SUCCESS)
		{
			myPhoto = val;
			atomic FUN = 1;
		}
		post transmit_frame();
  	}  

  	// 讀取溫度完成事件,準(zhǔn)備讀取濕度
  	event void Read_Temp.readDone(error_t err, uint16_t val) {
		if (err == SUCCESS)
			Raw_Temp = val;
		call Read_Humi.read();
  	} 
  
  	// 讀取濕度完成事件,發(fā)送數(shù)據(jù)至sink節(jié)點(diǎn)
  	event void Read_Humi.readDone(error_t err, uint16_t val) {
		if (err == SUCCESS && Raw_Temp!=0xFFFF)
		{
			calc_SHT_(val, Raw_Temp);
			atomic FUN = 2;
		}
		post transmit_frame();
  	} 

  // 對(duì)溫濕度循環(huán)冗余,得到真實(shí)數(shù)值
  	void calc_SHT_(uint16_t p_humidity ,uint16_t p_temperature)
  	//----------------------------------------------------------------------------------------
  	// calculates temperature [C] and humidity [%RH]
  	// input : humi [Ticks] (12 bit)
  	// temp [Ticks] (14 bit)
  	// output: humi [%RH]
  	// temp [C]
  	{ 
		const float C1=-4.0; // for 12 Bit
		const float C2= 0.0405; // for 12 Bit
		const float C3=-0.0000028; // for 12 Bit
		const float T_1=0.01; // for 14 Bit @ 5V
		const float T_2=0.00008; // for 14 Bit @ 5V
 
		float rh_lin; // rh_lin: Humidity linear
		float rh_true; // rh_true: Temperature compensated humidity
		float t_C; // t_C : Temperature [C]
		float rh=(float)p_humidity; // rh: Humidity [Ticks] 12 Bit
		float t=(float)p_temperature; // t: Temperature [Ticks] 14 Bit
    
		t_C=t*0.01 - 40; //calc. Temperature from ticks to [C]
		rh_lin=C3*rh*rh + C2*rh + C1; //calc. Humidity from ticks to [%RH]
		rh_true=(t_C-25)*(T_1+T_2*rh)+rh_lin; //calc. Temperature compensated humidity [%RH]
		if(rh_true>100)rh_true=100; //cut if the value is outside of
		if(rh_true<0.1)rh_true=0.1; //the physical possible range
		atomic myTemp=(uint16_t)t_C; //return temperature [C]
		atomic myHumi=(uint16_t)rh_true; //return humidity[%RH]
  	}
  	//
  	// 獲取15693ID完成后發(fā)送至Sink節(jié)點(diǎn)
	async event void RFID_Control.GetID_15693_Done (char status, uint8_t *buff, char size){
    	// memcpy(ID, buff, 8);
		// atomic FUN = 3;
		// post transmit_frame();
	 	// call RFID_Control.RData_15693(block);
	}
	// 獲取15693標(biāo)簽數(shù)據(jù)完成后發(fā)送至Sink節(jié)點(diǎn)
	async event void RFID_Control.RData_15693_Done (char status, uint8_t *buff, char size){
      	call SCSuartDBG.UARTSend(buff, 5);
	  	memcpy(Data, buff, 5);
		atomic FUN = 3;
    	post transmit_frame();
  	}
	// 讀取標(biāo)簽數(shù)據(jù)定時(shí)器
  	event void Timer4.fired() {
	  	call RFID_Control.RData_15693 (5); 
  	}

	async event void RFID_Control.GetID_14443A_Done(char status, uint8_t *buff, char size) {}
	async event void RFID_Control.WData_15693_Done(char status){}
}

Python程序代碼:?

Server.py(主程序):

from PySide2.QtCore import QFile    # 導(dǎo)入文件類
from PySide2.QtWidgets import QApplication  # 導(dǎo)入QtWidgets模塊
from PySide2.QtUiTools import QUiLoader  # 加載UI文件
import threading  # 線程模塊
import serial  # 導(dǎo)入串口模塊
from Receive import *  # 導(dǎo)入接收數(shù)據(jù)模塊(用戶)

# 配置串口
portx = "COM3"
bps = 57600
# 超時(shí)設(shè)置,None:永遠(yuǎn)等待操作,0為立即返回請(qǐng)求結(jié)果,其他值為等待超時(shí)時(shí)間(單位為秒)
timex = None
ser = serial.Serial(portx, bps, timeout=timex)  # 開(kāi)啟串口通信


class Software:

    def __init__(self):
        # 從文件中加載UI定義
        qfile_Server = QFile("UI/software.ui")
        qfile_Server.open(QFile.ReadOnly)
        qfile_Server.close()
        # 從 UI 定義中動(dòng)態(tài) 創(chuàng)建一個(gè)相應(yīng)的窗口對(duì)象
        self.ui = QUiLoader().load(qfile_Server)
        # 按鈕綁定事件
        self.ui.openButton.clicked.connect(self.open)
        self.ui.closeButton.clicked.connect(self.close)
        self.ui.ClearButton.clicked.connect(self.clear)

    def open(self):  # 開(kāi)機(jī)
        self.ui.openButton.setEnabled(False)
        self.ui.closeButton.setEnabled(True)
        self.ui.ClearButton.setEnabled(True)

    def close(self):  # 關(guān)機(jī)
        self.ui.openButton.setEnabled(True)
        self.ui.closeButton.setEnabled(False)
        self.ui.ClearButton.setEnabled(False)
        self.ui.Tempture.setText("")
        self.ui.Humi.setText("")
        self.ui.Photo.setText("")
        self.ui.Data.setText("")
        self.ui.Frame.clear()

    def clear(self):  # 清空文本瀏覽框
        self.ui.Frame.clear()


# 實(shí)例化窗口程序
app = QApplication([])
software = Software()
software.ui.show()
# 設(shè)置接受數(shù)據(jù)守護(hù)線程
receivethread = threading.Thread(
    target=lambda: receive(software, ser))
receivethread.setDaemon(True)
receivethread.start()
# 循環(huán)執(zhí)行
app.exec_()

Receive.py(接收模塊)?:

from AttributeStruct import *  # 數(shù)據(jù)結(jié)構(gòu)模塊(用戶)
import struct  # 字節(jié)流解封裝模塊


def receive(software, ser):  # 接收線程
    while(True):
        if software.ui.closeButton.isEnabled():  # 如果已經(jīng)開(kāi)機(jī)
            Frame = ser.read(24)    # 接收24B數(shù)據(jù)
            # 保留接收到的數(shù)據(jù)幀有效字段
            Attributes_set(Frame[0], Frame[2], Frame[8], Frame[12], Frame[14],
                           Frame[16:18], Frame[18], Frame[19], Frame[20:])
            # 處理接收到的數(shù)據(jù)幀數(shù)據(jù)
            Attributes['Photo'] = struct.unpack('H', Attributes['Photo'])[0]
            Attributes['FrameType'] = FrameType_rename(Attributes['FrameType'])
            Attributes['CardData'] = CardData_to_string(Attributes['CardData'])
            # 更新UI界面
            updateUI(software, Attributes)


def updateUI(software, Attributes):  # 更新UI界面
    software.ui.Tempture.setText(str(Attributes['tempture']))   # 更新溫度
    software.ui.Humi.setText(str(Attributes['Humi']))   # 更新濕度
    software.ui.Photo.setText(str(Attributes['Photo']))  # 更新光照
    # 更新文本瀏覽框
    if str(Attributes['CardData']) != 'None':   # 未讀取到標(biāo)簽數(shù)據(jù)
        software.ui.Data.setText('   ' + str(Attributes['CardData']))
    else:   # 讀到標(biāo)簽數(shù)據(jù)
        software.ui.Data.setText('')
    software.ui.Frame.append('OrigiSrcAddr:' + str(Attributes['OrigiSrcAddr']) + ';DestAddr:' + str(
        Attributes['DestAddr']) + ';Seq:' + str(Attributes['Seq']))
    software.ui.Frame.ensureCursorVisible()

    if str(Attributes['FrameType']) == '讀取光照數(shù)據(jù)':
        software.ui.Frame.append(
            'Photo:' + str(Attributes['Photo']) + 'LX; FrameType:' + str(Attributes['FrameType']))
    elif str(Attributes['FrameType']) == '讀取溫濕度數(shù)據(jù)':
        software.ui.Frame.append('Tempture:' + str(Attributes['tempture']) + '℃; Humi:' + str(Attributes['Humi']) + '%rh;'
                                 + 'FrameType:' + str(Attributes['FrameType']))
    elif str(Attributes['FrameType']) == '讀取標(biāo)簽信息':
        software.ui.Frame.append('CardData:' + str(Attributes['CardData'])
                                 + ';FrameType:' + str(Attributes['FrameType']))
    software.ui.Frame.ensureCursorVisible()

AttributesStruct.py(數(shù)據(jù)結(jié)構(gòu)模塊):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-514174.html

import struct  # 字節(jié)流解封裝模塊
# 接收數(shù)據(jù)結(jié)構(gòu)
Attributes = {
    'OrigiSrcAddr': 0x00,   # 源地址(讀卡器地址)
    'DestAddr': 0x00,   # 目的地址(sink地址)
    'Seq': 0x00,    # 數(shù)據(jù)包的序列號(hào)
    'tempture': 0xFF,   # 溫度數(shù)據(jù)
    'Humi': 0xFF,   # 濕度數(shù)據(jù)
    'Photo': b'\xFF\xFF',   # 光照數(shù)據(jù)
    'Error': 0x00,  # 讀取標(biāo)簽是否成功 (0:成功, 2:失?。?    'CardData': b'\xFF\xFF\xFF\xFF',    # 標(biāo)簽信息
    'FrameType': 0x00,  # 數(shù)據(jù)幀類型(1:光照,2:溫濕度,3:標(biāo)簽信息)
}


def Attributes_set(OrigiSrcAddr, DestAddr, Seq, tempture, Humi, Photo, FrameType, Error, CardData):  # 更新數(shù)據(jù)結(jié)構(gòu)
    Attributes['OrigiSrcAddr'] = OrigiSrcAddr
    Attributes['DestAddr'] = DestAddr
    Attributes['Seq'] = Seq
    Attributes['tempture'] = tempture
    Attributes['Humi'] = Humi
    Attributes['Photo'] = Photo
    Attributes['FrameType'] = FrameType
    Attributes['Error'] = Error
    Attributes['CardData'] = CardData
    return Attributes


def FrameType_rename(FrameType):  # 數(shù)據(jù)幀種類
    if FrameType == 1:
        return '讀取光照數(shù)據(jù)'
    elif FrameType == 2:
        return '讀取溫濕度數(shù)據(jù)'
    elif FrameType == 3:
        return '讀取標(biāo)簽信息'


def CardData_to_string(CardData):  # 將標(biāo)簽數(shù)據(jù)轉(zhuǎn)換為字符串(字節(jié)流轉(zhuǎn)化為整數(shù))
    CardData = struct.unpack('4B', CardData)
    if (Attributes['Error'] == 0):  # 如果讀取標(biāo)簽成功
        string = ""
        for i in range(0, len(CardData)):
            if CardData[i] > 9:
                string += str(chr(CardData[i])) + ' '
            else:
                string += str(CardData[i]) + ' '
        return string
    else:   # 讀取標(biāo)簽數(shù)據(jù)失敗
        return 'None'

到了這里,關(guān)于節(jié)點(diǎn)數(shù)據(jù)采集和標(biāo)簽信息的遠(yuǎn)程洪泛傳輸?shù)奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【運(yùn)維知識(shí)大神篇】超詳細(xì)的ELFK日志分析教程4(ES讀寫文檔原理+集群角色+master節(jié)點(diǎn)與數(shù)據(jù)節(jié)點(diǎn)分離+Logstash安裝部署+Logstash采集本地文件+采集Nginx日志)

    【運(yùn)維知識(shí)大神篇】超詳細(xì)的ELFK日志分析教程4(ES讀寫文檔原理+集群角色+master節(jié)點(diǎn)與數(shù)據(jù)節(jié)點(diǎn)分離+Logstash安裝部署+Logstash采集本地文件+采集Nginx日志)

    本篇文章繼續(xù)給大家介紹ELFK日志分析的有關(guān)內(nèi)容,我們的ES和Kibana都介紹的差不多了,所以本篇文章重點(diǎn)介紹Logstash的有關(guān)內(nèi)容,介紹完畢后,我們的ELFK架構(gòu)將初步形成,此外還有ES讀寫文檔的原理,了解原理,更深層次的理解,使用ES,集群角色和master節(jié)點(diǎn)與數(shù)據(jù)節(jié)點(diǎn)分離,

    2024年02月02日
    瀏覽(29)
  • 5G DTU實(shí)現(xiàn)燃?xì)夤艿罃?shù)據(jù)采集遠(yuǎn)程管理

    5G DTU實(shí)現(xiàn)燃?xì)夤艿罃?shù)據(jù)采集遠(yuǎn)程管理

    隨著物聯(lián)網(wǎng)技術(shù)與智慧城市的不斷發(fā)展,燃?xì)夤艿缿敉饨M網(wǎng)的需求逐漸浮現(xiàn)。在戶外組網(wǎng)應(yīng)用中5G DTU(Data Terminal Unit)發(fā)揮著至關(guān)重要的作用。5G DTU可用于數(shù)據(jù)采集、傳輸與遠(yuǎn)程管理,能夠?qū)崿F(xiàn)燃?xì)鈹?shù)據(jù)的單點(diǎn)或多點(diǎn)采集和傳輸,為燃?xì)夤艿老到y(tǒng)的遠(yuǎn)程管理提供了數(shù)據(jù)傳輸和

    2024年02月21日
    瀏覽(23)
  • 物聯(lián)網(wǎng)制糖工業(yè)如何數(shù)據(jù)采集與遠(yuǎn)程監(jiān)控

    物聯(lián)網(wǎng)制糖工業(yè)如何數(shù)據(jù)采集與遠(yuǎn)程監(jiān)控

    智慧糖廠是實(shí)現(xiàn)從原料處理、制糖煮煉、成品包裝、碼垛倉(cāng)儲(chǔ)等全生產(chǎn)流程的自動(dòng)化智能工廠。其中多個(gè)撕解設(shè)備、壓榨設(shè)備、加熱設(shè)備、攪拌設(shè)備、烘干設(shè)備、分離設(shè)備等相互連接、協(xié)同工作,達(dá)到高效生產(chǎn)、流暢生產(chǎn)等目的、因此,對(duì)于制糖設(shè)備的數(shù)據(jù)采集與遠(yuǎn)程監(jiān)控十

    2024年02月20日
    瀏覽(20)
  • 淘寶商品數(shù)據(jù)爬取商品信息采集數(shù)據(jù)分析API接口

    ? ? ?數(shù)據(jù)采集是數(shù)據(jù)可視化分析的第一步,也是最基礎(chǔ)的一步,數(shù)據(jù)采集的數(shù)量和質(zhì)量越高,后面分析的準(zhǔn)確的也就越高,我們來(lái)看一下淘寶網(wǎng)的數(shù)據(jù)該如何爬取。 點(diǎn)此獲取淘寶API測(cè)試key密鑰 淘寶網(wǎng)站是一個(gè)動(dòng)態(tài)加載的網(wǎng)站,我們之前可以采用解析接口或者用Selenium自動(dòng)化

    2024年03月11日
    瀏覽(32)
  • 數(shù)據(jù)采集:selenium 獲取某網(wǎng)站CDN 商家排名信息

    數(shù)據(jù)采集:selenium 獲取某網(wǎng)站CDN 商家排名信息

    工作中遇到,簡(jiǎn)單整理 理解不足小伙伴幫忙指正 對(duì)每個(gè)人而言,真正的職責(zé)只有一個(gè):找到自我。然后在心中堅(jiān)守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是對(duì)大眾理想的懦弱回歸,是隨波逐流,是對(duì)內(nèi)心的恐懼 ——赫爾曼·黑塞《德

    2024年02月11日
    瀏覽(12)
  • 常用的數(shù)據(jù)采集工具有哪些-免費(fèi)獲取數(shù)據(jù)信息的工具有哪些

    常用的數(shù)據(jù)采集工具有哪些-免費(fèi)獲取數(shù)據(jù)信息的工具有哪些

    隨著社會(huì)不停地發(fā)展。人們也是越來(lái)越離不開(kāi)互聯(lián)網(wǎng),常用的數(shù)據(jù)采集工具有哪些?今天小編就給大家盤點(diǎn)一下免費(fèi)好用的數(shù)據(jù)采集工具,只需要點(diǎn)幾下鼠標(biāo)就能輕松獲取數(shù)據(jù),不管是導(dǎo)出excel還是自動(dòng)發(fā)布到網(wǎng)站。詳細(xì)參考圖片一、二、三、四! 企業(yè)人員 通過(guò)爬取動(dòng)態(tài)網(wǎng)頁(yè)

    2024年02月12日
    瀏覽(77)
  • 工業(yè)智能網(wǎng)關(guān):HiWoo Box遠(yuǎn)程采集設(shè)備數(shù)據(jù)

    工業(yè)智能網(wǎng)關(guān):HiWoo Box遠(yuǎn)程采集設(shè)備數(shù)據(jù)

    在工業(yè)4.0和智能制造的浪潮下,工業(yè)互聯(lián)網(wǎng)已成為推動(dòng)產(chǎn)業(yè)升級(jí)、提升生產(chǎn)效率的關(guān)鍵。而在這其中,工業(yè)智能網(wǎng)關(guān)扮演著至關(guān)重要的角色。今天,我們就來(lái)深入探討一下工業(yè)智能網(wǎng)關(guān)。 一、什么是工業(yè)智能網(wǎng)關(guān)? 工業(yè)智能網(wǎng)關(guān),顧名思義,是一種專為工業(yè)環(huán)境設(shè)計(jì)的智能

    2024年01月23日
    瀏覽(23)
  • Rust采集天氣預(yù)報(bào)信息并實(shí)時(shí)更新數(shù)據(jù)

    Rust采集天氣預(yù)報(bào)信息并實(shí)時(shí)更新數(shù)據(jù)

    最近天氣溫度時(shí)高時(shí)低,雖說(shuō)這是大自然的力量人無(wú)法抗拒,不能改變那么我們就做預(yù)防工作。今天我將用Rust寫一個(gè)爬蟲(chóng)程序?qū)崿F(xiàn)電腦桌面實(shí)時(shí)更新天氣情況,這個(gè)是一個(gè)底層邏輯,需要多方面配合,不僅要有完善的代碼還有爬蟲(chóng)IP試試更新才能保證數(shù)據(jù)最完整最新。 這是一

    2024年01月19日
    瀏覽(22)
  • 【Python爬蟲(chóng)+數(shù)據(jù)分析】采集電商平臺(tái)數(shù)據(jù)信息,并做可視化演示

    【Python爬蟲(chóng)+數(shù)據(jù)分析】采集電商平臺(tái)數(shù)據(jù)信息,并做可視化演示

    隨著電商平臺(tái)的興起,越來(lái)越多的人開(kāi)始在網(wǎng)上購(gòu)物。而對(duì)于電商平臺(tái)來(lái)說(shuō),商品信息、價(jià)格、評(píng)論等數(shù)據(jù)是非常重要的。因此,抓取電商平臺(tái)的商品信息、價(jià)格、評(píng)論等數(shù)據(jù)成為了一項(xiàng)非常有價(jià)值的工作。本文將介紹如何使用Python編寫爬蟲(chóng)程序,抓取電商平臺(tái)的商品信息、

    2024年02月08日
    瀏覽(20)
  • Python實(shí)現(xiàn)Up數(shù)據(jù)信息采集 <內(nèi)含JS逆向解密>

    Python實(shí)現(xiàn)Up數(shù)據(jù)信息采集 <內(nèi)含JS逆向解密>

    前言 嗨嘍~大家好呀,這里是魔王吶 ? ~! 環(huán)境使用: python 3.8 運(yùn)行代碼 pycharm 2021.2 輔助敲代碼 模塊使用: 第三方模塊 需要安裝 import requests 導(dǎo)入數(shù)據(jù)請(qǐng)求模塊 內(nèi)置模塊 你安裝好python環(huán)境就可以了 import datetime 對(duì)日期數(shù)據(jù)進(jìn)行處理的主要模塊 import hashlib 提供了多種安全方便的

    2024年02月15日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包