/*---------------------------------------------------------------------------*/ static void broadcast_recv(struct broadcast_conn *c, const rimeaddr_t *from) { leds_toggle(LEDS_RF_RX); //printf("Received %u bytes: '0x%04x'\n", packetbuf_datalen(), // *(uint16_t *)packetbuf_dataptr()); if (rwt == 0) { temperature_r=*(uint16_t *)packetbuf_dataptr(); tc_r=sht11_TemperatureC(temperature_r); printf("temperature_received:%u.%u\n",(int)tc_r,((int)(tc_r*10))%10); rwt=1; } else { humidity_r=*(uint16_t *)packetbuf_dataptr(); hc_r=sht11_Humidity(temperature_r,humidity_r); printf("humidity_received:%u.%u\n",(int)hc_r,((int)(hc_r*10))%10); rwt=0; } }
/*---------------------------------------------------数据采集上传模考---------------------------------------------*/ static void udp_send_data(struct udp_tx *udp_tx_info) { static char pdata_buf[20]; char data_buf[3]; #if sht11 float tc,hc; sht11_init(); unsigned int tempera = sht11_temp(); unsigned int humidity = sht11_humidity(); tc=sht11_TemperatureC(tempera); hc=sht11_Humidity(tempera,humidity); printf("sorce Tc:%d;Hc:%d\n",(int)tc,(int)hc); // tc=25.5; // hc=57.2; printf("Tc:%d;Hc:%d\n",(int)tc,(int)hc); pdata_buf[0]=0x02; sprintf(data_buf,"%d",(int)tc); memcpy(&pdata_buf[1],data_buf,3); pdata_buf[4]=0x03; sprintf(data_buf,"%d",(int)hc); memcpy(&pdata_buf[5],data_buf,3); // sprintf(temp_data_buf,"%d.%d",(int)hc,((int)(hc*10))%10); printf("temp_data:%s\n",pdata_buf); #endif #if sensor int16_t temperature; temperature = sensor_temp_get(TEMP_UNIT_CELCIUS); pdata_buf[0]=0x02; sprintf(data_buf,"%d",temperature); memcpy(&pdata_buf[1],data_buf,3); printf("temp_data:%s\n",pdata_buf); #endif #if light_sensor int16_t illumination; illumination=60; // modbus_init(); // illumination= modbus_get(); printf("illumination_data:%d\n",illumination); data_buf[0]=0x00; data_buf[1]=0xff&(illumination>>8); data_buf[2]=0xff&illumination; pdata_buf[0]=0x04; memcpy(&pdata_buf[1],data_buf,3); printf("temp_data:%s\n",pdata_buf); #endif #if bh1750_sensor int16_t illumination; illumination=60; bh1750_init(); illumination= bh1750_light(); printf("illumination_data:%d\n",illumination); data_buf[0]=0x00; data_buf[1]=0xff&(illumination>>8); data_buf[2]=0xff&illumination; pdata_buf[0]=0x04; memcpy(&pdata_buf[1],data_buf,3); printf("temp_data:%s\n",pdata_buf); #endif uint8_t sum = 0; udp_tx_info->buf[0] = udp_header[0]; udp_tx_info->buf[1] = udp_header[1]; udp_tx_info->buf[2] =version[0]; udp_tx_info->buf[3] = DATA_SEND ; //0x01 udp_tx_info->buf[4]=user.userid[3]; udp_tx_info->buf[5]=user.userid[2]; udp_tx_info->buf[6]=user.userid[1]; udp_tx_info->buf[7]=user.userid[0]; udp_tx_info->buf[8] = K-8; memcpy(&udp_tx_info->buf[9],udp_id,K-8); memcpy(&udp_tx_info->buf[K+1],device_type,4); udp_tx_info->buf[K+5] = 0x00; udp_tx_info->buf[K+6] = 0x14; memcpy(&udp_tx_info->buf[K+7],pdata_buf,20); sum = calac_checksum(udp_tx_info); udp_tx_info->buf[K+27] = sum; udp_tx_info->buf[K+28] = 0x0D; udp_tx_info->buf[K+29] = 0x0A; udp_tx_info->len = K+30; }