作者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
1F:→ BlueFeel:next i後面加MSComm1.InBufferCount = 0好像就可以,真怪 12/04 00:12
※ 编辑: BlueFeel 来自: 114.32.236.8 (12/04 00:41)
2F:推 laijackai:先降速看看...VB很慢的... 12/07 21:33