【开发mvc网站源码】【o2o社区源码】【centos7 源码安装mysql】vc串口调试助手源码_vc串口调试助手源代码

时间:2024-11-23 13:27:37 来源:php佛教网站源码 分类:热点

1.VC++ MSComm控件GetInput()方法的串口串口问题
2.VisualC++/TurboC串口通信编程实践(第2版)目录
3.Visual C++/Turbo C串口通信编程实践目录
4.c 获取串口号 c 自动获取串口号

vc串口调试助手源码_vc串口调试助手源代码

VC++ MSComm控件GetInput()方法的问题

       我调了三天!!调试调试结果发现是助手助手硬件的问题!!源码源代开发mvc网站源码!串口串口USB转串口模块的调试调试原因,换一个就好了!助手助手!源码源代!串口串口!调试调试虚拟串口不稳定,助手助手o2o社区源码原来是源码源代用的一个笔记本通过CP模块发出,另一笔记本用PL模块接收,串口串口自己写的调试调试VS串口接收程序,只能发送,助手助手但每次收过来数据都在VS输出框提示错误,centos7 源码安装mysql但是用别人的串口调试助手就可以正常接收,一直以为是自己程序的错误。经过大量排查,图书馆找的书也是这么写的程序,确定不是采集电影网站源码程序问题,换了电脑也不行,尝试调换USB转串口模块就行了!也就是自己用VS写的串口接收程序只能用CP模块接收。

VisualC++/TurboC串口通信编程实践(第2版)目录

       第1章轻松体验串口通信编程与调试

       1.1初识串口

       1.1.1从外观上了解串口

       1.1.2串口通信的发展前景

       1.2自己制作简单的串口线

       1.2.1三线制串口接线的规定

       1.2.2焊接制作自己的串口连接线

       1.3调试串口通信程序时的几种技巧

       1.3.1查看计算机串口资源

       1.3.2常规调试两个物理串口之间的通信

       1.3.3特殊调试单个物理串口之间的通信

       1.3.4虚拟串口为计算机添加取之不尽的串口资源

       1.4使用串口调试助手来体验串口通信

       1.5体验Windows环境下Visual C++串口通信编程

       1.6体验DOS环境下Turbo C串口通信编程

       第2章多线程串口编程工具CSerialPort类

       2.1CSerialPort类的功能及成员函数介绍

       2.2应用CSerialPort类编制基于对话框的应用程序

       2.3应用CSerialPort类编制基于单文档的应用程序

       2.4对CSerialPort类的改进

       2.4.1改进一:ASCII文本和二进制数据发送方式兼容

       2.4.2改进二:也许能解决内存泄漏

       2.4.3改进三:彻底关闭串口释放串口资源

       2.5在Visual C++.NET中应用CSerialPort类

       第3章控件MSComm串口编程

       3.1MSComm控件详细介绍

       3.1.1VC6.0中应用MSComm控件编程步骤

       3.1.2MSComm控件串行通信处理方式

       3.1.3MSComm控件的属性说明

       3.1.4MSComm控件错误信息

       3.2使用MSComm控件的几个疑难问题

       3.2.1使用、VARIANT和SAFEARRAY数据类型从串口读写数据

       3.2.2MSComm控件能离开对话框独立存在吗

       3.2.3如何发送接收ASCII值为0和大于的外贸b2b源码字符

       3.2.4在同一程序中用MSComm控件控制多个串口的具体操作方法

       3.2.5解决使用控件编程时程序占用的内存会不断增大的问题

       3.2.6在MSComm控件串口编程时遇到的其他问题

       3.3在基于单文档(SDI)程序中应用MSComm控件

       3.4应用MSComm控件控制多个串口实例

       3.5串口与MODEM拨号应用简例

       3.5.1创建工程

       3.5.2代码分析

       3.5.3应用

       第4章Windows API串口编程

       第5章串口调试助手V2.2详细编程

       第6章DOS环境下的Turbo C串口编程及通用实例GSerial类

       第7章数据处理方法与串口通信用户层协议的编制

       第8章单片机串口通信

       第9章串口与网络结合的解决方案及编程

       第章计算机串口与其他通信协议设备的联接

       第章串口通信基本概念及标准

       第章不占用串口的串口数据捕捉

       附录A Turbo C说明

       附录B ASCII码表

扩展资料

       《VisualC++/TurboC串口通信编程实践(第2版)》是一本由电子工业出版社于-9-1出版的一本电子书籍,作者是龚建伟,熊光明。从编程实践角度详细介绍了PC计算机Windows环境下、DOS环境下以及单片机的串口通信的基本方法,并根据当前串口与网络结合的发展趋势,给出了串口与TCP/IP网络、远程监控相结合的解决方案与详细程序实例。

Visual C++/Turbo C串口通信编程实践目录

       轻松体验串口通信编程与调试

       使用串口调试助手来体验串口通信

       体验Windows环境下的Visual C++串口通信编程

       体验DOS环境下Turbo C串口通信编程

       多线程串口编程工具CSerialPort类功能及成员函数介绍

       应用CSerialPort类编制基于对话框的应用程序

       应用CSerialPort类编制基于单文档的应用程序

       对CSerialPort类的改进

       改进一:ASCII文本和二进制数据发送方式兼容

       改进二:也许能解决内存泄漏

       改进三:彻底关闭串口,释放串口资源

       MSComm控件介绍

       VC中应用MSComm控件编程步骤

       MSComm控件串行通信处理方式

       MSComm 控件的属性说明

       MSComm控件错误信息

       使用MSComm控件的几个疑难问题

       使用VARIANT 和SAFEARRAY 数据类型从串口读写数据

       MSComm控件能离开对话框独立存在吗

       如何发送接收ASCII值为0和大于的字符

       在同一程序中用MSComm控件控制多个串口的具体操作方法

       解决使用控件编程时程序占用的内存会不断增大的问题

       MSComm控件串口编程时遇到的其他问题

       在基于单文档(SDI)程序中应用MSComm控件

       应用MSComm控件控制多个串口实例

       串口与MODEM拨号应用简例

       创建工程

       代码分析

       应用

       Windows API串口编程概述

       API串口编程中用到的结构及相关概念说明

       DCB(Device Control Block)结构

       超时设置COMMTIMEOUTS结构

       OVERLAPPED异步I/O重叠结构

       通信错误与通信设备状态

       串行通信事件

       Windows API串行通信函数

       Win API串口通信编程的一般流程和特殊实例

       Win API串口通信编程的一般流程

       用查询方式读串口

       同步I/O读写数据

       关于流控制的设置问题

       CSerialPort类中的API函数编程应用剖析

       Win API串口编程TTY(虚拟终端)实例

       建立程序工程

       建立串口设置对话框

       编写CTermDoc类的相关代码

       小结

       在CTermView类中字添加符键入处理代码与串口接收处理代码

       建立SCOMM程序工程实现界面功能

       串口的初始化及关闭

       串口数据的发送与接收及十六进制数据的处理

       十六进数据发送处理

       手动发送处理

       自动发送处理

       接收处理及十六进制显示

       其他辅助功能的实现

       接收数据的文件保存

       实现小文件发送

       图钉按钮功能使程序能浮在最上层

       对话框动画图标的实现

       超链接功能的实现

       如何打开帮助网页文件

       PC机异步通信适配器及其编程操作

       INS内部寄存器及其选择方式

       波特率设置

       数据位、奇偶校验、停止位等数据格式设置

       查询I/O方式相关设置

       中断I/O通信方式相关设置

       MODEM寄存器

       COMRXTX程序实例

       通用实例程序GSerial类

       用GSerial类控制多串口

       多串口编程PC机高号中断A可编程中断控制器的控制

       通信协议的编制

       为什么要编制用户通信协议

       串口通信中用户层协议编制原则

       在串口通信中几种常用的用户层协议

       串口通信数据包处理方法编程实例

       编程任务

       编程步骤

       程序测试

       单片机串口硬件系统及C程序开发

       较典型的单片机硬件系统实例

       C语言及程序简介

       开发C程序的利器Keil C uVision2及串口程序仿真

       C单片机串口通信程序实例

       实例一

       实例二

       串口与网络结合的解决方案及编程

       串口与网络结合的硬件解决方案

       典型串口与联网的设备

       NPort系列产品的特点

       NPort 系列产品的典型应用介绍

       NPort系列产品的设置与编程测试

       与Access数据库结合的串口通信实例

       微机网络检测系统说明

       创建ODBC数据源

       创建工程

       程序简介

       与WinSock结合的串口通信实例

       客户端应用程序

       服务器应用程序

       在已经编好的串口通信程序中加入网络通信功能

       参照MFC AppWizard创建WinSockets程序

       利用Windows Sockets API和第三方提供的类进行编程

       串口通信用于遥控操作简例

       通过串口收发短消息

       SMS编码规范及编码与解码例程

       AT命令收发短消息实例

       “实时”接收短消息的方法

       用串口收发SMS短信编程的一些讨论

       计算机与Rabbit 嵌入式系统通信编程实例

       Rabbit 微处理器介绍

       动态C(Dynamic C)语言介绍

       某车载无线调度系统实例介绍

       计算机与PLC通信程序实例

       MATLAB环境串口编程通信实例

       MATLAB串口类Serial应用

       通过串口使MATLAB Simulink与下位机通讯进行控制

       xPC目标环境下串口通信实现

       计算机串口与其他设备通信编程实例

       通过串口收发短消息

       SMS编码规范及编码与解码例程

       AT命令收发短消息实例

       “实时”接收短消息的方法

       串口通信基本概念及标准

       串口通信基本概念

       单工、半双工和全双工的定义

       同步传送与异步传送

       串行通信协议

       RS--C串口标准

       RS--C标准

       RS--C串行通信接线实例

       RS-/串口标准

       概述

       RS-与RS-串行接口标准

       RS-与RS-的网络安装注意要点

       RS-、RS、RS电气参数对比

       串口调试注意事项

       常用数据校验法

       奇偶校验

       循环冗余码校验

       串口连接和TCP/IP连接对比

       现场总线与RS-、RS-的本质区别

       MODEM通信技术

       MODEM的基本工作原理

       MODEM的功能

       MODEM的分类

       MODEM的安装

       MODEM V.标准介绍

       MODEM的速度

       MODEM优化方法

       MODEM命令/AT命令

       不占用串口的串口数据捕捉

       驱动程序的基本概念:VxD与WDM

       虚拟设备驱动程序VxD

       Win驱动程序模型WDM

       在不同操作系统下选用哪种驱动程序模式

       VxD示例程序介绍——VToolsD中的CommHook

       串口数据捕捉实例程序

       编程任务

       编程步骤

       虚拟串口简介

       Turbo C说明

       ASCII码表

c 获取串口号 c 自动获取串口号

       ç”¨C怎么写获取串口的内容

        看驱动程序的接口啊

        一般是是open(“口名”)

用C/C++写一个小程序读取串口接收到的数据

        你太幸运了,刚好我有一个,你在vc++6.0下测试一下。

        /* serrecv.c */

        /* Receives and saves a file over a serial port */

       

        /* Last modified: Septemeber , */

        /* [goman] */

        #include

        #include

        #include

        /* Function to print out usage information */

        void usage(void);

        /* Function to set up the serial port settings with the specified baud rate,

        no parity, and one stop bit */

        void set_up_serial_port(HANDLE h, long baud);

        /* Function to receive and save file from serial port */

        void get_file_from_serial_port(HANDLE h, char *file_name, unsigned long file_length);

        int main(int argc, char **argv)

        {

        HANDLE serial_port; /* Handle to the serial port */

        long baud_rate = ; /* Baud rate */

        char port_name[] = "COM1:"; /* Name of serial port */

        unsigned long file_size; /* Size of file to receive in bytes */

        unsigned long bytes_received; /* Bytes received from serial port */

        unsigned long file_name_size; /* Size of file name in bytes */

        char file_name[]; /* Name of file to receive */

        /* Check mand line */

        if (argc == 3)

        {

        /* Read in baud rate */

        if (argv[1][1] != 'b' || sscanf(argv[2], "%ld", &baud_rate) != 1)

        {

        usage;

        exit(0);

        }

        }

        else if (argc != 1)

        {

        usage;

        exit(0);

        }

        /* Open up a handle to the serial port */

        serial_port = CreateFile(port_name, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

        /* Make sure port was opened */

        if (serial_port == INVALID_HANDLE_VALUE)

        {

        fprintf(stderr, "Error opening port\n");

        CloseHandle(serial_port);

        exit(0);

        }

        /* Set up the serial port */

        set_up_serial_port(serial_port, baud_rate);

        /* Receive file name size from serial port */

        ReadFile(serial_port, (void *)&file_name_size, sizeof(unsigned long), &bytes_received, NULL);

        if (bytes_received != sizeof(unsigned long))

        {

        fprintf(stderr, "Error getting file name size.\n");

        CloseHandle(serial_port);

        exit(0);

        }

        /* Receive file name from serial port */

        ReadFile(serial_port, (void *)file_name, file_name_size, &bytes_received, NULL);

        if (bytes_received != file_name_size)

        {

        fprintf(stderr, "Error retrieving file name.\n");

        CloseHandle(serial_port);

        exit(0);

        }

        /* Append NULL terminator to end of string */

        file_name[bytes_received] = '\0';

        /* Receive file size from serial port */

        ReadFile(serial_port, (void *)&file_size, sizeof(unsigned long), &bytes_received, NULL);

        if (bytes_received != sizeof(unsigned long))

        {

        fprintf(stderr, "Error getting file size.\n");

        CloseHandle(serial_port);

        exit(0);

        }

        /* Get the file from the serial port */

        get_file_from_serial_port(serial_port, file_name, file_size);

        /* Print out success information */

        printf("\n%lu bytes successfully received and saved as %s\n", file_size, file_name);

        /* Close handle */

        CloseHandle(serial_port);

        return 0;

        }

        void usage(void)

        {

        fprintf(stderr, "Usage:\n");

        fprintf(stderr, "\tserrecv [-b baud rate]\n");

        fprintf(stderr, "\tDefault baud rate is \n");

        fprintf(stderr, "tSupported baud rates: , , , , , \n");

        return;

        }

        void set_up_serial_port(HANDLE h, long baud)

        {

        DCB properties; /* Properties of serial port */

        /* Get the properties */

        GetmState(h, &properties);

        /* Set the baud rate */

        switch(baud)

        {

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        case :

        properties.BaudRate = CBR_;

        break;

        default:

        fprintf(stderr, "Invalid baud rate: %ld\n", baud);

        usage;

        exit(0);

        break;

        }

        /* Set the other properties */

        properties.Parity = NOPARITY;

        properties.ByteSize = 8;

        properties.StopBits = ONESTOPBIT;

        SetmState(h, &properties);

        return;

        }

        void get_file_from_serial_port(HANDLE h, char *file_name, unsigned long file_length)

        {

        FILE *data_file; /* File to create */

        unsigned long bytes_left = file_length; /* Bytes left to receive */

        unsigned long bytes_received_total = 0; /* Total bytes received */

        unsigned long bytes_to_receive; /* Number of bytes to receive */

        unsigned long bytes_received; /* Number of bytes receive */

        char buffer[]; /* Buffer to store data */

        /* Open the file */

        data_file = fopen(file_name, "wb");

        /* Quit if file couldn't be opened */

        if (data_file == NULL)

        {

        fprintf(stderr, "Could not create file %s\n", file_name);

        CloseHandle(h);

        exit(0);

        }

        while (1)

        {

        /* Determine how many bytes to read */

        if (bytes_left == 0)

        {

        break;

        }

        else if (bytes_left < )

        {

        bytes_to_receive = bytes_left;

        }

        else

        {

        bytes_to_receive = ;

        }

        /* Receive data over serial cable */

        ReadFile(h, (void *)buffer, bytes_to_receive, &bytes_received, NULL);

        if (bytes_received != bytes_to_receive)

        {

        fprintf(stderr, "Error reading file.\n");

        CloseHandle(h);

        exit(0);

        }

        /* Save buffer to file */

        fwrite((void *)buffer, 1, bytes_received, data_file);

        /* Decrement number of bytes left */

        bytes_left -= bytes_received;

        /* Increment number of bytes received */

        bytes_received_total += bytes_received;

        /* Print out progress */

        printf("\r%5lu bytes received.", bytes_received_total);

        }

        fclose(data_file);

        return;

        }

C语言变成实现串口收发数据

        #include 

        #include 

        int main(void)

        {

        FILE *fp;

        char temp;

        char buf[];

        if((fp = fopen("3","r")) == NULL)

        puts("this way doesn't work!\n");

        else

        puts("this way works!\n");

        while(1)

        {

        temp = 0;

        fscanf(fp,"%c",&temp);

        if(temp != 0)

        putchar(temp);

        else

        Sleep();

        }

        fclose(fp);

        return 0;

        }

        以前弄的,好久没看了,不知到对不对。

        还有下面这段:

        #include 

        #include 

        HANDLE h;

        int main(void)

        {

        h=CreateFile(TEXT("COM3"),//COM1口

        GENERIC_READ|GENERIC_WRITE, //允许读和写

        0, //独方式

        NULL,

        OPEN_EXISTING, //打开而不是创建

        0, //同步方式

        NULL);

        if(h==(HANDLE)-1)

        {

        printf("打开COM失败!\n");

        return FALSE;

        }

        else

        {

        printf("COM打开成功!\n");

        }

        Setupm(h,,); //输入缓冲区和输出缓冲区大小都是

        COMMTIMEOUTS TimeOuts;

        //设读超时

        TimeOuts.ReadIntervalTimeout=;

        TimeOuts.ReadTotalTimeoutMultiplier=;

        TimeOuts.ReadTotalTimeoutConstant=;

        //设定写超时

        TimeOuts.WriteTotalTimeoutMultiplier=;

        TimeOuts.WriteTotalTimeoutConstant=;

        SetmTimeouts(h,&TimeOuts); //设置超时

        DCB dcb;

        GetmState(h,&dcb);

        dcb.BaudRate=; //波特率为

        dcb.ByteSize=8; //每个字节有8位

        dcb.Parity=NOPARITY; //无奇偶校验位

        dcb.StopBits=ONE5STOPBITS; //两个停止位

        SetmState(h,&dcb);

        DWORD wCount;//读取的节数

        BOOL bReadStat;

        while(1)

        {

        Purgem(h,PURGE_TXCLEAR|PURGE_RXCLEAR); //清缓冲区

        char str[9]={ 0};

        printf("%s\n",str);

        bReadStat=ReadFile(h,str,9,&wCount,NULL);

        if(!bReadStat)

        {

        printf("

怎么通过串口读取单片机某个地址的数据?请用C语言写出来。

       

*

        授人以鱼,不如授人以渔

       

*

        首先,你要明确在C语中读取内存址是基于指针。

        3.比如读取内存地址0x中的数据

        C语言中对于内存的访是基于指,这个毋庸置疑,具体操如下

        unsigned int *p= (unsigned int*)0x ;//定义针,并且使指针指向了0x这个        å†…存地址;

        那么*p就是最终你要读取的数据了。

        4.至于如何通过串口显示到电脑我就不多了(这不是难点),据你都知道了,写到串口   缓冲区,在串口调试助手下就可以看到。

        5.虽然没有贴出具体代码,但这里面的思想可以让你解决

标签:作文经典 上一篇:描写毛毛虫的词语 描写毛毛虫行动的词语 下一篇:成语误用褒贬的例子 褒贬误用的成语

        Linux下如何使用c/c++实现检测新增串口,并读取串口号

        Linux下面有设文件

        串口装好驱动后 会显示在dev下

        然后对这个

C语言中如何对串口进行操作

        C语言会有操作串口的库函数的,按照串口库数标识实现调

电脑上的串口号是什么意思

        串口叫做串行接口,也串行通信接口,按电气标准及协议来分包括RS--C、RS-、RS、USB等。 RS--C、RS-与RS-标准对接口的电气特性做出规定,不涉及接插件、电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于速数据传输域。 RS--C:也称标准串口,是目前最常用的一种串行通讯接口。它是在年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂共同制定的用于串行通讯的标 准。它的名是“数据终端设备(DTE)和数据通讯设备(DCE)之间 行二进制数据交换接口技术标准”。传统的RS--C接口标准有根线,采用标准芯D型插头座。后来的PC上使用简化了的9芯D插座。现在应用中芯插头已很少采用。现在的电脑般有两个串行口:COM1和COM2,你到计算机后面能看到9针D形接口就是了。现在有很多手数据线或者物流接收器都采用COM

如何用C语言写一个读、写串口的程序?

        大致过程就是

        配置串口通信,包串口号、波特、验位、停止位这些信息;

        打开串口,和打开文件一样,在Linux是这样,Windows下没试过,估计也差不多;

        发送数据,即写串口,就跟写文件类似;

        读取

编写单片机串口收发数据的完整程序(C语言编写)

        我用的新唐芯片,内核,跟差不多,望采纳

        void UART_Initial (void)

        {

        P_Quasi_Mode; //Setting UART pin as Quasi mode for tran *** it

        P_Quasi_Mode; //Setting UART pin as Quasi mode for tran *** it

        SCON_1 = 0x; //UART1 Mode1,REN_1=1,TI_1=1

        T3CON = 0x; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1

        clr_BRCK;

        RH3 = HIBYTE( - (/uBaudrate)-1); /* MHz */

        RL3 = LOBYTE( - (/uBaudrate)-1); /* MHz */

        set_TR3; //Trigger Timer3

        }

        以上是初始化的

        void Send_Data_To_UART1(UINT8 c)

        {

        TI_1 = 0;

        SBUF_1 = c;

        while(TI_1==0);

        }

        这个是发送

        void UART_isr (void) interrupt 4 //

怎样在WINDOWS下用C语言编写串口接收数据程序

        #include

        #include

        int main(void)

        {

        FILE *fp;

        char temp;

        char buf[];

        if((fp = fopen("3","r")) == NULL)

        puts("this way doesn't work!\n");

        else

        puts("this way works!\n");

        while(1)

        {

        temp = 0;

        fscanf(fp,"%c",&temp);

        if(temp != 0)

        putchar(temp);

        else

        Sleep();

        }

        fclose(fp);

        return 0;

        }

        以前的,好久看,不知到对不对。

        还下面这段:

        1

        2

        3

        4

        5

        6

        7

        8

        9

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

        #include

        #include

        HANDLE h;

        int main(void)

        {

        h=CreateFile(TEXT("COM3"),//COM1口

        GENERIC_READ|GENERIC_WRITE, //允许读和写

        0, //独占方式

        NULL,

        OPEN_EXISTING, //打开而不是建

        0, //同步式

        NULL);

        if(h==(HANDLE)-1)

        {

        printf("打开COM失败!\n");

        return FALSE;

        }

        else

        {

        printf("COM打开成功!\n");

        }

        Setupm(h,,); //输入缓冲区和输出缓冲区的大小都是

        COMMTIMEOUTS TimeOuts;

        //定读超时

        TimeOuts.ReadIntervalTimeout=;

        TimeOuts.ReadTotalTimeoutMultiplier=;

        TimeOuts.ReadTotalTimeoutConstant=;

        //设定写超时

        TimeOuts.WriteTotalTimeoutMultiplier=;

        TimeOuts.WriteTotalTimeoutConstant=;

        SetmTimeouts(h,&TimeOuts); //设置超时

        DCB dcb;

        GetmState(h,&dcb);

        dcb.BaudRate=; //波特率为

        dcb.ByteSize=8; //每个字节有8位

        dcb.Parity=NOPARITY; //无奇偶校验位

        dcb.StopBits=ONE5STOPBITS; //两个停止位

        SetmState(h,&dcb);

        DWORD wCount;//读取的字节

        BOOL bReadStat;

        while(1)

        {

        Purgem(h,PURGE_TXCLEAR|PURGE_RXCLEAR); //清空缓冲区

        char str[9]={ 0};

        printf("%s\n",str);

        bReadStat=ReadFile(h,str,9,&wCount,NULL);

        if(!bReadStat)

        {

        printf("读串口

标签:作文经典 上一篇:描写毛毛虫的词语 描写毛毛虫行动的词语 下一篇:成语误用褒贬的例子 褒贬误用的成语