gpt4 book ai didi

java - VB6 应用程序与 Java 8u60 的串行通信

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:11 26 4
gpt4 key购买 nike

我正在编写一个 Java 应用程序来替换 VB6 应用程序。应用程序必须使用 10 字节二进制协议(protocol)轮询远程系统,响应也是一个 10 字节二进制消息,其中最后一个字节是通过将所有先前字节相加而计算出的校验和。

我遇到的问题是 Java 应用程序中存在大量校验和不匹配的错误。

结果具有很好的可重复性。 VB6 应用程序几乎没有错误,但 Java 应用程序有很多错误。我检查了端口设置,它们是相同的 19200,n,8,1。

在VB6中端口设置串口设置如下:

    CDTimeout = 0
CommPort = 1
CTSTimeout = 0
DSRTimeout = 0
DTREnable = False
EOFEnable = False
Handshaking = None
InBufferCount = 0
InBufferSize = 1024
Index = 0
InputLen = 0
InputMode = comInputModeBinary
Interval = 1000
Name = "comInterfaceUnit"
NullDiscard = False
OutBufferSize = 512
ParityReplace = "?"
RThreshold = 10
RTSEnable = False
Settings = "19200,n,8,1"
SThreshold = 0
Tag = ""

javax.comm SerialPort 设置如下:

    baudrate = 19200
closed = false
databits = 8
dtr = false
flowcontrol = 0
framing = false
framingByte = 0
framingByteReceived = false
name = "COM1"
nativeHandle = 324295048
notifyMask = 1
parity = 0
rcvThreshold = -1
rcvTimeout = -1
rts = true
startBI = false
stateCD = false
stateCTS = false
stateDSR = false
stateFE = false
stateOE = false
statePE = false
stateRI = false
stopBits = 1

在 VB6 中,事件处理程序只是将接收字节复制到字节数组中,而这正是 Java 代码通过 SerialEvent 执行的操作。

Java 校验和计算:

int intChecksumInPkt = (int)(arychrMsg[RESPONSE_LENGTH -1] & 0xff) ,intCalcChecksum = 0; 
for( int b=0; b<RESPONSE_LENGTH -1; b++ ) {
intCalcChecksum += (int)(arychrMsg[b] & 0xff);
}
intCalcChecksum &= 0xff;
if ( intCalcChecksum == intChecksumInPkt ) { ... }

VB6校验和代码:

intSum = 0
For intI = gintInterfaceUnitReplyStatusOffset To gintInterfaceUnitReplyData8Offset
intSum = intSum + CInt(gbytInterfaceUnitReplyArray(gintCommPortIndex, intI))
Next intI
If gbytInterfaceUnitReplyArray(gintCommPortIndex, gintInterfaceUnitReplyChecksumOffset) = CByte(intSum And &HFF) Then
' Match, so a 'good' message.
blnFunctionValue = True
End If

最佳答案

实际问题是我没有调用“enableReceiveThreshold”。

现在可以使用。

关于java - VB6 应用程序与 Java 8u60 的串行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33142780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com