本人刚学习vb的串口通信,对这些知识比较迷茫,在这里先谢谢各位了!!!!!!!!!!
1、用MScomm控件发送数据如果将MSComm1.SThreshold = 0是不是就不会产生发送事件,也就是MScomm不发送数据了?2、在MScomm控件MSComm1.SThreshold = 0情况下,用 MSComm1.output="要发送的数据" 是不是就能发送数据呢3、MScomm控件MSComm1.SThreshold = 20的话,是什么意思?是不是当发送缓冲区中字符数达到20个时就发送缓冲区中的数据呢?是全部发送吗?还是有其他命令?4、MScomm控件是不是独立于其他空间单独运行啊?意思就是只和设置的串口号有关系,当串口数据达到一定数目或者该发送数据了就发送啊?

解决方案 »

  1.   

    你好,我想解释一下SThreshold的用法。
    1.设置、返回通信控件置ComEvSend并激发OnComm事件前发送缓冲区中的最少字符数。
    若设置为0,则数据传输不会产生OnComm事件。0是默认值。
    不产生事件并不是不发送数据,除非你的发送代码写在这里不信你可以试试,不设置它的值。
    2.这个问题???是不是和第一个一个意思???
    3.ComEvSend事件仅当字符数与SThreshold交叉时被激活一次。例如:如果SThreshold等于20,仅当在输出队列中字符数从20降到19时,ComEvSend事件才发生。
    4.独立于其他空间??额你刚开始要设置串口号,然后设置相应的属性,在程序中告诉串口你要发什么,在你设置的属性中有多少字符发送,超过这个就把你要发的发出去。
    以上仅代表个人意见。。一切真理还在实践中
      

  2.   

    1)
    SThreshold 属性
    在 MSComm 控件设置 CommEvent 属性为 comEvSend 并产生 OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数。
    说明
    设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。
    只要对MSComm 控件的Output 属性赋值发送照常进行.
    2)同1)
    3)
    如果在传输缓冲区中的字符数小于 value,CommEvent 属性设置为 comEvSend,并产生 OnComm 事件。comEvSend 事件仅当字符数与 Sthreshold 交叉时被激活一次。例如,如果 Sthreshold 等于 5,仅当在输出队列中字符数从 5 降到 4 时,comEvSend 才发生。如果在输出队列中从没有比 Sthreshold 多的字符,comEvSend 事件将绝不会发生。
    4)要发送数据则必须在COM口打开并对只要对MSComm 控件的Output 属性赋值.看了LZ的问题似乎感觉LZ应该多动手写代码实践运行,并多看MSDN.
      

  3.   

    楼主先看看这本书再来写程序,串口通信方面的,很全面:
    http://download.csdn.net/source/1498637http://download.csdn.net/source/1498644http://download.csdn.net/source/1262066
      

  4.   

    在 MSDN 敲上MScomm  看看好了。
      

  5.   

    没有MSDN的岂不是郁闷了?不过这种例子在百度上太多了 楼主上百度搜搜就知道了
      

  6.   

    真的很感谢大家对我的帮助,特别是是1楼和2楼,但是还有个疑问就是:发送缓冲区中的字符数是怎么大于SThreshold设定的阀值的??是通过什么命令向发送缓冲区中写数据的??是通过output命令向发送缓冲区中写数据吗??如果是,那么发送数据,一次发送多少个数据在那里设置??
      

  7.   

    通常使用MSComm控件的Sthreshold属性为缺省值,并不特定设置发送阀值!
    Option Explicit
        Dim sjByt() As BytePrivate Sub Command1_Click() '2进制发送
        ReDim sjByt(1 To 10) '设置为10个元素
        sjByt(1) = &H31
        sjByt(2) = &H32
        sjByt(3) = &H12
        sjByt(4) = &H31
        sjByt(5) = &H32
        sjByt(6) = &H33
        sjByt(7) = &H34
        sjByt(8) = &H35
        sjByt(9) = &H36
        sjByt(10) = &H37
        MSComm1.Output = sjByt '此命令执行一次发送10字节
    End SubPrivate Sub Form_Load()
        MSComm1.PortOpen = True
    End Sub