作者BlueFeel (藍色感覺)
看板Visual_Basic
標題[VB6 ] SetSerialPort問題
時間Sat Dec 3 22:32:22 2011
以下是小弟寫的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