C语言在测量和控制中的应用资源第6章计算机串行通信_第1页
C语言在测量和控制中的应用资源第6章计算机串行通信_第2页
C语言在测量和控制中的应用资源第6章计算机串行通信_第3页
C语言在测量和控制中的应用资源第6章计算机串行通信_第4页
C语言在测量和控制中的应用资源第6章计算机串行通信_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言在测量和控制中的应用第6章计算机串行通信Contents本章内容概览从基础概念到工程实战,系统掌握串行通信的核心知识体系。01串行通信基本概念02数据帧格式与时序03主流串口通信标准04C语言串口编程实战05通信系统设计与优化CHAPTER01串行通信基本概念从数据传输原理到通信方式的系统性认知SerialCommunication串行通信的定义与核心特点串行通信是一种按位顺序传输数据的通信方式,以牺牲传输速度为代价换取线路简化和成本降低,是测量与控制系统中外设与计算机数据交换的基础手段。DB9串口连接器实物01按位传输:通过数据信号线、地线等少量线缆逐位传输数据,每个字符一位一位发送,硬件成本远低于并行通信的多线方案02协议与物理分离:串行接口仅规定电气标准与协议规范,不涉及具体插件电缆形态,同一协议可适配DB9、端子排等多种物理连接方式03工业测控基础:传感器、称重仪表、PLC等设备与上位机的数据交互几乎全部依赖串行通信,典型速率9600~115200bps已满足需求04多协议族:按电气标准分为RS-232-C、RS-422、RS-485等协议族,不同协议在传输距离、抗干扰能力和拓扑结构上各有侧重COMMUNICATIONPROTOCOLS串行通信与并行通信对比分析并行通信以多线并发实现高速传输但受限于距离与成本,串行通信以逐位传输牺牲速率换取远距离、低成本和强抗干扰能力,后者在工业测控场景中占据绝对主导地位。并行通信特征8位或16位数据通过多条信号线同时传输,理论速率高,但需要大量线缆和连接器,硬件成本随线数线性增长高速率下线间串扰和时钟偏移问题严重,有效传输距离通常不超过2米,仅适用于机箱内部或近距离板间通信典型应用为早期打印机接口(LPT)和存储器总线,在现代工业测控系统中已基本被高速串行协议取代串行通信特征数据按位逐次传输仅需1~2根信号线,硬件结构简单、布线成本低,适合嵌入式系统的紧凑设计要求信号线数量少使线间干扰大幅降低,配合差分信号技术可实现上千米传输距离,满足工业现场远距离布线需求传输速率从600bps到数Mbps覆盖宽广范围,9600bps和19200bps是PLC与称重仪表通信中最常用的波特率配置SerialCommunication通信模式:单工、半双工与全双工串行通信按数据流向分为单工、半双工和全双工三种模式。全双工效率最高但线路成本大,半双工以时间换空间在工业多点通信中广泛采用,单工仅适用于单一数据采集场景。单工模式数据仅沿一个方向传输,发送端和接收端角色固定不可互换,只需一根数据线和一根地线即可工作典型应用为传感器到采集卡的单向数据上报,如温度传感器持续向控制器发送测量值单向固定半双工模式同一传输线支持双向传输但不能同时收发,通过收发切换电子开关决定方向,切换产生时间延迟两线制RS-485是最典型实现,主机依次轮询各从机,从机仅在被呼叫时响应线路利用率低于全双工但节省一半线缆,工业长距离多点布线场景下成本优势显著RS-485全双工模式独立的发送线(TXD)和接收线(RXD)支持同时收发,无切换延迟,传输效率在所有模式中最高RS-232以三条线实现全双工点对点通信,计算机与仪表间的调试交互即依赖此模式远程命令控制与状态监控需实时双向通信时,全双工是唯一可行选择RS-232CHAPTER02数据帧格式与时序起始位、数据位、校验位、停止位的结构解析与波特率计算SERIALASYNCPROTOCOL串行通信数据帧结构详解串行异步通信以字符为单位组织数据帧,每帧由起始位、数据位、校验位和停止位顺序构成,收发双方必须严格统一帧格式配置才能保证数据正确解析。示波器观测串口信号波形实拍011bit起始位固定为低电平,标志字符传输开始;接收方通过检测下降沿触发采样时序,空闲时线路保持高电平025~8bit数据位承载实际字符信息,宽度可配置为5~8位,按小端模式从最低位逐位发送;ASCII常用7位,二进制常用8位03Optional校验位可选错误检测机制,奇校验要求"1"总数为奇数,偶校验为偶数,通过逐位异或或同或运算实现041~2bit停止位固定为高电平,可选1、1.5或2位长度,为接收方留出数据拼装和缓冲区转存时间,其后空闲位长度不定SERIALCOMMUNICATION波特率概念、计算与工程配置波特率定义每秒传输的二进制位数,是串行通信速率的核心度量;实际字符传输速率需扣除帧开销,收发双方波特率误差须控制在2%以内才能保证可靠通信。单位与常用值波特率单位为bps(每秒比特数),常用值包括600、2400、9600、19200、38400、115200等,每一位的信号宽度等于波特率的倒数。115200bps高速档字符速率计算实际字符速率等于波特率除以每帧总位数,如9600bps下每帧10位(1起始+8数据+1停止)时,字符速率为960字符/秒。960字符/秒工程常用配置PLC/PC与称重仪表通信最常用9600bps和19200bps,仪表与大屏幕通信因数据量小通常采用600bps,高速调试场景可达115200bps。9600bps主流时钟同步要求收发双方必须配置完全相同的波特率,时钟误差超过2%会导致采样点偏移造成数据错误,高精度场景需使用外部晶振校准。±2%误差上限ComputerScience·ErrorDetection奇偶校验原理与错误检测机制奇偶校验通过在数据位后附加1位校验位使"1"的总数满足预设奇偶性,能检测传输中的单比特错误,但无法检测偶数位翻转且不具备纠错能力。01奇偶校验原理:校验位使数据位与校验位中"1"的总数为奇数(奇校验)或偶数(偶校验),通过对数据逐位进行异或或同或运算实现。02ASCII校验位应用:标准ASCII码最高位b7用作校验位,发送方根据数据位中"1"的个数决定填0或1,接收方重新计算并比对。03检测局限性:仅能检测奇数个比特翻转,2位同时翻转时校验通过但数据已错。高可靠性场景需叠加CRC校验。奇偶校验计算示例(ASCII'A'=0x41)校验类型数据位(b6~b0)'1'的个数校验位(b7)总'1'数传输字节奇校验1000001213(奇数)✓0xC1偶校验1000001202(偶数)✓0x41无校验10000012——7-bit同一字符在不同校验模式下传输字节不同,接收方须使用与发送方相同的校验方式才能正确检测错误SERIALCOMMUNICATIONUART异步通信的时序与同步机制UART通信不依赖独立时钟线,而是通过起始位下降沿触发接收时序,配合预设波特率在每位中间时刻采样,以"16倍过采样+多数表决"策略降低时钟漂移影响。01起始位触发:UART无独立时钟线,发送方拉低数据线产生起始位(低电平),接收方检测下降沿后启动内部计时器,按预设波特率周期逐位采样数据。下降沿触发02过采样策略:接收方通常使用16倍波特率的采样时钟进行过采样,在每位的第7~9个采样点取多数表决值,有效降低因时钟偏移导致的采样误判。16×过采样03数据位约定:数据位按小端模式从LSB开始传输,双方必须在通信前统一数据位宽度(5~8位)、校验方式和停止位长度,否则数据解析将完全错乱。LSB优先04停止位复位:停止位发送逻辑"1"使线路回到空闲高电平状态,接收方据此确认一帧接收完成并触发数据拼装与缓冲区转存,随后等待下一个起始位。空闲高电平UART串口通信开发板实验实拍·电路板与杜邦线连接Chapter03主流串口通信标准RS-232、RS-422、RS-485的电气特性、接口定义与工程选型SERIALINTERFACERS-232标准:电气特性与接口定义RS-232是最广泛使用的串行接口标准,以全双工点对点方式工作,采用单端高电平信号(±3~15V),传输距离限15米以内、最高波特率19200bps,DB9连接器为其典型物理接口。DB9串口连接器公头与母头实物对比01RS-232由EIA于1962年制定,采用单端信号传输:逻辑'1'为-3V~-15V,逻辑'0'为+3V~+15V,高电平设计使接口芯片容易因静电或过压损坏02全双工模式需三条线:TXD(发送)、RXD(接收)、GND(信号地),仅支持点对点通信,最大传输距离约15米,最高波特率19200bps03DB9连接器为最常见物理接口,2号脚RXD、3号脚TXD、5号脚GND为必用引脚,公头与母头引脚定义呈镜像关系,接线时须特别注意04抗干扰能力差是RS-232的主要局限,单端信号无共模抑制能力,在工业现场强电磁环境中误码率显著上升,不适合长距离或多点通信INDUSTRIALBUSRS-485标准:差分传输与多点通信RS-485采用差分信号传输实现强抗干扰与长距离通信(>1200m),支持一条总线挂接32个节点的多点拓扑,以半双工两线制为主流接线方式,是工业测控系统首选串行接口。RS-485工业总线接线端子排与现场布线差分信号传输:A(Data+)和B(Data-)两线电压差表示数据,共模干扰被有效抑制,传输距离可达1200米以上。标准由EIA于1983年制定。1200m+多点通信拓扑:同一总线最多挂接32个节点,一般采用主从架构——一个主机依次轮询多个从机,从机仅在收到本机地址时响应。32Nodes半双工两线制:收发共用A/B两线不能同时进行,每端通过收发切换开关控制方向,切换过程会产生微秒级时间延迟。Half-Duplex终端电阻匹配:通信距离超过100米时需在总线首尾两端各加120Ω电阻,消除信号反射,阻抗不连续和阻抗不匹配是反射两大成因。120ΩSERIALCOMMUNICATIONRS-422标准与三大串口标准工程选型RS-422以四线差分实现全双工长距离通信但节点数受限,工程实践中常被RS-485替代;选型时需综合考量通信距离、节点数量、双工需求和抗干扰要求。RS-422标准特征01采用四线制差分传输(TX+/TX-和RX+/RX-),支持全双工通信,传输距离可达1200米,最高速率10Mbps1200m·10Mbps02拓扑为一主多从结构,最多10个从机节点,从机只能接收主机发送的数据,不支持从机之间的直接通信10节点03在现代工程中较少单独使用,其全双工优势在多数工业控制场景中并非刚需,常被RS-485四线制方案替代RS-485替代三大标准选型决策01RS-232适合15米内点对点短距离通信,如PC与单台仪表调试,成本最低但抗干扰差,不适合工业现场长距离布线RS-232·≤15m02RS-485两线制适合长距离多点通信,最多32节点,半双工模式在轮询架构下效率足够,是工业测控首选方案RS-485·32节点03RS-422/RS-485四线制适合需要全双工且距离超过15米的场景,如高速数据采集系统,但布线成本和复杂度较高四线制全双工SERIALINTERFACERS-232与RS-485关键参数对比RS-232与RS-485在信号方式、传输距离、节点数量和拓扑结构上存在根本差异,前者适合短距点对点调试,后者适合长距离多点工业组网。技术参数RS-232RS-485(两线制)信号方式单端信号(±3~15V)差分信号(A/B线电压差)通信方式全双工(TXD/RXD独立)半双工(收发共用A/B线)最大传输距离约15米约1200米最高波特率19,200bps10Mbps(短距)节点数量1对1(点对点)1对32(多点总线)抗干扰能力差(无共模抑制)强(差分共模抑制)接线数量3线(TXD/RXD/GND)2线(A/B)+GND终端电阻不需要>100m时需120Ω信号传输方式的根本差异决定适用场景:RS-232单端信号抗干扰弱但实现简单,RS-485差分信号抗干扰强但电路更复杂传输距离差距近两个数量级(15mvs1200m),使RS-485在工业现场大范围布线中具有不可替代的优势计算机通常自带RS-232串口,连接RS-485设备需使用串口转换器或安装转换卡,是常见的硬件桥接方案CHAPTER04C语言串口编程实战从寄存器配置到收发程序编写的完整开发流程SerialCommunication串口C语言编程概述与开发流程嵌入式串口C语言编程需依次完成硬件平台确认、通信协议约定、寄存器架构理解和收发模式选择四个准备步骤,系统化流程是编写可靠通信程序的前提。硬件平台确认不同MCU的串口外设寄存器定义差异显著,开发前须查阅芯片手册明确USART基地址、寄存器偏移和位域定义STM32·51·AVR通信协议约定收发双方必须在编程前统一波特率、数据位宽度、校验方式和停止位长度,参数直接写入串口控制寄存器对应位域9600·8N1外设架构理解每个USART包含状态寄存器SR、数据寄存器DR、波特率寄存器BRR和控制寄存器CR1–CR3,编程即按位操作SR·DR·BRR·CR收发模式选择轮询方式实现简单但CPU占用高,中断方式效率更优,DMA方式适合大批量数据传输场景Poll·IRQ·DMAUSARTConfigurationUSART初始化:寄存器配置关键步骤STM32USART初始化需依次完成时钟使能、GPIO复用配置、波特率分频计算和控制寄存器设置四个步骤,每个步骤对应特定寄存器的精确位域操作。时钟使能通过RCC_APB2ENR开启USART1与GPIOA时钟,外设默认时钟关闭,未使能则寄存器写入无效RCC_APB2ENRGPIO配置TXD(PA9)复用推挽输出,RXD(PA10)浮空输入,确保信号电平与USART外设匹配PA9·PA10波特率设置BRR=Fclk/(16×Baud),72MHz配115200bps时分频值39.0625,整数39与小数1分别写入高低位BRR·39.0625控制寄存器CR1设置8位数据、无校验、1停止位,置位TE/RE使能收发,最后置位UE启动USARTCR1·TE/RE/UEUSARTDataTransmission数据发送编程:流程控制与标志位管理串口数据发送通过向DR寄存器写入字节并轮询TXE标志位实现逐字节传输,多字节发送需封装循环函数,RS-485方向切换须等待TC标志确认物理发送完成。01发送单字节:向USART_DR寄存器低8位写入数据,硬件自动添加起始位、校验位和停止位后通过TXD引脚按位串行移出02TXE标志位:置1表示DR中数据已转移到发送移位寄存器,可写入下一字节,但不代表物理引脚已完成传输03TC标志位:置1表示移位寄存器中数据已完全从引脚发出,RS-485半双工场景中必须等TC置位后才能切换为接收模式04多字节发送封装:循环调用单字节发送函数,每次写入前轮询TXE标志,字符串发送以'\0'为终止条件,数组发送以长度为计数上限嵌入式串口调试工作台·C语言编程场景USARTRECEIVE数据接收编程:轮询与中断两种实现方式串口数据接收需处理数据到达时机不确定的问题,轮询方式简单但CPU占用高,中断方式效率更优;两类方式均需正确处理RXNE标志位和溢出错误以防止接收锁死。轮询接收主循环中检测SR寄存器RXNE位,为1时读取DR获取数据,读DR操作自动清除RXNE标志,实现简单但持续占用CPU周期RXNE中断接收使能USART_CR1的RXNEIE位并配置NVIC中断优先级,数据到达时硬件触发中断服务函数,在中断中读取DR并保存到缓冲区NVIC溢出错误处理若DR中旧数据未被读走而新数据已到达,ORE标志置位,在部分STM32型号中会导致接收锁死,须依次读SR和DR清除错误ORE帧错误检测当停止位未检测到预期高电平时FE标志置位,通常由波特率不匹配或线路干扰引起,程序应丢弃该帧数据并记录错误计数FEArchitecture中断驱动的环形缓冲区接收架构环形缓冲区通过写指针和读指针解耦中断接收与主循环处理的速度差异,中断函数仅做数据搬运,主循环按需消费,是嵌入式串口接收程序的标准工程架构。环形缓冲区数据结构白板讲解示意01环形缓冲区定义:固定大小数组配合写指针与读指针,指针到达数组末尾时回绕到起始位置,形成逻辑环形结构buf[BUF_SIZE]02中断服务函数:检测到RXNE后读取DR写入缓冲区并移动写指针,全程不超过5–10条指令确保中断响应及时ISR·5–10instructions03主循环消费:比较读写指针判断新数据,从缓冲区读取并移动读指针,数据解析与业务逻辑均在主循环完成write_idx≠read_idx04溢出保护:写指针下一位置等于读指针时缓冲区满,ISR中丢弃新数据并递增溢出计数器,便于诊断通信瓶颈(write+1)%SIZE==readEmbeddedSerialProgrammingC语言位操作在串口寄存器编程中的应用嵌入式串口编程的核心技能是C语言位操作——通过置位、清位、读取和位域写入四种模式精确控制硬件寄存器,位操作错误是嵌入式开发中最常见的bug来源。01置位操作REG|=(1<<n)将寄存器第n位设为1而不影响其他位,常用于使能某项功能。如USART_CR1|=(1<<13)使能USART外设。02清位操作REG&=~(1<<n)将第n位清0,常用于关闭功能或清除标志位。如USART_CR1&=~(1<<12)将数据位设为8位模式。03位读取(REG>>n)&1提取第n位的值用于条件判断。如if((USART_SR>>5)&1)检测RXNE标志位以判断是否有新数据到达。04位域写入REG=(REG&~MASK)|(val<<offset)先掩码清除目标位域再写入新值。如波特率寄存器BRR的分数部分需先清低4位再写入计算值。STM32·USART·DMADMA方式串口传输:高效大数据量通信DMA方式让串口数据传输绕过CPU直接在内存与外设间搬运,消除了频繁中断的开销,适合高速ADC数据上传等大数据量场景,STM32USART1对应DMA1通道4/5。DMA核心原理DMA控制器接管总线控制权,在内存地址和外设数据寄存器之间自动搬运数据,CPU仅在传输开始和完成时参与,中间过程完全零开销。零CPU开销STM32DMA配置USART1_TX使用DMA1_Channel4(内存→外设),USART1_RX使用DMA1_Channel5(外设→内存),需设置外设地址、内存地址、传输方向和数据宽度。Channel4/5发送流程将待发数据放入内存缓冲区,配置DMA源地址为缓冲区首地址、目标地址为&USART_DR、传输长度为字节数,启动后硬件自动逐字节发送。Buffer→DMA→USART_DRDMAvs中断对比中断方式每字节触发一次ISR,115200bps下每秒约11,520次中断;DMA方式仅在传输完成时产生一次中断,CPU占用率大幅降低。99%CPU占用降低CHAPTER05通信系统设计与优化从抗干扰措施到Modbus协议的工程实践方法论ProtocolBridgeRS-232与RS-485转换方案与硬件桥接计算机自带RS-232而工业设备多用RS-485,工程中通过协议转换器实现信号电平和拓扑结构的桥接,光电隔离型转换器是工业现场抗干扰的必备选择。工业级USB转RS-485转换器·金属外壳·光电隔离转换需求背景:PC/笔记本通常仅配备RS-232或USB接口,而工业现场仪表、PLC和传感器普遍采用RS-485总线,两者之间必须通过转换器桥接RS-232转RS-485:内部集成电平转换芯片,将单端信号转为差分信号并自动管理半双工收发方向切换,选型须确认波特率范围和最大节点数USB转RS-485方案:现代笔记本无串口时的首选,内部集成USB转串口芯片(CH340/FT232)加RS-485收发器两级转换,需安装对应驱动程序光电隔离的重要性:工业现场地电位差和浪涌可能损坏设备,隔离型转换器通过光耦切断电气连接,耐压可达2500V,是强电磁环境下的必备配置SerialCommunication工业现场串口通信抗干扰措施工业电磁环境下串口通信可靠性需硬件和软件双重保障:硬件以差分信号、屏蔽双绞线、终端电阻和光电隔离构建物理防线,软件以CRC校验、超时检测和重试机制确保数据完整性。硬件抗干扰措施差分信号传输:选用RS-485从源头抑制共模干扰,配合屏蔽双绞线并确保屏蔽层单端接地,避免地环路引入额外噪声终端电阻匹配:通信距离超100米时在总线两端加120Ω终端电阻消除信号反射,长距离可加中继器扩展覆盖光电隔离保护:关键节点使用隔离型转换器切断地电位差和浪涌传导,隔离耐压达2500V以上保护设备软件抗干扰措施CRC-16校验:数据帧嵌入校验码,接收方重新计算并比对,不匹配则丢弃该帧并请求重发超时检测机制:设置帧接收超时定时器如50ms,规定时间内未收到完整响应则判定失败并自动进入重试三次重试策略:首次失败后随机退避重试,连续3次失败上报通信故障告警,防止偶发干扰导致系统误判IndustrialProtocolModbusRTU协议:工业串口通信的应用层标准ModbusRTU是工业串口通信最广泛使用的应用层协议,以主从架构、简洁的帧结构和明确的寄存器寻址方式成为仪表通信的事实标准。01帧结构:从机地址(1B)+功能码(1B)+数据域(NB)+CRC-16校验(2B),帧间以3.5个字符时间的静默间隔分隔02功能码:03H读保持寄存器、04H读输入寄存器、06H/10H写寄存器,覆盖95%以上数据交互需求03通信流程:主机发送请求帧→从机匹配地址后处理→返回响应帧;异常时返回功能码+0x80和异常码04C语言实现:先填充地址和功能码,写入寄存器数据,追加CRC-16校验码;接收时逐字节存入缓冲区并检测帧间静默ModbusRTU常用功能码与帧格式示例功能码功能描述请求帧格式示例03H读保持寄存器地址+03+起始地址+寄存器数+CRC010300000001CRC04H读输入寄存器地址+04+起始地址+寄存器数+CRC010400000002CRC06H写单个寄存器地址+06+寄存器地址+写入值+CRC0106000100FFCRC10H写多个寄存器地址+10+起始地址+寄存器数+字节数+数据+CRC01100000000204D1D2D3D4CRCModbusRTU以简洁的功能码体系覆盖读写寄存器的核心需求,CRC-16校验确保工业环境下的数据完整性DataIntegrity·CRCCRC-16校验原理与C语言实现方法CRC-16通过多项式除法生成16位校验码附加在数据帧尾部,接收方验证全帧CRC结果是否为0来判断数据完整性;C语言实现有查表法(高速)和逐位计算法(省空间)两种策略。01多项式与运算规则CRC-16/Modbus多项式为x¹⁶+x¹⁵+x²+1(即0xA001),初始值0xFFFF,对数据帧每字节进行8次移位运算,最低位为1时与多项式异或。0xA001·0xFFFF02查表法实现预计算256项CRC查找表(占512BROM),运行时每字节一次查表+异或即可完成,处理速度约2~5个CPU周期/字节,适合高性能场景。2~5cycles/byte03逐位计算法无需预存表,每字节8次循环移位并条件异或,代码仅约15行C代码,适合Flash空间紧张的小型单片机,代价是处理速度约为查表法的1/8。~15lines·1/8speed04Modbus帧CRC验证接收方对包括CRC在内的完整帧计算CRC,结果应为0x0000(非0则数据有误),验证通过后方可提取数据域内容进行业务处理。verify→0x0000SERIALDEBUG串口通信常见故障诊断与排除方法串口通信故障可归纳为无数据、乱码、丢包和方向切换四类典型问题,系统化排查应从物理连接、参数配置、抗干扰措施和软件逻辑四个层面逐步定位根因。01·PHYSICAL物理层故障排查完全无数据:检查TXD/RXD是否交叉连接(A-TXD→B-RXD)、GND是否共地、线缆通断,RS-485还需确认A/B线极性未反接RS-485多节点异常:逐一断开从机排查节点短路或地址冲突,确认终端电阻仅在总线两端安装而非每个节点都加抗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论