看板 Visual_Basic 關於我們 聯絡資訊
以下是小弟寫的code, 研究了一天,還是找不到錯誤的原因不知是否有人可以幫忙一下. 我主要有一個發送器會一直送001#001#...., 當按一個按鈕後,會變255#255#.... 我在終端機都正常. 但是套在VB6後,正確看到 001#001#....可是按完按鈕後, 它依然還是001#001#... 不會變255, 我試圖...想修改RThreshold, InputLen, 會看到有5字頭的跑出來, 但是資料是亂的, 另一個是, 在我執行SetSerialPort()後的第一次, 按鈕按下, 001會變255, 但之後就不會了 上網查資料, 看到很多人的寫法都跟我一樣,但是都沒出問題! 所以是否有人可以幫忙一下, 給一些想法..... ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '============================================== ' Set Serial Port '============================================== Function SetSerialPort() On Error Resume Next '表示錯誤產生時,跳過錯誤繼續執行下去 Dim cnt_Port As Integer If (MSComm1.PortOpen) Then MSComm1.PortOpen = False '先關閉COM port End If With MSComm1 .CommPort = 1 '通訊連接埠 .Settings = "115200,N,8,1" '設定串列 .PortOpen = True '串列埠開啟 .InputLen = 1 '輸入字元長度 .InBufferSize = 128 .InputMode = comInputModeBinary .OutBufferSize = 128 .InBufferCount = 0' 清除InBufferCount .OutBufferCount = 0' 清除OutBufferCount .RTSEnable = False '關閉RTS信號 .EOFEnable = False '尋找找EOF字符 .SThreshold = 1 '代表發出多少字元後要觸發事件 .RThreshold = 1 '代表接收到多少字元後要觸發事件 .Handshaking = comNone .NullDiscard = False '忽略空字元 End With End Function '============================================== ' MSComm1 觸發 '============================================== Private Sub MSComm1_OnComm() Dim InByte() As Byte Dim i As Integer Select Case MSComm1.CommEvent Case comEvReceive InByte = MSComm1.Input For i = LBound(InByte) To UBound(InByte) Text10.Text = Text10.Text & Chr(InByte(i)) Next i End Select Text10.SelStart = Len(Text10.Text) '捲軸往下拉 End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.236.8
BlueFeel:next i後面加MSComm1.InBufferCount = 0好像就可以,真怪 12/04 00:12
※ 編輯: BlueFeel 來自: 114.32.236.8 (12/04 00:41)
laijackai:先降速看看...VB很慢的... 12/07 21:33