Код связи VBA для RS 232 не выполнен, он не может передавать какие-либо данные на гаджет Rs 232. Пожалуйста, помогите мне определить, где проблема. Во время передачи нет никаких ошибок, но данные не go или не записываются в com-порт 4. С частью json все в порядке. Я вижу результаты, используя текстовый файл вместо окна «Немедленно». Здесь необходимо записывать данные, отправлять и получать данные из гаджета RS 232. Обратите внимание, что я все еще изучаю этот материал VBA. Возможно, я не на вашем уровне
КОД VBA RS 232
Dim json As String
Dim intPortID As Integer ' Ex. 1, 2, 3, 4 for COM1 - COM4
Dim lngStatus As Long
Dim strError As String
Dim strData As String
Dim lngSize As Long
intPortID = 4
' Initialize Communications
lngStatus = CommOpen(intPortID, "COM" & CStr(intPortID), _
"baud=115200 parity=N data=8 stop=1")
If lngStatus <> 0 Then
' Handle error.
lngStatus = CommGetError(strError)
MsgBox "COM Error: " & strError
End If
' Set modem control lines.
lngStatus = CommSetLine(intPortID, LINE_RTS, True)
lngStatus = CommSetLine(intPortID, LINE_DTR, True)
' Write data to serial port.
strData = JsonConverter.ConvertToJson(transaction, Whitespace:=3)
lngSize = Len(strData)
lngStatus = CommWrite(intPortID, strData)
If lngStatus <> lngSize Then
' Handle error.
End If
Exit_CmdConertJson_Click:
Exit Sub
Err_Handler:
Resume Exit_CmdConertJson_Click
' Read maximum of 64 bytes from serial port.
Dim JSONS As Object
lngStatus = CommRead(intPortID, strData, 14400)
Set rs = db.OpenRecordset("tblEfdReceipts")
If lngStatus > 0 Then
' Process data.
Set JSONS = JsonConverter.ParseJson(strData)
ElseIf lngStatus < 0 Then
Beep
MsgBox "There is no data to updated
' Handle error.
On Error Resume Next
End If
' Process data.
Z = 2
For Each item In JSONS
With rs
.AddNew
rs![TPIN] = item("TPIN")
rs![TaxpayerName] = item("TaxpayerName")
rs![Address] = item("Address")
rs![ESDTime] = item("ESDTime")
rs![TerminalID] = item("TerminalID")
rs![InvoiceCode] = item("InvoiceCode")
rs![InvoiceNumber] = item("InvoiceNumber")
rs![FiscalCode] = item("FiscalCode")
rs![TalkTime] = item("TalkTime")
rs![Operator] = item("Operator")
rs![Taxlabel] = item("TaxItems")("TaxLabel")
rs![CategoryName] = item("TaxItems")("CategoryName")
rs![Rate] = item("TaxItems")("Rate")
rs![TaxAmount] = item("TaxItems")("TaxAmount")
rs![VerificationUrl] = item("TaxItems")("VerificationUrl")
rs![INVID] = Me.InvoiceID
rs.Update
End With
Z = Z + 1
Next
rs.Close
Set rs = Nothing
Set db = Nothing
Set JSONS = Nothing
'Reset modem control lines.
lngStatus = CommSetLine(intPortID, LINE_RTS, False)
lngStatus = CommSetLine(intPortID, LINE_DTR, False)
'Close communications.
Call CommClose(intPortID)
End Sub
Пожалуйста, обратите внимание, здесь я пытаюсь поместить данные в порт, какой из приведенного выше кода является правильным ??
strData = JsonConverter.ConvertToJson(transaction, Whitespace:=3)
JsonConverter.ConvertToJson(transaction, Whitespace:=3) = "COM" & CStr(intPortID)
Или
JsonConverter.ConvertToJson(transaction, Whitespace:=3)=strData
Приведенный выше код не работает в точке ниже:
Write data to serial port.
strData = JsonConverter.ConvertToJson(transaction, Whitespace:=3)
lngSize = Len(strData)
lngStatus = CommWrite(intPortID, strData)
If lngStatus <> lngSize Then
' Handle error.
End If
Настоятельно рекомендуется также вставить начальный и конечный текст перед lngSize = Len (strData), но я этого не понимаю. к сожалению, советник, чтобы понять VBA