Break 属性
      设置或清除中断信号的状态。该属性在设计时无效。语法objec.Break [ = value]Break 属性语法包括下列部分:部分 描述 
object  对象表达式,其值是“应用于”列表中的对象。 
value  布尔表达式,说明中断信号是否设置,如“设置值”中所描述。 
设置值value 的设置值为:设置值 描述 
True 设置中断信号状态 
False 清除中断信号状态 
说明当设置为 True,Break 属性发送一个中断信号。该中断信号挂起字符传输,并置传输线为中断状态直到把 Break 属性设置为 False。一般,仅当使用的通讯设备要求设置一个中断信号时,才设置一个短时的中断状态。数据类型BooleanCDHolding 属性
      通过查询 Carrier Detect (CD) 线的状态确定当前是否有传输。Carrier Detect 是从调制解调器发送到相联计算机的一个信号,指示调制解调器正在联机。该属性在设计时无效,在运行时为只读。语法 object.CDHoldingCDHolding 属性包括下列部分:部分 描述 
object 对象表达式,其值是“应用于”列表中的对象。 
设置值CDHolding 属性的设置值为:设置 描述 
True Carrier Detect 线为高电平 
False Carrier Detect 线为低电平 
说明注意当 Carrier Detect 线为高电平 (CDHolding = True) 且超时时,MSComm 控件设置CommEvent 属性为 comEventCDTO(Carrier Detect 超时错误),并产生 OnComm 事件。注意   在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者可以随时挂起(放弃传输)。Carrier Detect 也被称为 Receive Line Signal Detect (RLSD)。数据类型Boolean 
CommEvent 属性
      返回最近的通讯事件或错误。该属性在设计时无效,在运行时为只读。语法object.CommEventCommEvent 属性语法包括下列部分:部分 描述 
object 对象表达式,其值是“应用于”列表中的对象。 
说明只要有通讯错误或事件发生时都会产生 OnComm 事件,CommEvent 属性存有该错误或事件的数值代码。要确定引发 OnComm 事件的确切的错误或事件,请参阅 CommEvent 属性。CommEvent 属性返回下列值之一来表示不同的通讯错误或事件。这些常数可以在该控件的对象库中找到。通讯错误包括下列设置值:常数 值 描述 
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)字符。 
数据类型IntegerCommID 属性
      返回一个说明通讯设备的句柄。该属性在设计时无效,在运行时为只读。语法object.CommIDCommID 属性语法包括下列部分:部分 描述 
object 对象表达式,其值是“应用于”列表中的对象。 
说明该值与 Windows API CreateFile 函数返回的值一致。在 Windows API 中调用任何通讯例程时使用该值。数据类型Long

解决方案 »

  1.   

    EOFEnable 属性
          EOFEnable 属性确定在输入过程中 MSComm 控件是否寻找文件结尾 (EOF) 字符。如果找到 EOF 字符,将停止输入并激活 OnComm 事件,此时 CommEvent 属性设置为 comEvEOF,语法object.EOFEnable [ = value ]EOFEnable 属性语法包括下列部分:部分 描述 
    object  对象表达式,其值是“应用于”列表中的对象。 
    value 布尔表达式,确定当找到 EOF 字符时,OnComm 事件是否被激活,如“设置值”中所描述。 
    设置值value 的设置值时:设置值 描述 
    True 当 EOF 字符找到时 OnComm 事件被激活。 
    False (缺省)当 EOF 字符找到时 OnComm 事件不被激活。 
    说明当 EOFEnable 属性设置为 False,OnComm 控件将不在输入流中寻找 EOF 字符。Handshaking 属性
          设置并返回硬件握手协议。语法object.Handshaking [ = value ]Handshaking 属性的语法包括下列部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    value 整型表达式,说明握手约定,如“设置值”中所描述。 
    设置值value 设置值是:设置值 值 描述 
    comNone 0 (缺省)没有握手。 
    comXOnXOff 1 (XON/XOFF) 握手。 
    comRTS 2 RTS/CTS (Request To Send/Clear To Send) 握手。 
    comRTSXOnXOff 3 Request To Send 和 XON/XOFF 握手皆可。 
    说明Handshaking 是指内部通讯协议,通过该协议,数据从硬件端口传输到接收缓冲区。当一个数据字符到达串行端口,通讯设备就把它移到接收缓冲区以使程序可以读它。如果没有接受缓冲区,程序需要直接从硬件读取每一个字符,这很可能会造成数据丢失,因为字符到达的速度可以非常快。握手协议保证在缓冲区过载时数据不会丢失,缓冲区过载为数据到达端口太快而使通讯设备来不及将它移到接收缓冲区。数据类型Integer
    InBufferCount 属性
          返回接收缓冲区中等待的字符数。该属性在设计时无效。语法object.InBufferCount[ = value ]InBufferCount 属性的语法包括下列部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    value 整型表达式,说明在接收缓冲区中等待的字符数。 
    说明InBufferCount 是指调制解调器已接收,并在接收缓冲区等待被取走的字符数。可以把 InBufferCount 属性设置为 0 来清除接收缓冲区。注意   不要把该属性与 InBufferSize 属性混淆。InBufferSize 属性返回整个接收缓冲区的大小。数据类型Integer
    InBufferSize 属性
          设置并返回接收缓冲区的字节数。语法object.InBufferSize[ = value ]InBufferSize 属性语法包括下列部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    value 整型表达式,说明接收缓冲区的字节数。 
    说明InBufferSize 是指整个接收缓冲区的大小。缺省值是 1024 字节。不要将该属性与 InBufferCount 属性混淆,InBufferCount 属性返回的是当前在接收缓冲区中等待的字符数。注意   接收缓冲区越大则应用程序可用内存越小。但若接受缓冲区太小,若不使用握手协议, 就可能有溢出的危险。一般的规律是,首先设置一个 1024 字节的缓冲区。如果出现溢出错误,则通过增加缓冲区的大小来控制应用程序的传输速率数据类型Integer
     
    Input 属性
          返回并删除接收缓冲区中的数据流。该属性在设计时无效,在运行时为只读。语法object.InputInput 属性语法包括下列部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    说明InputLen 属性确定被 Input 属性读取的字符数。设置 InputLen 为 0,则 Input 属性读取缓冲区中全部的内容。InputMode 属性确定用 Input 属性读取的数据类型。如果设置 InputMode 为 comInputModeText,Input 属性通过一个 Variant 返回文本数据。如果设置 InputMode 为 comInputModeBinary,Input 属性通过一个 Variant .返回一二进制数据的数组。数据类型Variant
      

  2.   

    MScomm
    我有个这个的经历,一定要控制好时间,他的事件和方法参考有关资料都不难但一定要把握好时间问题,有必要加延时
      

  3.   

    我只用2磁道。
    读2磁道:主机给读写器:ESC ] (1B 5D)
    读写器返回主机:
    成功:ESC s 磁道2数据? FS (1B 73 磁道2数据 3F 1C)
    失败:ESC r q (1B 72 71)
    写2磁道:主机给读写器:ESC t 磁道2数据 GS ESC \ (1B 74 磁道2数据 1D 1B 5C)
    读写器返回主机:ESC r p/q(p-成功,q-失败)必须要先发出一条读或写指令才能对卡读写,ESC--ESC键,FS--某一键值,上面已经把对应的码写出了,但总是调不通。
    怀疑是哪里设置不对:
    我设置INPUTEMODE=COMINPUTMODEBINARY
    HANDSHAKING=COMXONXOFF
    INPUTLEN=0
    EOFENABLE=TRUE
    RTSENABLE=TRUE
    STHRESHOLD=1
    RTHRESHOLD=1
    SETTINGS="9600,N,8,1"
    1.我认为应该收发一个字节就触发ONCOMM事件,但是发出读写信号后没有触发,我还得调用ONCOMM。错误在那里?
    2.设成二进制后,是不是收发的数据应该每一个字节触发一次ONCOMM呢,还是全收发完才触发一次ONCOMM?
    请高手指点。
    请回贴或发信给我,可以另开贴子给分,人在出差中,又没有msdn,又没有写卡器函数,全靠大家帮忙了!
    我的信箱:[email protected]
      

  4.   

    http://hellovb.myetang.com/
    Select Case MSComm1.CommEvent
           Case 2
           Text1.Text = ""
           Dim i
           For i = 1 To 30000
               DoEvents
           Next i
           Text1.Text = MSComm1.Input
    end select
      

  5.   

    怎么又来这儿了?发我Email我给你程序