(合同制定方法)单片机与上位机通信协议的制定

合集下载

单片机与外部设备的通信协议解读与应用实践

单片机与外部设备的通信协议解读与应用实践

单片机与外部设备的通信协议解读与应用实践单片机是指在一个芯片上集成了中央处理器、存储器、输入输出设备和通信设备等功能的微型计算机系统。

它广泛应用于各种电子设备和嵌入式系统中,实现对外部设备的控制和数据传输。

为了实现单片机与外部设备之间的通信,需要采用一种通信协议,以确保数据的可靠传输和正确解析。

本文将对常见的单片机通信协议进行解读,并结合实例进行应用实践。

一、串行通信协议串行通信协议是一种将数据位逐位地传输的通信方式,常见的串行通信协议包括UART、SPI和I2C等。

1. UART(通用异步收发传输)UART是一种通用的异步串行通信协议,用于单片机与外部设备之间的数据传输。

UART使用起始位、数据位、校验位和停止位来组成一个完整的数据帧。

通过波特率的设置,可以实现不同的数据传输速率。

UART通信协议简单易用,广泛应用于各类串行设备间的通信。

2. SPI(串行外设接口)SPI是一种同步串行通信协议,用于连接单片机与外部设备,例如存储器、传感器等。

SPI协议使用一个主设备和一个或多个从设备之间的全双工通信方式。

通信过程中,主设备通过时钟信号控制数据的传输,从设备通过选择信号确定通信目标。

SPI通信速度较快,适用于对速度要求较高的应用场景。

3. I2C(串行外设接口)I2C是一种双线制串行通信协议,用于各种设备间的通信,例如传感器、显示器等。

I2C通信协议使用两根总线线路:串行数据线(SDA)和串行时钟线(SCL)。

通过主设备发出的时钟信号控制数据的传输。

I2C协议具有多设备共享同一条总线的特点,适用于多个设备之间交互数据的场景。

二、并行通信协议并行通信协议是一种同时传输多个数据位的通信方式,常见的并行通信协议有8位并行、16位并行和32位并行等。

并行通信协议在数据传输速度上具有明显优势,但在布线和硬件接口上相对复杂,因此一般适用于短距离和高速数据传输的场景。

三、无线通信协议随着无线通信技术的发展,越来越多的单片机应用采用无线通信协议与外部设备进行数据传输。

上位机协议书

上位机协议书

上位机协议书甲方(上位机方):_____________________地址:_________________________________法定代表人:__________________________联系电话:__________________________乙方(下位机方):_____________________地址:_________________________________法定代表人:__________________________联系电话:__________________________鉴于甲方作为上位机方,拥有对下位机进行控制、数据交换和通信的能力;乙方作为下位机方,愿意接受甲方的控制并与之进行数据交换和通信。

为明确双方权利义务,经双方协商一致,特订立本协议。

第一条协议目的本协议旨在规定甲方作为上位机方与乙方作为下位机方之间的合作关系,确保双方在技术、数据交换、通信等方面的合作顺利进行。

第二条合作内容1. 甲方负责提供上位机软件及相关技术支持,确保上位机软件能够与乙方的下位机进行有效连接和通信。

2. 乙方负责提供下位机硬件设备,并保证设备的正常运行,确保能够与甲方的上位机软件进行数据交换和通信。

3. 双方应共同维护通信协议的稳定性和安全性,确保数据传输的准确性和完整性。

第三条权利与义务1. 甲方有权对乙方的下位机进行远程控制和管理,但不得干预乙方的内部事务。

2. 乙方有权要求甲方提供必要的技术支持和维护服务,以保证下位机的正常运行。

3. 甲方有义务保证上位机软件的安全性,防止任何可能的数据泄露或被非法访问。

4. 乙方有义务保证下位机的安全性,防止任何可能的数据泄露或被非法访问。

第四条数据保密1. 双方应对在合作过程中获取的对方商业秘密和技术秘密予以保密,未经对方书面同意,不得向第三方披露。

2. 双方应采取一切必要措施,保护合作过程中产生的数据不被泄露。

第五条违约责任1. 如一方违反本协议规定,应承担违约责任,并赔偿对方因此遭受的一切损失。

单片机和上位机协议

单片机和上位机协议

单片机和上位机协议一、引言随着科技的快速发展,单片机在各个领域得到了广泛的应用。

而单片机与上位机之间的通信协议也成为了重要的研究方向。

本文将探讨单片机与上位机之间的通信协议,包括协议的基本原理、常见的协议类型以及它们的应用场景等。

二、单片机与上位机之间的通信协议基本原理单片机与上位机之间的通信协议是为了实现两者之间的数据交换和通信而设计的。

协议的基本原理是通过一定的规则和约定,实现数据的传输和解析。

常见的单片机与上位机通信协议包括串口通信、USB通信、以太网通信等。

其中,串口通信是最常见和简单的通信方式。

它通过串口线将单片机与上位机连接起来,通过发送和接收数据来实现通信。

串口通信具有成本低、易于实现等优点,广泛应用于各个领域。

三、常见的单片机与上位机通信协议类型1. 串口通信协议串口通信协议是最常见和简单的通信方式。

它使用串口线将单片机与上位机连接起来,通过发送和接收数据来实现通信。

常见的串口通信协议包括RS232、RS485等。

RS232是一种标准的串行通信接口,广泛应用于计算机、工业自动化等领域;RS485是一种多点通信协议,支持多个设备同时通信,适用于工业控制系统等应用场景。

2. USB通信协议USB通信协议是一种高速、可靠的通信方式。

它通过USB接口将单片机与上位机连接起来,实现数据的传输和通信。

USB通信协议具有带宽大、速度快等优点,广泛应用于外设设备、嵌入式系统等领域。

常见的USB通信协议包括USB1.1、USB2.0、USB3.0等。

3. 以太网通信协议以太网通信协议是一种广域网通信协议,它通过以太网接口将单片机与上位机连接起来,实现数据的传输和通信。

以太网通信协议具有传输速度快、可靠性高等优点,广泛应用于局域网、互联网等领域。

常见的以太网通信协议包括TCP/IP、UDP等。

四、单片机与上位机通信协议的应用场景单片机与上位机通信协议在各个领域都有着广泛的应用。

在工业控制领域,单片机与上位机通信协议被用于监控系统、物联网等方面。

单片机通讯协议

单片机通讯协议

单片机通讯协议单片机通讯协议是指单片机与其他设备之间进行数据交互所需要遵循的规则和约定。

通讯协议的定义可以使不同的设备之间能够进行正确的数据传输,确保数据的准确性和完整性。

单片机通讯协议可以有很多种,例如I2C、SPI、UART等。

这些通讯协议在不同的应用场景中有着不同的特点和优势。

以I2C通讯协议为例,I2C是一种串行通信协议,可以在一根数据线(SDA)和一根时钟线(SCL)上进行双向通信。

在I2C通讯中,一般会有一个主设备(例如单片机)和多个从设备(例如传感器、LCD等)。

I2C通讯协议规定了数据的传输格式和命令的定义,以及通信的时序。

在I2C通讯中,主设备可以向从设备发送读或写命令,从设备根据命令执行相应的操作,并返回数据给主设备。

SPI通讯协议是一种基于主从结构的串行通信协议,可以实现高速数据传输。

在SPI通讯中,通常会有一个主设备和多个从设备。

主设备通过片选信号(CS)选择与之通信的从设备,并通过时钟信号(CLK)进行数据传输。

UART通讯协议是一种标准的串行通信协议,可以在一根数据线(TX)和一根接收线(RX)上进行双向通信。

在UART通讯中,数据的传输是通过字符的形式进行的,每个字符由起始位、数据位、校验位和停止位组成。

单片机通讯协议的选择需要根据具体的应用场景和需求来确定。

例如,I2C通讯协议适用于需要连接多个从设备的场景,SPI通讯协议适用于需要高速数据传输的场景,UART通讯协议适用于需要简单、可靠的数据传输的场景。

在实际应用中,单片机通讯协议的实现一般需要编写对应的驱动程序或库函数。

这些驱动程序或库函数可以提供给开发者使用,简化了通讯协议的实现过程。

总之,单片机通讯协议是实现单片机与其他设备之间数据交互的重要规则和约定。

在选择通讯协议时,需要考虑到具体的应用场景和需求,以及通讯速度、可靠性和复杂度等因素。

通过合理选择和实现通讯协议,可以提升单片机与其他设备之间的数据传输效率和可靠性。

32单片机通信协议

32单片机通信协议

32单片机通信协议32单片机通信协议本协议由以下双方共同制定并遵守:甲方:地址:法定代表人:联系电话:电子邮件:乙方:地址:法定代表人:联系电话:电子邮件:一、基本信息1. 本协议的目的是规定甲乙双方在32单片机通信中的权利和义务,以确保通信的有效性和安全性。

2. 本协议具有法律效力,双方应遵守中国相关法律法规。

二、各方身份、权利、义务、履行方式、期限、违约责任1.甲方身份:甲方是32单片机通信的使用者。

2.甲方权利:在使用32单片机通信的过程中,甲方有权要求乙方保证通信的顺利进行,并提供必要的技术支持和帮助。

3.甲方义务:甲方应按照32单片机通信的要求进行使用,并承担由于自身原因引起的通信故障和其他后果的责任。

4.乙方身份:乙方是32单片机通信的提供者。

5.乙方权利:乙方有权要求甲方按照本协议规定进行使用,并有权采取措施保障通信的安全、稳定和有效。

6.乙方义务:乙方应提供可靠、准确的技术支持和服务,保障32单片机通信的正常运行,并承担由于自身原因引起的通信故障和其他后果的责任。

7.履行方式:甲乙双方应通过书面或电子邮件等方式确认通信细节和相关事项。

8.期限:本协议自甲乙双方签署之日起生效,有效期为协议期限。

9.违约责任:如甲乙双方任何一方违反本协议的规定,未能履行相关义务,给对方造成损失的,应承担相应的法律责任。

三、冲突解决在履行本协议过程中,如发生任何争议,应通过友好协商解决。

如不能协商解决的,应向当地法院提起诉讼。

四、附则1.本协议可以由双方共同协商修改,修改内容应经过双方书面确认生效。

2.本协议与中国相关法律法规不一致的,依照中国法律法规的规定执行。

3.本协议未尽事宜,由双方协商处理。

51单片机通讯协议书

51单片机通讯协议书

51单片机通讯协议书甲方(以下简称甲方):地址:联系电话:乙方(以下简称乙方):地址:联系电话:鉴于甲方需开发一款基于51单片机的通讯设备,乙方具备相应的技术能力和经验,双方经友好协商,就51单片机通讯协议的制定与实施达成如下协议:第一条协议目的本协议旨在明确甲方与乙方在51单片机通讯协议开发过程中的权利、义务和责任,确保通讯协议的顺利制定和实施。

第二条协议范围1. 本协议涵盖51单片机通讯协议的制定、测试、优化及最终交付。

2. 乙方应根据甲方的技术要求和标准,开发符合甲方需求的通讯协议。

第三条技术要求1. 乙方应保证所开发的通讯协议满足甲方提出的技术参数和性能指标。

2. 通讯协议应支持至少两种以上的通讯方式,包括但不限于串行通讯、并行通讯等。

3. 乙方应确保通讯协议具有良好的稳定性和兼容性。

第四条交付成果1. 乙方应向甲方提供完整的通讯协议文档,包括但不限于协议说明、接口定义、数据格式等。

2. 乙方应提供通讯协议的源代码,并确保代码的可读性和可维护性。

3. 乙方应提供通讯协议的测试报告,包括测试环境、测试方法和测试结果。

第五条知识产权1. 乙方开发的通讯协议及其源代码的知识产权归甲方所有。

2. 乙方应保证所开发的通讯协议不侵犯任何第三方的知识产权。

第六条保密条款1. 乙方应对在协议开发过程中知悉的甲方商业秘密和技术秘密负有保密义务。

2. 未经甲方书面同意,乙方不得向任何第三方披露、提供或允许第三方使用甲方的商业秘密和技术秘密。

第七条违约责任1. 如乙方未能按照本协议约定的时间和要求完成通讯协议的开发,甲方有权要求乙方承担违约责任。

2. 如乙方开发的通讯协议侵犯了第三方的知识产权,乙方应负责解决相关纠纷,并赔偿甲方因此遭受的一切损失。

第八条协议变更和终止1. 本协议的任何变更或补充均需双方协商一致,并以书面形式确认。

2. 如一方严重违反本协议,另一方有权书面通知对方终止本协议。

第九条争议解决本协议在履行过程中如发生争议,双方应首先通过友好协商解决;协商不成时,任何一方均可向甲方所在地人民法院提起诉讼。

单片机与上位机通信协议的制定解析

单片机与上位机通信协议的制定解析

单片机与上位机通信协议的制定单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定!上行协议,即由单片机向上位机发送数据。

下行协议,即由上位机向单片机发送数据。

而通信协议又要分固定长度和不定长度两种本文所介绍的协议属于简单的固定字长的通信协议!下行协议由四个字节构成上表是简单的上位机对单片机的控制指令下述函数是C艸封装的串口通信类中的发送函数的封装public void SerSe ndCommu(byte orderDef, byte data)// 参数1为命令字,参数二为要发送的数//据,需要时可直接调用Byte[] BSe ndTemp = new Byte[SEND_LENTH];BSe ndTemp[O] = PRE;BSe ndTemp[1] = orderDef;BSe ndTemp[2] = data;BSe ndTemp[3] = END; this.serialPort1.Write(BSendTemp, 0, SEND_LENTH);}下位机中用中断方式接收字符,本文用的是GCC语言,下面是串口接收数据中断ISR(USART_RXC_vect) 〃串口接收中断{un sig ned char status,data;status = UCSRA; //** 首先读取UCSRA勺值,再读取UDR fi,顺序不能颠倒,否则读取UDR后的UCSRA勺//值即会改变**data = UDR;if(!Uart_RecvFlag)〃判断缓存中的数据是否读完,读完则接收指令{if((status&( (1<<FE)|(1<<PE)|(1<<DOR)))==0){rx_buffer[rx_cou nter]=data;rx_co un ter++;switch(rx_cou nter){case 1:if(data!=USART_BEGIN_STX)rx_co un ter=0;break;case 4:rx_co un ter=0;if(data==USART_END_STX)Uart_RecvFlag=1;break;}}}在单片机主循环程序的最前部分进行指令译码if(Uart_RecvFlag)〃接收到命令{ _switch(rx_buffer[1]){ _case OxAA://单片机状态命令控制;ucWorkStatue=rx_buffer[2];〃指令数据break;case OxDD://PWM值修改指令OCR2=rx_buffer[2];break;case 0xFF://初始温度设定break;} Uart_RecvFlag=0;} _//随后进行执行指令switch(ucWorkStatue) {case 1:// 空闲模式break;case 2://测量模式,但不输出break;case 3://测量模式,由串口输出break; case 4://PWM输出测试break;default:break;}这样就可以利用串口对单片机进行在线命令控制了;上行协议的制定!和下行协议基本一致!在AVR单片机程序中定义了串口通信输出缓冲区,缓冲区的字长正好为协议的长//串口发送缓冲区变量声明volatile un sig ned char tx_buffer[TX_BUFFER_SIZE];〃定义串口发送缓冲区volatile unsigned char tx_wr_index=0,tx_rd_index=0,tx_counter=0;//rx_wr_index 针,rx_rd」ndex 读指针,rx_counter 缓冲区数据个数写指//USART发送函数void USART_Transmit(unsigned char data)// 发送数据函数{while(tx_counter==TX_BUFFER_SIZE);// 输出缓冲区满,等待asm("cli");if(tx_counter||((UCSRA & DATA_REGISTER_EMPTY)==0)){tx_buffer[tx_wr_index]=data;if(++tx_wr_index==TX_BUFFER_SIZE)tx_wr_index=0;++tx_counter;}elseUDR = data;asm("sei");}// 发送中断服务程序ISR(USART_TXC_vect)//USAR■发送数据中断{if(tx_counter){--tx_counter;UDR=tx_buffer[tx_rd_index]; if(++tx_rd_index==TX_BUFFER_SIZE){tx_rd_index=0;}}}在C#编写的上位机中,利用串口接收事件响应方法定义serialPort1.ReceivedBytesThreshold = RECEIVE_LENTH;在时间响应事件中调用协议分析处理函数serialPortCaculate() 来分析协议private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e){bel_dispzedNum.Invoke(newMethodInvoker(delegateint inNumSData=0; try{inNumSData =this.serialPort1.BytesToRead;b_serial_bufin_diplay.T// 串行数据处理 // 图像显示 byte dataID= 0x00; double temp =this.serialPortCaculate(ref dataID);switch(dataID){case TEMVAL:()break;}// 匿名方法catch { }ext = inNumSData.ToString();break;default:this.serialPort1.DiscardInBuffer}));/////// 接收转换协议, 接收数据时直接调用private double serialPortCaculate(ref byte dataID){Byte[] BReceiveTemp = new Byte[RECEIVE_LENTH];for (int i = 0; i < RECEIVE_LENTH; i++)// 接收定长数据字符串{ BReceiveTemp[i] = Convert.ToByte(this.serialPort1.ReadByte());}dataID=BReceiveTemp[1];switch (BReceiveTemp[1]){case TEMVAL: default :}}。

上位机与plc通讯规则

上位机与plc通讯规则

上位机与plc通讯规则以上位机与PLC通讯规则一、概述以上位机与PLC通讯是指通过计算机控制的上位机与可编程逻辑控制器(PLC)之间进行数据交换和通讯的过程。

这种通讯方式在工业自动化控制系统中广泛应用,可以实现对PLC的监控、控制和数据采集等功能。

本文将介绍以上位机与PLC通讯的规则和方法。

二、通讯规则1. 通讯协议以上位机与PLC通讯需要遵循一定的通讯协议,常用的协议有Modbus、Profibus、Ethernet等。

通讯协议规定了通讯双方之间的数据格式、传输方式和通讯规则,确保数据的准确传输和解析。

2. 通讯方式以上位机与PLC通讯可以通过串口、以太网等方式进行。

串口通讯一般使用RS232、RS485等标准接口,以太网通讯则使用以太网线进行数据传输。

通讯方式的选择需要根据具体的应用场景和通讯距离来确定。

3. 数据传输以上位机与PLC通讯的数据传输可以分为请求和响应两个阶段。

上位机发送请求命令给PLC,PLC接收并处理请求后,将响应数据返回给上位机。

数据传输可以是单向的,也可以是双向的,根据具体的应用需求来确定。

4. 数据采集和控制以上位机与PLC通讯的主要目的是进行数据采集和控制。

上位机可以通过发送读取命令,获取PLC中的数据,如传感器数据、开关状态等。

同时,上位机还可以通过发送写入命令,控制PLC的输出,如控制执行器、开关设备等。

三、通讯方法1. Modbus通讯Modbus通讯是一种常用的以上位机与PLC通讯方式,其采用主从结构,上位机作为主站发送请求,PLC作为从站接收请求并响应。

Modbus通讯可以通过串口或以太网进行,具有简单、可靠的特点,广泛应用于工业自动化领域。

2. Profibus通讯Profibus通讯是一种基于现场总线的以上位机与PLC通讯方式,采用主从结构。

Profibus通讯可以实现高速传输和大容量数据交换,适用于复杂的自动化系统。

3. Ethernet通讯Ethernet通讯是一种基于以太网的以上位机与PLC通讯方式,具有高速传输和大带宽的特点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(合同制定方法)单片机与上位机通信协议的制定
单片机和上位机通信协议的制定
单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定!上行协议,即由单片机向上位机发送数据。

下行协议,即由上位机向单片机发送数据。

而通信协议又要分固定长度和不定长度俩种
本文所介绍的协议属于简单的固定字长的通信协议!
下行协议由四个字节构成
上表是简单的上位机对单片机的控制指令
下述函数是C#中封装的串口通信类中的发送函数的封装publicvoidSerSendCommu(byteorderDef,bytedata)//参数1为命令字,参数二为要发送的数
//据,需要时可直接调用
{
Byte[]BSendTemp=newByte[SEND_LENTH];
BSendTemp[0]=PRE;
BSendTemp[1]=orderDef;
BSendTemp[2]=data;
BSendTemp[3]=END;
this.serialPort1.Write(BSendTemp,0,SEND_LENTH);
}
下位机中用中断方式接收字符,本文用的是GCC语言,下面是串口接收数据中断
ISR(USART_RXC_vect)//串口接收中断
{
unsignedcharstatus,data;
status=UCSRA;//**首先读取UCSRA的值,再读取UDR值,顺序不能颠倒,否则读取UDR后的UCSRA的
//值即会改变**
data=UDR;
if(!Uart_RecvFlag)//判断缓存中的数据是否读完,读完则接收指令
{
if((status&((1<<FE)|(1<<PE)|(1<<DOR)))==0)
{
rx_buffer[rx_counter]=data;
rx_counter++;
switch(rx_counter)
{
case1:
if(data!=USART_BEGIN_STX)
rx_counter=0;
break;
case4:
rx_counter=0;
if(data==USART_END_STX)
Uart_RecvFlag=1;
break;
}
}
}
}
于单片机主循环程序的最前部分进行指令译码if(Uart_RecvFlag)//接收到命令
{
switch(rx_buffer[1])
{
case0xAA://单片机状态命令控制;ucWorkStatue=rx_buffer[2];//指令数据break;
case0xDD://PWM值修改指令
OCR2=rx_buffer[2];
break;
case0xFF://初始温度设定
break;
}
Uart_RecvFlag=0;
}
//随后进行执行指令
switch(ucWorkStatue)
{
case1://空闲模式
break;
case2://测量模式,但不输出
break;
case3://测量模式,由串口输出
break;
case4://PWM输出测试
break;
default:
break;
}
这样就能够利用串口对单片机进行于线命令控制了;
上行协议的制定!
和下行协议基本壹致!
于AVR单片机程序中定义了串口通信输出缓冲区,缓冲区的字长正好为协议的长度;
//串口发送缓冲区变量声明
volatileunsignedchartx_buffer[TX_BUFFER_SIZE];//定义串口发送缓冲区volatileunsignedchartx_wr_index=0,tx_rd_index=0,tx_counter=0;//rx_wr_i ndex写指针,rx_rd_index读指针,rx_counter缓冲区数据个数
//USART发送函数
voidUSART_Transmit(unsignedchardata)//发送数据函数
{
while(tx_counter==TX_BUFFER_SIZE);//输出缓冲区满,等待
asm("cli");
if(tx_counter||((UCSRA&DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=data;
if(++tx_wr_index==TX_BUFFER_SIZE)
tx_wr_index=0;
++tx_counter;
}
else
UDR=data;
asm("sei");
}
//发送中断服务程序
ISR(USART_TXC_vect)//USART发送数据中断{
if(tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if(++tx_rd_index==TX_BUFFER_SIZE)
{
tx_rd_index=0;
}
}
}
于C#编写的上位机中,利用串口接收事件响应方法定义
serialPort1.ReceivedBytesThreshold=RECEIVE_LENTH;
于时间响应事件中调用协议分析处理函数serialPortCaculate()来分析协议privatevoidserialPort1_DataReceived(objectsender,SerialDataReceivedEv entArgse)
{
bel_dispzedNum.Invoke(newMethodInvoker(delegate
{//匿名方法
intinNumSData=0;
try
{
inNumSData=this.serialPort1.BytesToRead;
b_serial_bufin_diplay.Text=inNumSData.ToString();
//串行数据处理
//图像显示
bytedataID=0x00;
doubletemp=this.serialPortCaculate(refdataID); switch(dataID)
{
caseTEMVAL:
break;
default:
this.serialPort1.DiscardInBuffer
()
break;
}
}
catch
{}
}
///////接收转换协议,接收数据时直接调用privatedoubleserialPortCaculate(refbytedataID)
{
Byte[]BReceiveTemp=newByte[RECEIVE_LENTH];
for(inti=0;i<RECEIVE_LENTH;i++)//接收定长数据字符串
{
BReceiveTemp[i]=Convert.ToByte(this.serialPort1.ReadByte()); }
dataID=BReceiveTemp[1];
switch(BReceiveTemp[1])
{
caseTEMVAL:
default:
}。

相关文档
最新文档