我已经通过RS-232转USB转换器电缆将秤连接到我的电脑。我的目标是在excel 2007中创建一个命令按钮,将按比例缩放到所选单元格中。我在用户表单中使用以下代码使其工作。
Private Sub XMCommCRC1_OnComm()
Static sInput As String
Dim sTerminator As String
Dim Buffer As Variant
' Branch according to the CommEvent property
Select Case XMCommCRC1.CommEvent
Case XMCOMM_EV_RECEIVE
Buffer = XMCommCRC1.InputData ' Use Input property for MSComm
sInput = sInput & Buffer
If Worksheets("Settings").Range("Terminator") = "CR/LF" Then
sTerminator = vbCrLf
Else
sTerminator = vbCr
End If
If Right$(sInput, Len(sTerminator)) = sTerminator Then
XMCommCRC1.PortOpen = False
sInput = Left$(sInput, Len(sInput) - Len(sTerminator))
Select Case Left$(sInput, 2)
Case "ST", "S "
ActiveCell.Value = CDbl(Mid$(sInput, 7, 8))
ActiveCell.Activate
Case "US", "SD"
MsgBox "The balance is unstable."
Case "OL", "SI"
MsgBox "The balance is showing an eror value."
End Select
sInput = ""
End If
End Select
End Sub
Public Sub RequestBalanceData()
With Worksheets("Settings")
' Configure and open the COM port
If Not XMCommCRC1.PortOpen Then
XMCommCRC1.RThreshold = 1
XMCommCRC1.RTSEnable = True
XMCommCRC1.CommPort = .Range("COM_Port")
XMCommCRC1.Settings = .Range("Baud_Rate") & "," & _
.Range("Parity") & "," & _
.Range("Data_Bits") & "," & _
.Range("Stop_Bits")
XMCommCRC1.PortOpen = True
End If
' Send balance's "SI" (Send Immediate) command
' to request weighing data immediately
If .Range("Terminator") = "CR/LF" Then
XMCommCRC1.Output = "R" & vbCrLf
Else
XMCommCRC1.Output = "R" & vbCr
End If
End With
End Sub
然后我创建了一个带有以下代码的命令按钮。
Private Sub CommandButton1_Click()
UserForm1.RequestBalanceData
End Sub
当我点击命令按钮时,重量被放置在所选单元格中。但是,这并不是一直发生的。有时当我点击按钮时,没有任何东西放在单元格中,我将不得不多次单击它,直到重量放在单元格中。我想解决这个问题,但我不确定从哪里开始。这是代码本身的问题,还是更可能是转换器或规模本身的问题?
感谢任何帮助。
以下是比例:https://www.optimascale.com/product-page/op-915-bench-scale
以下是转换器电缆:https://www.amazon.com/gp/product/B06XJZHCV8/ref=ox_sc_act_title_3?smid=A33N7O64F8FSDL&psc=1
以下是我用于代码的教程:http://www.msc-lims.com/lims/diybalance.html
以下是我使用的教程中的ActiveX控件:http://www.hardandsoftware.net/xmcomm.htm
编辑:我已经完成了Wedge的建议并在我的第一个结束后放置了一个Mgsbox sInput。我得到了不一致的结果。我想知道我是否需要更改我的比例发送格式。比例目前设置为发送格式4.以下是比例手册(发送格式见第21-23页:https://docs.wixstatic.com/ugd/78eff6_e629ae5fe7004c7189060cca4bc7c3de.pdf
2ND编辑: 我已将我的串口连接到putty。我的比例是连续发送模式。在腻子中,比例始终如下:ST,GS + 0.00lb。但是,当我尝试在单元格中输入权重值时,消息框有时会显示已发送的部分数据(ST,GS + 0.00lb)已被切断,或者按下一个按钮已多次发送。有谁知道我会如何解决这个问题?
3RD EDIT:在我看来,连续发送模式(模式4)我的比例被设置为发送数据太快并导致我的代码陷入困境。我想尝试使用命令请求模式(模式3),但我无法弄清楚如何正确解析数据字符串并将其放入单元格。命令请求模式的发送格式为:
如果有人能帮助我弄清楚如何让这个工作,我会非常感激。