luoxue720 发表于 2011-12-11 10:39:32

用MSComm控件时,为什么GetCommEvent()的返回值为2时,表示接受缓冲区中有字符。

用MSComm控件时,为什么GetCommEvent()的返回值为2时,表示接受缓冲区中有字符。能返回其它值吗?等于其它的值不可以吗?

majianjia 发表于 2011-12-11 10:59:43

这个函数是返回事件用的。Event就是事件的意思,一般都是枚举的。所以123456789之类的都有可能。当然可以是其他值,比如发送完毕,发生异常,都有不同的值。
具体看百度百科就有了。
多查资料吧。这些应该都是宏定义的,一大串字母。

luoxue720 发表于 2011-12-11 11:07:35

回复【1楼】majianjia阿嘉^_^
-----------------------------------------------------------------------
谢了,能具体告诉我查些什么资料吗?我是个初学者,完全的自学,关于MSComm控件相关的累,在MSDN里找不到,看了许多Visual C++方面的书,但是细节处还是讲不到位。

majianjia 发表于 2011-12-11 11:22:41

LZ,不是我说你,google baidu要会用,想问什么就先用关键词查一下,像这些用得比较多的控件和相关的错误这些网上都有的。
MSComm我也只是用过一次,也是初学者,电子和上位机也是自学,下面都是google和百度查“MSComm”或者“MSComm event”出来的

MSDN上的,
http://msdn.microsoft.com/en-us/library/aa457021

comEvSend         1         There are fewer than SThreshold number of characters in the transmit buffer.
comEvReceive         2         Received RThreshold number of characters. This event is generated continuously until you use the Input property to remove the data from the receive buffer.
comEvCTS         3         Change in Clear To Send line.
comEvDSR         4         Change in Data Set Ready line. This event is fired only when DSR changes from 1 to 0.
comEvCD         5         Change in carrier detect line.
comEvRing         6         Ring detected. Some universal asynchronous receiver-transmitters (UARTs) may not support this event.
comEvEOF         7         End Of File (ASCII character 26) character received.

你说的2,就是接受事件。 comEvReceive 这串字母你直接写在程序里也是代表个2,这些也许是头文件或者什么里面的宏定义或者枚举。所以你直接返回数值的话,看到的是2,而不是comEvReceive


以下转自CSND
http://topic.csdn.net/t/20021205/16/1234691.html

常数   值   描述
comEventBreak   1001   接收到一个中断信号。
comEventCTSTO   1002   Clear   To   Send   超时。在系统规定时间内传输一个字符时,Clear   To   Send   线为低电平。
comEventDSRTO   1003   Data   Set   Ready   超时。在系统规定时间内传输一个字符时,Data   Set   Ready   线为低电平。
comEventFrame   1004   帧错误。硬件检测到一帧错误。
comEventOverrun   1006   端口超速。没有在下一个字符到达之前从硬件读取字符,该字符丢失。
comEventCDTO   1007   载波检测超时。在系统规定时间内传输一个字符时,Carrier   Detect   线为低电平。Carrier   Detect   也称为   Receive   Line   Signal   Detect   (RLSD)。
comEventRxOver   1008   接受缓冲区溢出。接收缓冲区没有空间。
comEventRxParity   1009   奇偶校验。硬件检测到奇偶校验错误
comEventTxFull   1010   传输缓冲区已满。传输字符时传输缓冲区已满
comEventDCB   1011   检索端口的设备控制块   (DCB)   时的意外错误


通讯事件包括下列设置值:

常数   值   描述
comEvSend   1   在传输缓冲区中有比   Sthreshold   数少的字符。
comEvReceive   2   收到   Rthreshold   个字符。该事件将持续产生直到用   Input   属性从接收缓冲区中删除数据。
comEvCTS   3   Clear   To   Send   线的状态发生变化。
comEvDSR   4   Data   Set   Ready   线的状态发生变化。该事件只在   DST   从   1   变到   0   时才发生。
comEvCD   5   Carrier   Detect   线的状态发生变化。
comEvRing   6   检测到振铃信号。一些   UART(通用异步接收—   传输)可能不支持该事件。
comEvEOF   7   收到文件结束(ASCII   字符为   26)字符。   


这次我就给你全部贴出来了,但是建议你还是去上面两个网站看看。
论坛什么的,很多回帖都提到我们会有些意想不到的地方,查资料的时候往往会有意外收获。

说得有点过了,见谅...

luoxue720 发表于 2011-12-11 12:30:54

回复【3楼】majianjia阿嘉^_^
-----------------------------------------------------------------------
非常感谢

zwhzwh_11 发表于 2014-3-7 16:27:19

谢谢大师

szghzhao 发表于 2014-11-20 15:56:58

majianjia 发表于 2011-12-11 11:22
LZ,不是我说你,google baidu要会用,想问什么就先用关键词查一下,像这些用得比较多的控件和相关的错误这 ...

大师啊 能请教你点VC6.0的问题吗 方便的话告诉我你的QQ行吗?

szghzhao 发表于 2014-11-20 16:00:51

谢谢 楼主发如此好的帖子 方便告诉我QQ吗? 交流一下VC问题

ren0214 发表于 2014-11-20 16:08:58

别人网上搜一下,提供出来,马上就大师大师叫上了。别人也说只用了一次。
用点心吧!知识不能自己跑你脑子里去的。
页: [1]
查看完整版本: 用MSComm控件时,为什么GetCommEvent()的返回值为2时,表示接受缓冲区中有字符。