mscomm問題,為什么接收不到comEvReceive事件,只能接受comEvCTS,大家幫忙,頂有分!


我要使用COM口的條碼掃描槍,讀數據到,我是用Windows的超級終端可以讀到數據,但是用我的程序就不行,是什么原因呀.下面是我得代碼
Option Explicit

Private Sub Form_Load()
    MSComm1.CommPort = 1 '設置串口號
    MSComm1.Settings = "9600,n,8,1" '波特率9600bit/s,無校驗,8位數據,1位停止位
    MSComm1.InputLen = 0 '讀取接收緩沖區的所有字符
    MSComm1.PortOpen = True '打開串口
    MSComm1.SThreshold = 0 '不觸發發送事件
    MSComm1.RThreshold = 1 '每一個字符到接收緩沖區都觸發接收事件
    MSComm1.OutBufferCount = 0 '清除發送緩沖區數據
    MSComm1.InBufferCount = 0 '清除接收緩沖區數據
    MSComm1.InputMode = comInputModeText
    If Not MSComm1.PortOpen Then
        MSComm1.PortOpen = True
    End If
End Sub

Private Sub MSComm1_OnComm()
    Dim strData As String

    Select Case MSComm1.CommEvent
        Case comEvReceive
            MsgBox "1"

        Case comEvCTS
            MsgBox "2"
    End Select
End Sub

請高手指教

18 个解决方案

#1


高手幫看看呀。

#2


從你的代碼倒是看不出有什么不對,你在CommEvent中接收一下串口數據看看有沒有條碼返回?

#3


我的MSComm1.CommEvent都是=comEvCTS,而且用MSComm1.input也沒有東西,應該是沒有條碼返回吧.

#4


1 閱讀器是否連接到 COM1
2 是否用閱讀器進行了掃描
3 閱讀器通訊線有無問題
4 串口是否正常

#5


這些都應該是沒有問題的,因為我在windows的超級終端是可以讀到數據的.

#6


水來幫幫小弟呀.

#7


Private Sub Form_Load()
    MSComm1.CommPort = 1 '設置串口號
    MSComm1.Settings = "9600,n,8,1" '波特率9600bit/s,無校驗,8位數據,1位停止位
    MSComm1.InputLen = 0 '讀取接收緩沖區的所有字符
    MSComm1.PortOpen = True '打開串口   ======>>>>>>現在打開后面的設置就沒用了,放到最后呀
    MSComm1.SThreshold = 0 '不觸發發送事件
    MSComm1.RThreshold = 1 '每一個字符到接收緩沖區都觸發接收事件  ===>>>主要是這個呀
    MSComm1.OutBufferCount = 0 '清除發送緩沖區數據
    MSComm1.InBufferCount = 0 '清除接收緩沖區數據
    MSComm1.InputMode = comInputModeText
    If Not MSComm1.PortOpen Then
        MSComm1.PortOpen = True
    End If
End Sub

#8


老大,還是不行呀.MSComm1.CommEvent每次都是comEvCTS

#9


Private Sub MSComm1_OnComm()
    Dim strData As String

    Select Case MSComm1.CommEvent
        Case comEvReceive
            MsgBox "1"

        'Case comEvCTS
            'MsgBox "2"
    End Select
End Sub


        'Case comEvCTS
            'MsgBox "2"
把這兩句刪掉看能能不能接收 可能是一些硬件的握手問題

#10


Handshake 常數

常數 值 描述 
comNone 0 無握手。 
comXonXoff 1 XOn/Xoff 握手。 
comRTS 2 Request-to-send/clear-to-send 握手。 
comRTSXOnXOff 3 Request-to-send 和 clear-to-send 握手皆可。 


OnComm 常數

常數 值 描述 
comEvSend 1 發送事件。 
comEvReceive 2 接收事件。 
comEvCTS 3 clear-to-send 線變化。 

那就應該是硬件握手的問題了,看看上面
都試一下每個Handshake 常數

#11


我怎樣試一下每個Handshake 常數,能說得清楚點嗎,謝謝了。

#12


byeshuang(努力不做菜鳥)  還在嗎。

#13


open之前加上MSComm1.Handshake =0 or 1 or 2 or 3
屬性好像是這樣吧

#14


寫錯了MSComm1.Handshaking =0 or 1 or 2 or 3

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

#15


能不能給我一個最簡單的讀串口例子,首先發送給串口,然后再接收,多謝了。

#16


裝msdn了嗎?下面有mscom的例子。自己看看吧,不難

#17


問題解決了給分,謝謝大家.

#18


幫你頂呀!自己也學習

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com