【发布时间】:2020-09-01 13:51:23
【问题描述】:
我有一个连接到 Heidenhain ND221 显示器的测量设备,它可以通过 RS232 串行数据发送它的当前值。我想通过 excel vba 读取该数据以进行一些计算。从数据表中我知道串行设置 (9600,E,7,2) 和 putty 之类的终端正确显示数据:“-___x.xxxx”(+/- 和值之间有 4 个空格)
我使用了我找到的vba代码here
#If VBA7 Then ' Excel 2010 or later
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)
#Else ' Excel 2007 or earlier
Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long)
#End If
Public Sub SerialPort()
' open a COM port, transmit a message, gather results, close the port.
' open the COM port as file #1
Debug.Print "Open COM port 3"
Open "COM3:9600,E,7,2" For Binary Access Read Write As #1
transmit$ = Chr(2)
' transmit a message
Put #1, , transmit$
Debug.Print "Message sent."
' wait a bit for a response
Sleep 100
' check for received message
Debug.Print "Look for incoming message."
On Error Resume Next
Input #1, receive$
Debug.Print receive$
On Error GoTo 0
' close the serial port
Debug.Print "Close COM port."
Close #1
Debug.Print "Done."
End Sub
我确实收到了数据,但它在读取前面的 4 个空格时缺少正号或负号。
是串口配置还是输入#语句,我该如何解决?
我还尝试了Get 和Line Input,结果相同。
谢谢!
【问题讨论】:
-
显示由 Ctrl+B 或 STX = Chr(2) 触发发送其数据。这完美无瑕。 Debug.Print 不适用于传输$,因为它不是可打印的字符。
标签: excel vba serial-port