• [技术干货] RFID温度标签:电力行业的智能温度守护者
    一、应用背景       电力行业的高压开关柜、环网柜、电缆接头、变压器等关键设备在长期高负荷运行中,易因设备老化、接触不良或环境因素导致温度异常,可能引发熔断、燃烧甚至爆炸等事故。传统的人工巡检和有线传感器监测存在效率低、成本高、难以实时预警等问题。而无源RFID温度标签凭借其无电池设计、抗金属干扰、耐高温等特性,成为电力设备温度监测的理想解决方案。   二、技术原理与核心组件无源RFID温度标签无源无线设计:无需电池供电,通过RFID读写器发射的电磁波获取能量并回传温度数据,避免高压环境下的电气安全隐患。耐高温性能:采用陶瓷基材和抗金属天线设计,工作温度范围可达-40℃至+130℃,部分标签可耐受短时220℃高温(如高压触头场景)。高精度测温:温度传感精度±1%,分辨率0.1℃,支持实时数据采集。读写器与天线读写器采用超高频(UHF)频段(840-960MHz),支持多通道接入,读取距离可达4米以上,满足变电站、电缆隧道等复杂场景需求。高增益圆极化天线可减少金属环境下的信号干扰,确保数据稳定传输。中央管理系统集成数据存储、分析和预警功能,支持Modbus RTU协议与现有电力监控系统对接。通过机器学习算法分析历史温度数据,识别异常模式并提前预警。   三、电力行业应用场景高压开关柜高压开关柜内触头、母线连接点易因电流热效应、接触电阻升温。安装RFID温度标签,实时采集数据传至监控系统,超阈值即报警。某变电站引入该系统后,成功避免多起触头过热故障。环网柜环网柜封闭且运行中无法打开,传统测温仪器难以测量电缆接头温度。两款无源无线测温标签,螺母传感器替换原有螺母,陶瓷传感器浇筑至堵头,配合读写器天线与二次室内读写器,实现环网柜三相温度监控。高压线缆接头高压线缆接头因连接工艺、运行环境易升温,引发绝缘老化等事故。用RFID温度标签监测,数据经无线传至采集终端,再到监控中心。变压器变压器运行温度影响性能与寿命,传统有线测温布线复杂、维护不便。RFID温度标签在干式和油浸式变压器关键部位安装,实现无线测温,提升可靠性与维护便捷性。   四、应用优势安全性:无源设计杜绝电池爆炸风险,耐高压绝缘材料保障设备安全运行。经济性:减少人工巡检频次,通过预防性维护降低故障修复成本,延长设备寿命。可扩展性:支持大规模部署,单读写器可覆盖多个标签,适用于电网资产全生命周期管理。智能化:与大数据平台结合,实现温度趋势预测和智能告警,提升电网运维的数字化水平。五、结论       随着科技的持续进步,RFID 温度标签在电力行业的应用前景将愈发广阔。它不仅为电力设备的安全运行筑牢坚实防线,更为智能电网的建设注入全新活力。展望未来,相信 RFID 温度标签将不断迭代升级、创新发展,持续为电力行业的稳健前行保驾护航,让我们的用电生活更加安全、稳定、可靠。(图片来源于网络 侵删)
  • [技术干货] RFID测温技术:提升电缆安全监测的理想选择
    随着电力系统规模的扩大,电缆作为电能传输的核心载体,其运行状态直接影响供电安全。电缆过热是导致绝缘老化、短路甚至火灾的主要原因之一。传统测温手段(如红外测温、光纤测温)存在实时性差、成本高或部署复杂等问题。RFID(射频识别)测温技术凭借无线传输、无源传感、多点监测等优势,成为电缆温度监测的理想解决方案。  一、RFID测温技术原理RFID(射频识别技术)基于射频信号实现非接触式信息交互以达成识别。在电缆测温系统里,其主要由RFID读写器、测温标签及数据处理系统构成。读写器发射射频信号,测温标签进入其工作范围后,标签天线感应信号转化为电能,为内部电路供电。温度传感器实时感知温度,将数据转化为电信号,经编码调制后以射频信号回传。读写器接收信号后,解调、解码并把温度数据传输给数据处理系统。该系统对数据进行分析、存储与显示,温度超出阈值时立即报警。二、RFID测温技术优势无源无线特性:RFID测温标签无需外接电源,靠读写器射频信号取能,完成温度测量与数据传输。这种设计让标签安装便捷,免布线困扰,适合绝缘要求高、布线难的地下电缆、电缆隧道等场景。无源设计避免了电池电量耗尽导致的监测中断,提升了系统可靠性与稳定性。高精度测量:RFID测温技术精度可达±1℃,能敏锐捕捉电缆温度细微变化,精准判断运行状态,为提前预警故障提供可靠数据。强抗干扰性:电力环境电磁干扰复杂,RFID系统通过优化天线设计、选用合适频段、采用编码调制技术等手段,在强电磁噪声中稳定运行,保障温度数据准确可靠。实时数据传输:该系统可实时采集电缆温度并快速传输至处理系统。运维人员借助监控终端能实时查看温度变化,及时察觉异常并采取措施,有效预防事故。多目标识别:单个RFID读写器可同时识别多个测温标签,能同步监测同一电缆线路上的多个测温点,大幅提升监测效率、降低成本,适用于大规模电缆网络。环境适应性佳:RFID测温标签经特殊封装,可在高温、高压、潮湿、腐蚀等恶劣环境下稳定工作,无论是户外变电站还是地下电缆沟,都能确保温度监测的连续与准确。  三、RFID测温技术在电缆测温中的应用方案电缆关键部位监测1. 电缆接头:作为故障高发点,在导体连接部位、绝缘层表面和屏蔽层布置RFID测温标签,全方位监测温度。2. 电缆本体:根据电缆长度、负载及运行环境,长距离电缆每隔100-200米设测温点;负载大或环境恶劣段适当加密。3. 交叉互联箱:在箱内电缆连接部位、开关触头及箱体外壳布置测温标签,监测温度异常。系统架构搭建1. 感知层:采用卡扣式、绑扎式、镶嵌式等RFID测温标签,依安装位置和环境选择,采集温度数据。2. 传输层:由RFID读写器和通信网络组成。读写器读取数据,通过有线(光纤、以太网)或无线网络传输至数据处理系统,依场景选择通信方式。3. 数据处理层:数据处理系统分析、存储、处理温度数据,预测温度趋势;监控平台直观展示数据、状态和报警信息,支持多终端访问。系统功能实现1. 实时监测:实时采集温度,在监控平台以数字、图表呈现,展示整体温度分布。2. 报警功能:用户设报警阈值,超阈值时系统发出声光、短信报警,记录报警信息。3. 历史数据处理:自动存储不少于1年的历史数据,支持查询和分析,如绘制趋势曲线、统计异常次数。4. 故障诊断预测:利用算法结合运行参数和环境温度诊断故障,通过历史数据建模预测异常,提前预警。  四、总结与展望RFID测温技术是电缆测温的理想方案,在电缆关键部位部署测温标签,搭建系统架构,就能实时、精准监测电缆温度,有效预防过热事故,保障电力系统安全。伴随物联网等技术发展,RFID测温技术应用前景广阔。未来,其系统将更智能,可自动诊断故障、预测维护,进一步提升电力运维效率,为电力系统稳定运行保驾护航。(图片来源于网络 侵删)
  • [技术干货] RFID技术:冷链物流的品质与追溯革新者
    在如今快节奏的生活中,生鲜食品已经成为我们日常饮食中不可或缺的一部分。无论是新鲜的水果、蔬菜,还是肉类、海鲜,人们对于生鲜的品质和安全都有着越来越高的要求。而冷链物流作为保障生鲜品质的关键环节,其重要性不言而喻。如今,一项先进的技术 ——RFID(无线射频识别),正悄然改变着冷链物流的格局,为生鲜品质提升与追溯效率带来了新的突破。   一、RFID技术:开启冷链物流智能新时代RFID技术,本质上是利用无线射频信号,实现对目标对象的自动识别和数据获取。打个比方,它就像是给每个物品都配备了一个独一无二的 “电子身份证”,无需人工近距离接触,只要在一定范围内,就能快速、精准地读取和写入信息。在对时效性和精准度要求极高的冷链物流行业,RFID 技术的应用,有效解决了传统物流长期面临的诸多难题,为行业发展注入了全新活力。二、RFID如何全方位提升生鲜品质1. 精准温控,为新鲜保驾护航:生鲜食品对温度极为敏感,稍有不慎就可能变质。RFID技术与温度传感器相结合,就像给冷链运输和储存环节安装了一个 24 小时的 “温度卫士”。在漫长的运输途中,一旦温度偏离预设的最佳范围,系统便会即刻发出警报,提醒工作人员迅速采取措施进行调整。2. 快速盘点与智能补货,降低损耗增效益:在传统的生鲜仓库和超市中,人工盘点货物不仅耗时费力,而且容易出现人为失误。而有了RFID技术的助力,工作人员只需手持便捷式读写器,在货架间轻松走过,就能快速完成所有商品的识别与数量统计。当库存水平降至预设阈值时,系统会自动发出补货提醒,确保商品供应的连续性,避免因缺货造成的销售损失。同时,也能有效减少因货物积压导致的过期损耗,大大提升了企业的运营效率和经济效益。    三、RFID让追溯变得高效便捷1. 全程追溯,信息一目了然:从农产品的种植采摘,到食品的加工包装,再到漫长的运输销售环节,RFID标签全程记录着每个环节的信息。消费者只需拿出手机,轻轻扫描商品上的RFID二维码,就能轻松获取包括产地、生产日期、采摘时间、检测报告等在内的详细信息。真正实现了从农田到餐桌的全程可视化追溯,让消费者吃得明白、吃得放心。2. 快速响应食品安全问题,筑牢安全防线:一旦发生食品安全问题,RFID技术强大的追溯功能就能迅速发挥作用。它能在短时间内精准定位问题源头,无论是原材料供应商、生产加工环节,还是运输途中的某个节点,都能一查到底。企业可以根据追溯信息,快速召回问题产品,将损失和负面影响降到最低。同时,监管部门也能借助这些详实的数据,迅速展开调查,采取有效措施,保障公众的食品安全。四、RFID在冷链物流各环节的深度应用1. 生产环节:精准管理,从源头把控品质:在原材料采购阶段,为每一批次的原材料贴上RFID标签,详细记录其来源、产地、批次号、检验结果等关键信息。这不仅有助于实现原材料的精准追溯,还能实时监控库存水平,确保生产的连续性。在生产加工过程中,通过RFID技术对产品进行全程跟踪,自动记录每一道工艺流程的参数和检测结果,一旦发现质量问题,能够迅速定位问题环节,及时采取纠正措施,从源头上保障产品质量。2. 存储环节:智能管控,提升仓储效率:在仓库管理方面,RFID技术让货物识别与追踪变得更加高效。通过在仓库内布置读写设备,能够实时定位货物的位置,实现精准的批次管理。同时,内置温度传感器的RFID标签能够实时监测货物存储环境的温度变化,一旦出现异常,立即发出警报,并自动记录温度历史数据。此外,借助RFID技术实现的自动盘点和库存预警功能,大大提高了仓储管理的智能化水平,降低了人工成本,提升了仓储效率。3. 运输环节:实时监控,确保运输安全:在冷链运输过程中,将RFID技术与卫星定位系统(GPS)相结合,实现了货物位置和运输轨迹的实时跟踪。无论是在高速公路上疾驰,还是在偏远山区穿梭,都能随时掌握货物的动态。同时,通过RFID温度传感器对运输车内的温度进行精准监测与控制,确保货物在整个运输过程中始终处于适宜的温度环境,有效避免了因温度波动导致的品质下降。  五、未来展望:无限可能,引领行业新变革随着技术的不断发展和应用的深入,RFID技术在冷链物流中的前景一片光明。它将持续推动冷链物流向智能化、数字化方向深度转型,进一步提升整个行业的运营效率和服务质量。同时,也将为消费者带来更加新鲜、安全、优质的生鲜食品。(图片来源于网络 侵删)
  • RFID无线测温技术助力环网柜智能运维升级
       一、行业痛点分析环网柜作为电力系统的核心配电设备,其内部电气连接点(如电缆头、母排、断路器触头等)在长期高负荷运行中易因氧化、松动或灰尘积累导致接触电阻增大,进而引发局部过热问题。其核心痛点包括:1. 温度监测盲区:传统接触式测温需人工巡检,存在监测盲区,尤其在封闭柜体或高压环境下难以实施,易漏检发热点。2. 环境适应性差:环网柜多部署于户外,面临高温、潮湿、粉尘等恶劣环境,传统传感器易腐蚀、失效,且布线复杂,维护成本高。3. 实时性与可靠性不足:人工巡检周期长,难以及时捕捉瞬态温升;有线传输易受电磁干扰,数据延迟或丢失可能引发连锁故障。4. 运维效率低下:依赖人工记录和分析,缺乏智能化预警系统,故障响应滞后,导致设备寿命缩短及安全隐患。   二、RFID无线测温解决方案的技术架构基于RFID(射频识别)技术的无线测温系统,通过集成温度传感器与无源电子标签,结合智能分析平台,实现环网柜温度的全天候、非接触式监测:1. 无源温度标签核心技术:在RFID芯片中集成超低功耗温度传感器,支持-40℃~150℃宽范围监测,常温误差≤±1℃,关键区间(如35℃~42℃)精度达±0.1℃。抗金属设计:采用抗金属标签,可直接固定于母排、触头等金属表面,避免信号屏蔽问题,耐受220℃高温环境。无源免维护:通过读写器发射的射频能量供电,无需电池,寿命长达10年以上,适应户外长期运行。2. 读写器与通信网络超高频读写模块:基于Impinj E710等高性能引擎,支持多标签并行读取(单次500~2000个标签),穿透柜体材料(如金属、绝缘层)实现稳定通信。灵活组网:通过RS485、Modbus或TCP/IP协议接入监控系统,支持本地显示与云端同步,适应不同规模配电室需求。3. 智能分析与预警系统温度-负荷关联模型:结合历史数据与机器学习算法,预测温度变化趋势,为负荷调度提供决策依据,避免超温风险。多级报警机制:支持声光报警、短信/微信推送、系统平台弹窗等多方式告警,并联动散热装置(如冷风机)自动启动降温。  三、解决方案的核心优势1. 非接触式监测:避免物理接触带来的设备干扰与安全风险,尤其适用于高压环境。2. 高环境适应性:无源标签耐高温、防潮、抗粉尘,适配户外及复杂工业场景。3. 全生命周期管理:通过唯一ID标识,实现设备温度历史追溯与状态评估,支持预防性维护。4. 经济效益显著:据案例统计,系统部署后环网柜故障率下降87%,运维成本减少70%,订单交付准确率提升至99.95%。四、典型应用场景与案例1. 城市配电网:某变电站部署后,成功预警多起触头氧化导致的温升异常,避免停电事故。2. 工业厂区:化工厂应用RFID系统,实时监控电缆接头温度,结合负荷预测模型优化用电调度。3. 煤矿变电站:在封闭高压柜中实现无人化测温,解决传统人工巡检的安全隐患。 结论        RFID无线测温技术通过无源化、高精度、强抗扰的特性,彻底解决了环网柜温度监测的行业难题。其智能化、低成本的运维模式,为电力系统安全与能效提升提供了可靠保障,成为智能电网建设的关键技术支撑。未来随着物联网与AI技术的深度融合,该方案将进一步推动电力设备管理向数字化、主动化转型。(图片来源于网络 侵删)
  • [技术干货] RFID测温技术:为生产安全与稳定保驾护航
           在科技浪潮汹涌澎湃的当下,工业生产对于安全性和稳定性的追求达到了全新高度。各类保障生产安全的技术百花齐放,而RFID测温技术凭借其独树一帜的特性,在其中崭露头角,如同一位坚毅可靠的守护者,全方位筑牢生产安全的坚固防线,让生产流程得以高效、稳定地运转。一、RFID测温技术的定义与原理        RFID测温技术,即射频识别无线测温技术,是一种基于射频信号传播的无线测温方法。它通过发射端发射无线信号,与接收端进行通讯,实现对温度的远程、非接触式测量。RFID测温技术的核心是RFID芯片,它将温度信息转换为电信号,并通过无线通信技术将温度数据发送给读写器,读写器再将数据传输给计算机进行处理和分析。这样,我们就可以在远离测量现场的位置实时了解环境温度的变化情况,实现温度测量的无线化、数字化和智能化。二、多领域深度应用,筑牢生产安全网(一)电力行业电力系统庞大繁杂,从变电站中体型巨大的变压器,到开关柜中起着关键连接作用的触头,再到输电线路里的电缆接头,这些设备长期在高负荷、高电压的严苛环境下运行。一旦温度失去控制,严重故障便会接连不断。比如,变压器温度过高会加速内部绝缘材料老化,极有可能引发短路;电缆接头过热则可能引发火灾,致使整个电力系统陷入瘫痪,给社会生产生活带来巨大影响。而RFID测温技术的出现,为电力设备的安全稳定运行带来了曙光。通过在关键部位精准安装RFID测温标签,温度数据能够实时、不间断地无线传输至监控中心。一旦温度超出预先设定的安全范围,系统会即刻发出警报,运维人员收到警报后可迅速响应并及时处理,有效避免因温度异常引发的各类事故,全力保障电力的稳定供应,守护社会正常运转的能源动脉。   (二)煤矿领域煤矿环境恶劣,高温、高压、潮湿的环境以及狭窄逼仄的空间,给电气设备的稳定运行带来了极大挑战。传统的人工巡检方式不仅效率低下,而且在危险重重的井下环境中,存在诸多难以预料的安全隐患。RFID无线测温技术的应用,为煤矿安全生产注入了新的活力。在煤矿电气设备上合理部署RFID读写器和电子标签,能够实时采集设备温度数据,并通过无线传输模块将数据快速传送至监控中心。该系统可广泛应用于高压柜、电机等关键设备,实时掌握设备温度变化,及时发现因过热或接触不良等问题产生的高温隐患,为井下作业人员的生命安全提供了坚实保障,极大地提升了煤矿生产的安全性与效率,让煤矿开采在安全的轨道上高效运行。  (三)水泥厂在水泥厂的生产流程中,电力系统的稳定运行起着至关重要的作用。水泥厂的变电所、配电室等场所设备众多且分布广泛,一旦设备温度出现异常,不仅会严重影响生产效率,导致生产停滞,增加成本,还可能引发严重安全事故。RFID无线测温技术能够对电缆接头、高压开关柜触头、干式变压器等设备的表面温度进行实时监测,通过无线通信技术将监测数据高效传输至后台管理系统。当温度超过警戒值或出现异常波动时,系统迅速发出警报,有效避免因过热引发的火灾事故,最大限度降低重大经济损失的风险,让水泥厂的电力系统运行更加智能、安全,保障水泥厂生产的顺利进行。  三、突出优势显著,助力生产高效腾飞(一)非接触式测量,延长设备使用寿命RFID测温技术采用非接触式测量方式,传感器无需与被测物体直接接触。这一特性从根本上减少了因物理接触导致的设备磨损与损坏,大幅延长了设备的使用寿命,降低了企业的设备更换成本。同时,避免了因接触不良或测量位置不准确而产生的误差,显著提高了测量精度,为生产设备的稳定运行提供了可靠的数据支持,保障生产过程的连续性和稳定性。(二)强大穿透能力,精准洞察潜在隐患其信号具有强大的穿透能力,能够轻松穿透绝缘材料、油漆层等非金属材料,从而实现对设备内部或难以触及区域的温度监测,及时发现潜在的温度异常。以变压器内部绕组温度监测为例,传统测温方式往往难以触及,而RFID测温系统却能精准获取其温度信息,为设备的安全运行提供了有力保障,将安全隐患扼杀在萌芽状态。(三)安装简便,降低维护成本RFID测温传感器安装便捷,无需复杂的布线与连接,不仅大大缩短了安装时间,降低了人力成本,还减少了因布线错误引发的故障风险。此外,部分传感器采用低功耗甚至无源设计,无需外部电源,进一步降低了能源消耗与维护工作量,减轻企业运营负担。(四)实时数据传输,快速响应应急状况一旦出现温度异常,系统能够在第一时间迅速发出警报,帮助运维人员快速响应并采取有效措施。在实际应用中,该系统多次在设备温度异常升高的瞬间发出警报,运维人员及时处理,成功避免了可能发生的严重事故。这种实时高效的数据传输,为生产的安全稳定运行提供了关键保障,让企业在面对突发状况时能够迅速应对,减少损失。         综上所述,RFID测温技术凭借其独特的工作原理、广泛的应用场景和显著的技术优势,已然成为保障生产安全与稳定的中流砥柱。随着技术的不断创新与完善,相信RFID测温技术将在更多领域开疆拓土,发挥更大的作用,为工业生产的安全、高效发展贡献更多的智慧与力量,助力各行业在科技的赋能下蓬勃发展。(图片来源于网络 侵删)
  • [技术干货] 海酆防溺水检测系统
    各路大神如何把物联网接入高危行业?
  • [技术干货] Session、Cookie与Token之间的异同
    🍁 作者:知识浅谈,CSDN签约讲师&博客专家,华为云云享专家,阿里云专家博主,InfoQ签约作者📌 擅长领域:全栈工程师、爬虫、ACM算法,大数据,深度学习在Web开发中,Session、Cookie与Token是常用的技术,它们各自承担着不同的职责,用于管理用户的认证和状态。本文将详细介绍这三种技术的基本概念、应用场景、优缺点以及它们之间的区别。🎈Cookie基本概念 Cookie是存储在用户端的小型文本文件,主要用于存储用户身份信息和会话跟踪。当用户首次访问网站时,服务器可以在响应信息(response)中增加Set-Cookie响应头,将信息以Cookie为载体发送给浏览器。浏览器接收到Cookie信息后,会将其保存在浏览器的缓冲区或硬盘中。当浏览器再次访问服务器时,会自动将Cookie放在请求消息中,服务器通过请求中的Cookie来识别用户。应用场景 Cookie通常用于保存用户的登录信息、购物车数据、偏好设置等。例如,在用户登录后,服务器会返回一个包含用户身份的Cookie,客户端会保存这个Cookie。之后,每次客户端发送请求时,Cookie会自动附加到请求中,以识别用户身份。优缺点优点: 简单易用:Cookie是一种标准的HTTP技术,几乎所有浏览器都支持。 会话管理:适合用于简单的状态管理,如用户偏好、语言选择等。 缺点: 安全性较差:Cookie是明文传输的,容易被窃取或篡改。 跨域限制:Cookie只能被设置和访问同一域下的资源,跨域访问受到严格的限制。🎈Session基本概念 Session是存储在服务器端的用户会话信息。每个用户的请求都会关联一个唯一的Session ID,这个ID通常通过Cookie保存在客户端。当用户首次访问服务器时,服务器会创建一个Session,并为其生成一个唯一的Session ID,然后将这个ID通过Cookie发送给客户端。之后,每次客户端请求时,都会带上这个Session ID,服务器根据ID查找对应的Session信息,从而识别用户。应用场景 Session适用于需要在服务器端管理用户状态的场景,特别是需要保持用户登录状态、购物车等需要长期管理的应用。Session信息存储在服务器端,相对更安全,因为敏感数据不会直接暴露给客户端。优缺点 优点: 安全性较高:敏感数据存储在服务器端,避免了直接暴露给客户端。 持久性:Session可以持续存在,直到用户关闭浏览器或Session超时。 缺点: 依赖Cookie:Session的唯一标识符Session ID通常通过Cookie发送给客户端,如果客户端禁用了Cookie,Session将无法使用。 占用服务器资源:Session信息存储在服务器上,会占用服务器的存储资源。🎈Token基本概念 Token是存储在客户端的一种身份验证和授权机制,通常以加密的方式存储在客户端的localStorage或sessionStorage中。Token可以包含用户信息、权限等,用于验证用户的身份和权限。应用场景 Token适用于无状态认证,特别是分布式系统、移动应用、单点登录(SSO)等需要多服务器共享认证信息的场景。用户登录成功后,服务器会生成一个Token返回给客户端,客户端保存这个Token并在后续请求中发送给服务器进行身份验证。优缺点 优点: 安全性高:Token通常使用加密算法生成,具有较高的安全性。 跨域支持:Token可以轻松实现跨域,因为Token是存储在客户端的localStorage或作为请求头的一部分发送到服务器的。 无状态:服务器不需要保存Token的状态,有助于构建更加灵活的应用程序架构。 缺点: 存储空间限制:Token通常较大,可能会占用较多的客户端存储空间。 有效期管理:Token的有效期需要合理设置,以避免过期或长期有效带来的安全风险。🍚总结Cookie、Session和Token都是Web开发中用于管理用户认证和状态的重要技术。它们各有优缺点,适用于不同的场景。Cookie适合轻量级的状态管理,Session适合需要在服务器端管理用户状态的场景,而Token则适合无状态认证和跨域认证。在实际开发中,应根据具体需求选择合适的技术来实现用户认证和状态管理。 大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。 Writted By 知识浅谈
  • [问题求助] 华为算法精英实战营第十期-用户位置与站址同步估计问题
    华为算法精英实战营第十期-用户位置与站址同步估计问题,最终的用户也是200个吗
  • [问题求助] 华为算法精英实战营第十期-用户位置与站址同步估计问题
    房间的大小是20*20,中心为原点,那么x和y的范围应该是(-10,10)。约束条件中的UE是符合要求的,但给的input中前两个BS的坐标超出了这个范围,约束条件中对BS的约束也只是象限约束。所以UE是在房间中,BS可以不在房间中吗
  • [技术交流] rk3568使用napi进行uart串口开发,遇到问题。
    rk3568使用uart进行串口通信代码实现,napi代码如下#include "napi/native_api.h"#include "platform_if.h"#include "uart_if.h"#include "hdf_base.h"#include <cstdint>#include "hdf_types.h"#include <cstdlib>#include <functional>#include <hilog/log.h>#include <js_native_api_types.h>static napi_value Add(napi_env env, napi_callback_info info){ size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args , nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); double value0; napi_get_value_double(env, args[0], &value0); double value1; napi_get_value_double(env, args[1], &value1); napi_value sum; napi_create_double(env, value0 + value1, &sum); return sum;}unsigned long open(char port[50]) { return open(port); }static napi_value UartOpen(napi_env env, napi_callback_info info){ size_t requireArgc = 1; size_t argc = 1; napi_value args[1] = {nullptr}; napi_get_cb_info(env, info,&argc,args ,nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env,args[0], &valuetype0); size_t size; char port[50] ; napi_get_value_string_utf8(env, args[0], port, 50, &size); size_t ret; ret = open(port); if (ret == NULL) { HDF_FAILURE; } }unsigned long setAttribute(char port, char attribute) { setAttribute(port, attribute); }static napi_value UartSetAttribute(napi_env env , napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info,&argc,args ,nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env,args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env,args[0], &valuetype1); char port{50}; size_t size; size_t ret; struct UartAttribute attribute; attribute.dataBits = UART_ATTR_DATABIT_8; attribute.parity = UART_ATTR_PARITY_NONE; attribute.stopBits = UART_ATTR_STOPBIT_1; // UART传输数据停止位为1位 attribute.rts = UART_ATTR_RTS_DIS; // UART禁用RTS attribute.cts = UART_ATTR_CTS_DIS; // UART禁用CTS attribute.fifoRxEn = UART_ATTR_RX_FIFO_EN; // UART使能RX FIFO attribute.fifoTxEn = UART_ATTR_TX_FIFO_EN; // UART使能TX FIFO ret = UartSetAttribute(&port, &attribute); if (ret != HDF_SUCCESS) { LOG_ERROR; } LOG_INFO;} struct napi_value__ * write(int port, unsigned long data) {return write(port, data);}static napi_value UartWrite(napi_env env , napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); int32_t port; DevHandle handle = UartOpen(port); napi_get_value_int32(env, args[0], &port); napi_get_value_int32(env, args[0], &port); char value0[50]; size_t data; napi_get_value_string_utf8(env, args[1], value0, 50, &data); int32_t size; size = sizeof(data); napi_value ret;ret = write(port,data); napi_create_int32(env, data,&ret ); return ret; if (ret == NULL) { LOG_ERROR; }return ret;} struct napi_value__ * read(int port, char data[512]) { return read(port, data); }static napi_value UartRead(napi_env env , napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); int32_t port; napi_get_value_int32(env, args[0], &port); char value0[50]; size_t data; napi_get_value_string_utf8(env, args[1], value0, 50, &data); napi_value ret; ret = read(port,value0); napi_create_int32(env, data,&ret ); return ret; if (ret == NULL) { LOG_ERROR; }return ret;}struct napi_value__ * set(char port[50], unsigned int BaudRate) { return set(port, BaudRate);}static napi_value UartSetBaud(napi_env env, napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); char port[50]; size_t size1; napi_get_value_string_utf8(env, args[0], port, 50, &size1); int32_t BaudRate ; BaudRate= 150000; napi_value result; napi_create_int32(env, 1500000,&result); napi_value ret; ret = set(port,15000000); if (ret == NULL ) { HDF_FAILURE; } return ret; } struct napi_value__ * get(char port[50], int BaudRate) { return get(port, BaudRate);}static napi_value UartGetBaud(napi_env env, napi_callback_info info){ size_t requireArgc = 2; size_t argc = 2; napi_value args[2] = {nullptr}; napi_get_cb_info(env, info, &argc, args, nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env, args[0], &valuetype0); napi_valuetype valuetype1; napi_typeof(env, args[1], &valuetype1); char port[50]; size_t size1; napi_get_value_string_utf8(env, args[0], port, 50, &size1); int32_t BaudRate; napi_value ret; napi_create_int32(env, BaudRate, &ret); napi_create_int32(env, size1, &ret); ret = get(port, BaudRate); if (ret == nullptr) { HDF_FAILURE;; } return ret; }struct napi_value__ * close(int port) { return close(port);}static napi_value UartClose(napi_env env, napi_callback_info info){ size_t requireArgc = 1; size_t argc = 1; napi_value args[1] = {nullptr}; napi_get_cb_info(env, info,&argc,args ,nullptr, nullptr); napi_valuetype valuetype0; napi_typeof(env,args[0], &valuetype0); int port; napi_get_value_int32(env, args[0], &port); close(port); napi_value ret; napi_create_int32(env, port, &ret); if (ret == NULL) { HDF_FAILURE; }return ret;}EXTERN_C_STARTstatic int32_t UartTest(void ) { int32_t ret; uint32_t port; uint32_t baud = 15000000; DevHandle handle = NULL; uint8_t wbuff[] = {}; uint8_t rbuff[] = {}; struct UartAttribute attribute; attribute.dataBits = UART_ATTR_DATABIT_8; // UART传输数据位宽,一次传输8个bit attribute.parity = UART_ATTR_PARITY_NONE; // UART传输数据无校检 attribute.stopBits = UART_ATTR_STOPBIT_1; // UART传输数据停止位为1位 attribute.rts = UART_ATTR_RTS_DIS; // UART禁用RTS attribute.cts = UART_ATTR_CTS_DIS; // UART禁用CTS attribute.fifoRxEn = UART_ATTR_RX_FIFO_EN; // UART使能RX FIFO attribute.fifoTxEn = UART_ATTR_TX_FIFO_EN;// UART使能TX FIFO ret = UartSetAttribute(handle, &attribute); handle = UartOpen(port); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } ret = UartSetBaud(handle, 1500000); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } ret = UartGetBaud(handle, &baud); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } ret = UartWrite(handle, wbuff, sizeof(wbuff)); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } ret = UartRead(handle, rbuff, sizeof(rbuff)); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } UartClose(handle); if (ret != HDF_SUCCESS) { return HDF_FAILURE; } return HDF_SUCCESS;}static napi_value Init(napi_env env, napi_value exports){ napi_property_descriptor desc[] = { { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartOpen", nullptr, UartOpen, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartClose", nullptr, UartClose, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartWrite", nullptr, UartWrite, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartRead", nullptr, UartRead, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartSetBaud", nullptr, UartSetBaud, nullptr, nullptr, nullptr, napi_default, nullptr }, { "UartGetBaud", nullptr, UartGetBaud, nullptr, nullptr, nullptr, napi_default, nullptr } }; napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); return exports;}EXTERN_C_ENDstatic napi_module demoModule = { .nm_version = 1, .nm_flags = 0, .nm_filename = nullptr, .nm_register_func = Init, .nm_modname = "entry", .nm_priv = ((void*)0), .reserved = { 0 },};extern "C" __attribute__((constructor)) void RegisterEntryModule(void){ napi_module_register(&demoModule);}cmakelist.txt内容如下:# the minimum version of CMake.cmake_minimum_required(VERSION 3.4.1)project(Uart)if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a")endif()if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/path/to/openharmony/libs")endif()set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})SET (CMAKE_BUILD_TYPE Debug CACHE INTERNAL “” FORCE)if(DEFINED PACKAGE_FIND_FILE) include(${PACKAGE_FIND_FILE})endif()include_directories(${NATIVERENDER_ROOT_PATH} ${NATIVERENDER_ROOT_PATH}/include)add_library(entry SHARED napi_init.cpp) target_link_libraries(serialhelper PUBLIC libace_napi.z.so libc++.a libhilog_ndk.z.so libuv.so libserialport_service_api.z.so)运行工程报错: > hvigor ERROR: Failed :entry:default@BuildNativeWithCmake...  > hvigor ERROR: Exceptions happened while executing: Not searching for unused variables given on the command line. -- The CXX compiler identification is unknown CMake Error at CMakeLists.txt:3 (project):   The CMAKE_CXX_COMPILER:      C:/Program Files/Huawei/DevEco Studio/license/DevEco Studio/sdk/HarmonyOS-NEXT-DB1/openharmony/native/llvm/bin/clang++.exe    is not a full path to an existing compiler tool.    Tell CMake where to find the compiler by setting either the environment   variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path   to the compiler, or to the compiler name if it is in the PATH.  -- Configuring incomplete, errors occurred! See also "C:/Users/Administrator/DevEcoStudioProjects/Uart/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeOutput.log". See also "C:/Users/Administrator/DevEcoStudioProjects/Uart/entry/.cxx/default/default/arm64-v8a/CMakeFiles/CMakeError.log".  > hvigor ERROR: BUILD FAILED in 2 s 908 ms  hilog中报错如下:08-05 17:28:11.725   5162-5162    C02f00/teecd                   pid-5162              E     open tee client dev failed, fd is <private> 08-05 17:28:11.726   5162-5162    C02f00/teecd                   pid-5162              E     fs agent init failed 08-05 17:28:11.726   5162-5162    C02f00/teecd                   pid-5162              E     open tee client dev failed, fd is <private> 08-05 17:28:11.726   5162-5162    C02f00/teecd                   pid-5162              E     misc agent init failed 08-05 17:28:11.750   5163-5163    C02f00/teecd                   pid-5163              E     open tee client dev failed, fd is <private> 08-05 17:28:11.750   5163-5163    C02f00/teecd                   pid-5163              E     fs agent init failed 08-05 17:28:11.750   5163-5163    C02f00/teecd                   pid-5163              E     open tee client dev failed, fd is <private> 08-05 17:28:11.750   5163-5163    C02f00/teecd                   pid-5163              E     misc agent init failed 08-05 17:28:11.768   5164-5164    C02f00/teecd                   pid-5164              E     open tee client dev failed, fd is <private> 08-05 17:28:11.768   5164-5164    C02f00/teecd                   pid-5164              E     fs agent init failed 08-05 17:28:11.769   5164-5164    C02f00/teecd                   pid-5164              E     open tee client dev failed, fd is <private> 08-05 17:28:11.769   5164-5164    C02f00/teecd                   pid-5164              E     misc agent init failed 08-05 17:28:11.784   5165-5165    C02f00/teecd                   pid-5165              E     open tee client dev failed, fd is <private> 08-05 17:28:11.784   5165-5165    C02f00/teecd                   pid-5165              E     fs agent init failed 08-05 17:28:11.784   5165-5165    C02f00/teecd                   pid-5165              E     open tee client dev failed, fd is <private> 08-05 17:28:11.784   5165-5165    C02f00/teecd                   pid-5165              E     misc agent init failed 08-05 17:28:14.679   547-866      C01719/ffrt                    foundation            E     20299:FFRTQosApplyForOther:242 qos apply failed for task 5170 08-05 17:28:15.883   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:15.884   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:16.279   5179-5179    C01810/SAFWK                   pid-5179              E     CheckAndGetProfilePath file path does not exist! 08-05 17:28:16.280   5179-5179    C01810/SAFWK                   pid-5179              E     DoStartSAProcess DoStartSAProcess invalid path 08-05 17:28:16.330   5180-5180    C01810/SAFWK                   pid-5180              E     CheckAndGetProfilePath file path does not exist! 08-05 17:28:16.330   5180-5180    C01810/SAFWK                   pid-5180              E     DoStartSAProcess DoStartSAProcess invalid path 08-05 17:28:16.378   5181-5181    C01810/SAFWK                   pid-5181              E     CheckAndGetProfilePath file path does not exist! 08-05 17:28:16.378   5181-5181    C01810/SAFWK                   pid-5181              E     DoStartSAProcess DoStartSAProcess invalid path 08-05 17:28:16.426   5182-5182    C01810/SAFWK                   pid-5182              E     CheckAndGetProfilePath file path does not exist! 08-05 17:28:16.426   5182-5182    C01810/SAFWK                   pid-5182              E     DoStartSAProcess DoStartSAProcess invalid path 08-05 17:28:18.399   263-298      C01719/ffrt                    samgr                 E     8683:FFRTQosApplyForOther:242 qos apply failed for task 5183 08-05 17:28:18.411   469-469      C01560/WifiHalWpaCommon        wifi_hal_service      E     WpaCliCmd, ctrl/ctrl->pSend is NULL! 08-05 17:28:18.412   469-469      C01560/WifiHalWpaCommon        wifi_hal_service      E     WpaCliCmd, ctrl/ctrl->pSend is NULL! 08-05 17:28:18.412   469-469      C01560/WifiHalStaInterface     wifi_hal_service      E     StartScan failed! ret=-1 08-05 17:28:18.413   1002-1285    C01562/ScanStateMachine        wifi_manager_se       E     WifiStaHalInterface::GetInstance().scan failed. 08-05 17:28:18.413   1002-1285    C01560/WifiScanManager         wifi_manager_se       E     DealScanFinished, state: 0! 08-05 17:28:18.421   547-5170     C01719/ffrt                    foundation            E     20338:FFRTQosApplyForOther:242 qos apply failed for task 5184 08-05 17:28:18.423   547-5170     C01719/ffrt                    foundation            E     20353:FFRTQosApplyForOther:242 qos apply failed for task 5185 08-05 17:28:18.428   547-5170     C01719/ffrt                    foundation            E     20379:FFRTQosApplyForOther:242 qos apply failed for task 5186 08-05 17:28:18.430   547-5170     C01719/ffrt                    foundation            E     20396:FFRTQosApplyForOther:242 qos apply failed for task 5187 08-05 17:28:18.747   264-944      C01719/ffrt                    hiview                E     3023:FFRTQosApplyForOther:242 qos apply failed for task 5188 08-05 17:28:21.044   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:21.045   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:22.536   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:22.537   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:22.633   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:22.634   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:22.641   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:22.642   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:26.180   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:26.180   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:27.812   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:27.812   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:28.838   264-944      C01719/ffrt                    hiview                E     3041:FFRTQosApplyForOther:242 qos apply failed for task 5223 08-05 17:28:31.342   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:31.343   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:32.974   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:32.975   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:36.502   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:36.503   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106! 08-05 17:28:38.165   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.control.shell, errNum is:106! 08-05 17:28:38.166   632-720      C02c02/PARAM                   hdcd                  E     [param_manager.c:736]SystemReadParam failed! name is:persist.hdc.root, errNum is:106!
  • [其他问题] .so动态库出现undefined symbol
    使用了一个第三方的动态库libgmssl.so来编写生成了一个新的动态库tlcp.so,但是使用时出现undefined symbol后面使用ldd -r tlcp.so查看,显示如下内容undefined symbol: tls_send    (./tlcp.so) undefined symbol: tls_ctx_cleanup    (./tlcp.so) undefined symbol: tls_socket_accept    (./tlcp.so) undefined symbol: tls_do_handshake    (./tlcp.so) undefined symbol: tls_ctx_set_certificate_and_key    (./tlcp.so) undefined symbol: tls_socket_connect    (./tlcp.so) 这些函数的实现在libgmssl.so内已经实现,且使用nm libgmssl.so显示
  • [问题求助] APP Web页面怎么通过nginx访问后台呢
    当我访问比如https://192.168.1.120/SDCAPI/V1.0/demoapp/时,可以获得成功的结果。当我访问https://localhost/SDCAPI/V1.0/demoapp/或者https://127.0.0.1/SDCAPI/V1.0/demoapp/时,返回错误。而我在实际的开发中,网页端无法获得类似于192.168.1.120的ip地址。请问是哪里出了问题呢