
嵌入式
文章平均质量分 83
Mr Robot
When I’m old and dying, I plan to look back on my life and say “wow, that was an adventure,” not “wow, I sure felt safe.”
山东南海岸程序猿,美国《时代周刊》2006年度风云人物;
《感动中国》2008年度人物;
联合国2019年度“地球卫士奖”
国际奥委会2022年”奥林匹克奖杯“获奖者
展开
-
esp32-cam红外实时监控报警系统(巴发云和邮箱同时推送)
终于可以了,哇咔咔。以下代码顺利编译通过了,但是问题也来了,可能是图库成本太高的原因,巴发云之能免费存储100张图片,超过了就要开会员,而且,这100张是永久的一次性的,无法删除,找了很多地方也没有解决方法,于是我把图片的转发希望转到了其他的方法,直到我看到有文章说可以通过邮件的附件的方式传给我自己的邮箱,于是开始搞起。我想做一个人体红外传感器发现人体报警,同时给我手机发报警提醒,同时发送图片的设计,找了一些资料,发现巴发云正好可以满足我的要求,结合esp32-cam和人体红外传感器,很好的实现了。原创 2023-07-19 17:14:00 · 2261 阅读 · 3 评论 -
LabVIEW VISA编程笔记
①VISA的I/O控制功能适用于各种仪器类型,既包含了VXI仪器、GPIB仪器及串口仪器等各类仪器的控制操作,也包含了消息基器件、寄存器器件、存储器器件等仪器的操作,具有形式上的统一。VISA控制USB接口,该VISA地址的含义是:该仪器设备位于USB板卡0上,其制造商ID为0x0957(Agilent),型号编码为0x17A4,仪器的序列号为MY51135727。在VISA的结构中,仪器类型的不同体现在资源名称的不同,对VISA的使用者来说,不同类型仪器的使用在形式上和方法上都是一样的。原创 2022-10-09 21:15:00 · 3374 阅读 · 2 评论 -
labview信号频域分析算法
最近遇到一个使用单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。为啥用labview呢,因为LabVIEW是美国国家仪器公司(NI)的创新软件产品,其全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于G语言(Graphics Language,图形化编程语言)的测试系统软件开发平台。①在前面板,添加一个波形图控件用于显示变换前后的波形。原创 2022-10-09 16:44:24 · 8640 阅读 · 0 评论 -
labview信号时域分析算法
③为了提供测量的波形信号,选取“函数→信号处理→波形生成→正弦波形”来添加该波形,再为其频率和幅值端口创建输入控件。②切换至后面板,选取“函数→信号处理→波形测量→瞬态特性测量”来添加该测量,并为“瞬态持续期”端口创建一个显示控件。③为了提供测量的波形信号,选取“函数→信号处理→波形生成→正波波形”来添加该波形,再为频率和幅值端口创建输入控件。②切换至后面板,选取“函数→信号处理→波形测量→脉冲测量”来添加该测量,再为其输出端口添加3个显示控件。原创 2022-10-09 16:38:31 · 3179 阅读 · 0 评论 -
三轴加速度传感器的驱动编程
三轴加速度传感器可以感知三维空间坐标系中,每个方向上的重力加速度分量,据此,可以计算出当前传感器翻转后的真实角度,故加速度传感器又称倾角传感器,一般多用在智能手机、云台以及航模飞行器等设备上。原创 2022-10-08 17:08:47 · 1321 阅读 · 0 评论 -
CAN驱动程序编程
ID屏蔽位(U32),就是确定接收到的报文中的ID号、帧类型,哪些位是必须与前面设置的参数完全一致还是可不关心,如果设置成0xFFFFFFFF,表示外部发送过来的报文必须与过滤器中预期设置的参数完全一致,反之,如果设置为0x00000000,则表示前面所有的设置无效,任何报文都可以接收,过滤器呈完全放开状态,可以看出,ID屏蔽位其实就是子网掩码;发送的是携带重要数据的数据帧还是回读命令的远程帧;一般情况下,要想发送一帧报文,需要设置以下4项:输入报文ID号,如果是11位的标准帧,那么ID的范围就是0。原创 2022-10-08 16:38:12 · 3037 阅读 · 0 评论 -
labview的CAN驱动程序
比如,主节点想要获取一个温度传感器上的温度值,这个传感器节点传输数据采用的是CAN总线,即CAN的从节点,那么主节点可以先发送一个从节点能够正常接收到的ID远程帧,从节点收到之后,就可以将温度数据作为一个具有相同ID号的数据帧返回给主节点。STM32接收外部报文的流程是:当CAN总线上出现一帧报文时,首先由CAN收发器将CAN总线上的差分信号(隐性或显性电平)转换为bxCAN控制能够识别的高低电平,经STM32上的CAN RX引脚输入CAN的硬件过滤器中;其中,平时使用最多的是前两种:数据帧和远程帧。原创 2022-10-08 20:30:00 · 2654 阅读 · 0 评论 -
labview的RS232驱动程序
如果在串口初始化的时候没有开启终止符,并且要求读取的字节数小于接收缓冲区现有的字节数,那么返回的字符串长度就会等于指定读取的字节数长度,反之UART控制器会将缓冲区中所有的数据全部返回;另外,对于刚刚接触LabVIEW的新用户来说,经常会把VISA函数当成串口函数,实际上NI-VISA驱动包本质上是将整个仪器行业的通信协议(RS232、GPIB、USB、Ethernet等)封装在一起,供不同行业的工程师使用,这样可以简化仪器通信。一般情况下,在读取串口缓冲区中的数据之前,需要指定读取字节的数量。原创 2022-10-07 22:13:11 · 2826 阅读 · 0 评论 -
基于labview上位机控制的6自由度机械臂
在进行机械臂控制之前要先进行模式选择。多自由度机械臂的6个舵机分别控制爪子抓放、腕部旋转、腕部上下、肘部上下、臂部上下和臂部旋转,这些部位的舵机按照从爪子到塔台的顺序,分别通过控制线接到舵机控制板的通道上,通道编号为M6、M5、M4、M3、M2、M1,所有舵机在安装前要调整到90°。多自由度机械臂上的6个舵机都支持180°转角,舵机的转动角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM信号的周期固定为20ms(50Hz),脉宽在500~2500μs之间,脉宽和舵机的转角相对应。原创 2022-10-07 21:49:41 · 2978 阅读 · 0 评论 -
LabVIEW的编程-程序框图入门笔记
例如,若开关的边框为绿色,表示它可与Express VI(快速VI)上任意带绿色标签的输入端相连。在前面板控件中输入的数据将通过控件接线端传输至程序框图,然后进行数据的加减运算。连线板是一组与VI中的输入控件和显示控件对应的接线端,类似于文本编程语言中的函数调用参数列表。在程序框图的流程图中进行编程,可以控制和操纵在前面板上定义的输入和输出功能。程序框图对象包括接线端、子VI、函数、常量、结构和连线,连线可以在程序框图对象间传输数据。双击程序框图中的子VI,将出现该子VI的前面板窗口。原创 2022-10-07 23:15:00 · 12598 阅读 · 2 评论 -
LabVIEW编程入门笔记
在前面板窗口的空白处单击鼠标右键或者在前面板菜单中选择View→Controls,可以弹出控件选板,控件选板包括了用于创建前面板的输入控件和显示控件,如图3-5所示。图形化编程与传统语言编程的不同点在于图形化编程流程采用“数据流”的概念,打破了传统的思维模式,使得程序设计者在构思完流程图的同时也完成了程序的撰写。单击增量/减量按钮,或双击数字,输入一个新的数字,然后按回车(Enter)键,可输入或改变数值输入控件的值。布尔输入控件和显示控件用于输入和显示布尔值、布尔对象仿真开关、按钮或LED灯。原创 2022-10-07 21:30:00 · 3277 阅读 · 0 评论 -
基于LabVIEW的逻辑分析仪
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?提示:可描述问题,解决思路,解决步骤等提示:可描述题目,解题思路,解题步骤等。原创 2022-10-07 20:15:00 · 1172 阅读 · 2 评论 -
基于LabVIEW的示波器程序
对于示波器,我们能够调整时间分辨率和电压幅度分辨率,这时需要根据前面板相应的设置控件来改变波形图表时间轴的时间显示范围以及电压幅度轴的显示范围。另外,对于示波器而言,波形触发功能是一个非常重要的功能,该功能允许用户可以根据设置的触发电平、触发边沿进行相应的触发采集。因此,还需要在LabVIEW中编写能够实现触发功能的程序,本设计中的触发功能实现子VI的程序框图如图8所示。在如图8所示的程序框图中,SLOPE.VI子VI用来实现上升沿或下降沿的判断及相应边沿数据在数组中索引的输出。1 - 项目中解决的问题。原创 2022-10-07 15:21:52 · 3937 阅读 · 1 评论 -
labview温度报警系统
STM32每个芯片内部集成的温度传感器特性参数不完全相同,用户购买的My_ARM学习板可能与本节实验结果不一致。因此,建议利用该传感器测量芯片温度的相对变化,而非当前环境中的绝对温度。如果用户坚持使用STM32内部温度传感器测量绝对温度,可以按照下面的步骤先校准一下环境温度系数。1)运行本节实验程序,获取ADC1通道16上的温度传感器数据,记为adc_16。2)将一支数字温度计放置在My_ARM学习板上的STM32芯片表面,读取当前温度值,记为Temp_Thermometer(TT)。3)利用万用表原创 2022-10-06 01:47:55 · 4420 阅读 · 0 评论 -
基于物联网的智能厨房安全监测系统-上位机程序
最近遇到一个基于TCP/IP网络的远程智能物联网系统,采用Arduino Uno控制器作为下位机,采用LabVIEW作为远程监控软件,两者通过网络实现通信。0x55AA为帧头,操作码0x80为热释电传感器数据的采集,0x81为气体浓度的采集,0x82为温度采集,0x11为第一路继电器闭合,0x10为第一路继电器断开,0x21为第二路继电器闭合,0x20为第二路继电器断开,0x31为第三路继电器闭合,0x30为第三路继电器断开,0x41为第四路继电器闭合,0x40为第四路继电器断开。原创 2022-10-04 18:13:51 · 2634 阅读 · 0 评论 -
基于物联网的智能厨房安全监测系统-下位机程序
在基于物联网的智能厨房安全监测系统中,Arduino Uno控制器需要完成以下功能:1)通过W5100网络模块接收并判断命令,采集和传输温度、煤气浓度、热释电传感器的数据,并通过W5100网络模块上传给LabVIEW软件。提示:将DS18B20温度传感器的VCC和GND分别连接至Arduino Uno控制器的+5V和GND,以给DS18B20提供电源,DS18B20的DQ引脚接至ArduinoUno控制器数字引脚D2,且连接4.7kΩ的上拉电阻,因为DS18B20的DQ引脚正常工作需要添加上拉电阻。原创 2022-10-05 10:15:00 · 1382 阅读 · 0 评论 -
基于物联网的智能厨房安全监测系统-硬件部分
优快云话题挑战赛第2期参赛话题:学习笔记最近遇到一个基于TCP/IP网络的远程智能物联网系统,采用Arduino Uno控制器作为下位机,采用LabVIEW作为远程监控软件,两者通过网络实现通信。初步定为使用labview编写上位机程序进行处理。为啥用labview呢,因为LabVIEW是美国国家仪器公司(NI)的创新软件产品,其全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于G语言(Graphics La原创 2022-10-05 08:15:00 · 2542 阅读 · 0 评论 -
基于物联网的智能厨房安全监测系统-总论
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-10-04 23:15:00 · 4402 阅读 · 0 评论 -
基于labview的智能大棚监控系统-上位机
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-10-04 22:15:00 · 5456 阅读 · 2 评论 -
基于labview的智能大棚监控系统-下位机
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-10-04 21:30:00 · 1278 阅读 · 1 评论 -
单片机温湿度测量程序编程
公司有一个使用单片机多路采集温湿度的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。DHT11数字温湿度传感器,是一款含有已校准数字信号输出的温湿度复合传感器,采用专用的数字模块采集技术和温湿度传感技术,具有极高的可靠性与卓越的长期稳定性,内部包含一个电阻式感湿元件和一个NTC测温元件。DHT11的供电电压为3.3~5V,测量范围为湿度20%~90%RH,温度0~50℃,测量精度为湿度±5%RH,温度±2℃,测量分辨率为湿度1%RH,温度1℃。原创 2022-10-04 16:59:06 · 2749 阅读 · 0 评论 -
LabVIEW多路数据采集程序
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-10-04 10:15:00 · 7111 阅读 · 1 评论 -
基于labview的光强计编程
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-10-04 09:15:00 · 1000 阅读 · 0 评论 -
LabVIEW热敏电阻温度计程序
Arduino Uno是Arduino的典型控制器,拥有Arduino所有的基本功能,使用最为广泛,而且本书的应用篇和项目篇都是基于Arduino Uno来设计的,所以接下来重点介绍Arduino Uno的硬件部分,其他型号Arduino控制板硬件介绍可以参考Arduino官方网站:www.arduino.cc。利用热敏电阻和LIAT中的热敏电阻函数节点,通过Arduino Uno控制板的模拟端口采集与热敏电阻串联电阻的分压值上传给LabVIEW软件,并除以温度系数以获得温度值,实现一个温度计的功能。原创 2022-10-03 17:01:45 · 2190 阅读 · 0 评论 -
基于LabVIEW的温度计程序实现
LabVIEW程序首先通过设置的串口号与Arduino Uno控制板建立连接,然后进入While循环中,在循环中不断调用Analog Read Pin函数节点获取LM35的输出电压值,并除以LM35的比例因数0.01V/℃,最终获得温度值。利用模拟温度传感器LM35和LIAT中的模拟函数库,通过Arduino Uno控制板的模拟端口采集LM35输出的电压值上传给LabVIEW软件,并除以比例因数以获得温度值,实现一个温度计的功能。此处需要注意LM35的电源引脚的位置,一旦接反可能会烧坏LM35。原创 2022-10-03 22:30:00 · 4279 阅读 · 2 评论 -
舵机控制编程
最近遇到一个使用Arduino Uno单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。点击运行按钮,LabVIEW程序开始执行,通过舵机1和舵机2的调节设置角度旋钮,可以看到舵机1和舵机2随着角度的改变而转动,同时,舵机1和舵机2的当前角度值也随着舵机1和舵机2的转动而实时改变。点击运行按钮,LabVIEW程序开始执行,通过调节设置角度的旋钮,可以看到舵机随着角度的改变而转动,同时,当前角度值也随着舵机的转动而实时改变。原创 2022-10-03 21:15:00 · 2875 阅读 · 4 评论 -
LabVIEW数据采集卡
最近遇到一个使用stm32单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。LabVIEW程序首先通过设置的串口号与Arduino Uno控制板建立连接,然后等待事件结构,若采集键被按下,则点亮“采集中”LED灯,再调用模拟采样函数库中的Get Finite Analog Sample函数节点以设置好的采集端口、采样速率和采样点数来实现有限采样并送入波形显示控件,完成之后熄灭“采集中”LED灯,采样点数通过采样速率和采样时间计算得到;原创 2022-10-03 20:30:00 · 5997 阅读 · 0 评论 -
LabVIEW示波器编程
LabVIEW程序首先通过设置的串口号与Arduino Uno控制板建立连接,然后调用模拟采样函数库中的Continuous Acquisition On函数节点以设置的引脚和采样速率来实现连续采样,接着进入While循环并不断调用Continuous Acquisition Sample函数节点,并每次读取10个采样点送入波形显示控件。利用LIAT中的模拟采样函数库,通过Arduino Uno控制板上的模拟输入端口采集模拟信号,并上传至LabVIEW界面上显示波形,实现一个简易示波器的功能。原创 2022-10-03 16:04:01 · 1849 阅读 · 0 评论 -
labview信号处理算法先进性比较
对于n阶的回文数,其基数为10n,10n+1,…基于上述的分析和介绍,算法二VI的总体程序框图如图4所示,可见,它的功能是先生成回文数,之后再判断这些回文数是否是质数。在LabVIEW中,查看VI内存使用的一种方法如下:在前面板工具条中选择“文件”→“VI属性”,会弹出“VI属性”对话框,在“类别”下拉菜单中选择“内存使用”,界面如图6所示。具体地,首先对上述算法都建立相应的子程序,然后搭建如图5所示VI的程序框图,调用顺序结构,并在其中间一帧调用不同算法的子程序,这样就可以测试出不同算法所耗用的时间了。原创 2022-09-30 23:30:00 · 987 阅读 · 0 评论 -
labview信号处理算法笔记
由此可见,轮询的方法对回文数条件的使用是不足的,而这可能会造成判断回文数算法代码的过多运行,这在数字较大情况下是非常耗费资源的。按轮询的思路,有几处可以改进具体算法的地方:①回文数和质数的寻找顺序,由于回文数的判断比质数要简单,所以应采取先找回文数、再找其中的质数的思路,这样,算法的计算量会更小;算法是所有程序的核心和灵魂。判断回文数的算法如下:先将数值转换成字符串,得到字符串A,再将字符串A经反转字符串函数进行反转,得到字符串B,将A和B都再转换成数值a和b,然后进行比较,如果a=b,则该数即为回文数。原创 2022-09-30 22:15:00 · 1042 阅读 · 0 评论 -
labview编程笔记之事件结构
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-09-29 23:45:00 · 2437 阅读 · 0 评论 -
labview编程笔记之循环结构
for循环具有条件接线端的特性,右键单击for循环的边框,从菜单中选择“条件接线端”,就可为for循循环增添一个条件接线端,当满足该逻辑条件时或者所有循环次数执行完毕时,都可退出循环,这就为中途跳出for循环提供了方便。在循环结构边框上的鼠标右键菜单中选择“添加移位寄存器”,之后就会在循环结构左、右边框上分别出现左端子(三角号朝下)和右端子(三角号朝上),每一步循环结束后右端子便将接收到的数据传给左端子,下一步循环时左端子给出的数据即是上一步循环中右端子接收的数据。创建好的While循环如图2所示。原创 2022-09-29 22:15:00 · 5120 阅读 · 0 评论 -
labview编程笔记之条件结构
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-09-29 20:30:00 · 5816 阅读 · 0 评论 -
labview编程笔记之顺序结构
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-09-29 19:15:00 · 1901 阅读 · 0 评论 -
触发VI编程笔记
触发VI为DAQmx Trigger. vi,该VI配置一个触发器使DAQ设备完成一个特定的动作,最为常用的动作是Start Trigger(启动触发)和Reference Trigger(参考触发)。启动触发初始化一个采集或生成,参考触发则在采样集中的位置设置一个参考点,在那里触发前数据采集结束,而触发后数据采集开始。启动任务VI为DAQmx Start Task. vi,如图4-70所示,该VI显式地将一个任务转换至运行状态,在运行状态,这个任务将完成特定的采集或生成。下面介绍几个触发VI的常用实例。原创 2022-09-27 23:10:55 · 538 阅读 · 0 评论 -
DAQ助手编程笔记
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-09-27 23:00:00 · 2236 阅读 · 0 评论 -
NI-DAQmx编程技术介绍笔记
学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?原创 2022-09-27 21:30:00 · 1556 阅读 · 0 评论 -
labview采集数据编程笔记
对于多通道采集的AI Sample Channels.vi,各通道号可用英文逗号“,”隔开,或者在起始通道号之间使用英文冒号“:”表示使用序号连续的几个通道,如表示使用通道0、1、5、6、7进行采集,通道号的填写顺序规定了采集所得数据的顺序;单点采集是最简单的一种形式,系统每次只采集一个信号点,若加上循环结构控制可实现持续的单点采集,但因为VI性能受限,只适用于较低频率的采样应用,如几秒钟、几分钟甚至几小时采集一个点,常用于过程控制、生化实验等场合。博客写作背景----项目中解决的问题。原创 2022-09-27 06:00:00 · 1199 阅读 · 0 评论 -
直接访问底层设备VI学习笔记
该VI也是一个多态性的VI,用户同样可以通过VI图标的下拉菜单(多态VI选择器)选择写入数据的类型。LabVIEW中提供了两个直接访问底层设备的VI,即In Port.vi和Out Port.vi,这两个VI提供直接对I/O端口进行读写操作的功能,利用这一功能,可以实现简单的单点数据采集功能。I/O端口函数包括两个函数:读端口函数节点(In Port.vi)和写端口函数节点(Out Port.vi),这两个节点位于【函数选板】→【互连接口】→【I/O端口】子选板。原创 2022-09-27 20:15:00 · 597 阅读 · 0 评论 -
高级模拟输入VIs编程笔记
又如,如果用户需要采集某个瞬间的短时信号,如输入脉冲的响应等,也需要用到硬件触发的采集模式。为了实现功能强大、复杂的硬件触发功能,仅通过中级模拟输入VIs是不够的,还需要借助某些高级模拟输入VIs,下面介绍两个用于硬件触发设置的高级模拟Vis,AI Clock Config.vi和AI Trigger Config.vi。level输入端口:该端口用于指定模拟触发的电平,该参数只有在trigger type被设置为1(模拟触发)、5(模拟扫描时钟选通)或6(多用途模拟触发)时才是有效的。原创 2022-09-27 20:30:00 · 290 阅读 · 0 评论