I am a Point of Sale Terminal Programmer/Developer and currently assigned to develop a VTI Simulator (Virtual Terminal Interface) than can exchange messages as per Specification through RS232-COM Port.
Using VB MSCOMM ActiveX control, I am managed to receive Data from POS Terminal but when i try to send data (Less than 100 Bytes) to POS terminal, it works but doesn't work for data more than 99 Bytes.
Following is the related coding part:
MSComm1 Design Time Property Setup
' InBufferSize = 1024
' OutBufferSize = 512
' RThreshold = 0
' SThreshold = 0
' InputLen = 0
' ParityReplace = "?"
' RTSEnable = False
' DTREnable = False
' NullDiscard = False
' Handshaking = 0
' InputMode = 0
' EOFEnable = False
' Setting = 9600,n,8,1
'Global Declaration'
Dim SendArray(255) As Variant
Dim SendBuffer As Variant
Private Sub Form_Activate()
MSComm1.CommPort = 1
MSComm1.PortOpen = True
'BalanceInq
'STX
SendArray(0) = CLng(&H2)
'LLLL
SendArray(1) = CLng(&H1)
SendArray(2) = CLng(&H0)
'Message Data
'Transport Header
SendArray(3) = CLng(&H36)
SendArray(4) = CLng(&H30)
'Transport Destination
SendArray(5) = CLng(&H30)
SendArray(6) = CLng(&H30)
SendArray(7) = CLng(&H30)
SendArray(8) = CLng(&H30)
'Transport Source
SendArray(9) = CLng(&H30)
SendArray(10) = CLng(&H30)
SendArray(11) = CLng(&H30)
SendArray(12) = CLng(&H30)
'Presentation Header
'Format Version
SendArray(13) = CLng(&H31)
'Request Indicator
SendArray(14) = CLng(&H30)
'Transaction Code
SendArray(15) = CLng(&H42)
SendArray(16) = CLng(&H31) 'B1-Pre Sale Authorization
'Response Code
SendArray(17) = CLng(&H30)
SendArray(18) = CLng(&H30)
'More Indicator
SendArray(19) = CLng(&H31)
'Field Separator
SendArray(20) = CLng(&H1C)
'Field Data Format
SendArray(21) = CLng(&H58)
SendArray(22) = CLng(&H33)
SendArray(23) = CLng(&H0)
SendArray(24) = CLng(&H8)
SendArray(25) = CLng(&H30)
SendArray(26) = CLng(&H35)
SendArray(27) = CLng(&H31)
SendArray(28) = CLng(&H31)
SendArray(29) = CLng(&H31)
SendArray(30) = CLng(&H31)
SendArray(31) = CLng(&H31)
SendArray(32) = CLng(&H31)
SendArray(33) = CLng(&H1C)
SendArray(34) = CLng(&H30)
SendArray(35) = CLng(&H33)
SendArray(36) = CLng(&H0)
SendArray(37) = CLng(&H6)
SendArray(38) = CLng(&H30)
SendArray(39) = CLng(&H38)
SendArray(40) = CLng(&H30)
SendArray(41) = CLng(&H33)
SendArray(42) = CLng(&H30)
SendArray(43) = CLng(&H35)
SendArray(44) = CLng(&H1C)
SendArray(45) = CLng(&H30)
SendArray(46) = CLng(&H34)
SendArray(47) = CLng(&H0)
SendArray(48) = CLng(&H6)
SendArray(49) = CLng(&H31)
SendArray(50) = CLng(&H32)
SendArray(51) = CLng(&H31)
SendArray(52) = CLng(&H32)
SendArray(53) = CLng(&H31)
SendArray(54) = CLng(&H32)
SendArray(55) = CLng(&H1C)
SendArray(56) = CLng(&H58)
SendArray(57) = CLng(&H30)
SendArray(58) = CLng(&H0)
SendArray(59) = CLng(&H8)
SendArray(60) = CLng(&H31)
SendArray(61) = CLng(&H31)
SendArray(62) = CLng(&H31)
SendArray(63) = CLng(&H31)
SendArray(64) = CLng(&H31)
SendArray(65) = CLng(&H31)
SendArray(66) = CLng(&H31)
SendArray(67) = CLng(&H31)
SendArray(68) = CLng(&H1C)
SendArray(69) = CLng(&H33)
SendArray(70) = CLng(&H30)
SendArray(71) = CLng(&H0)
SendArray(72) = CLng(&H16)
SendArray(73) = CLng(&H37)
SendArray(74) = CLng(&H30)
SendArray(75) = CLng(&H30)
SendArray(76) = CLng(&H30)
SendArray(77) = CLng(&H34)
SendArray(78) = CLng(&H36)
SendArray(79) = CLng(&H39)
SendArray(80) = CLng(&H39)
SendArray(81) = CLng(&H31)
SendArray(82) = CLng(&H30)
SendArray(83) = CLng(&H30)
SendArray(84) = CLng(&H31)
SendArray(85) = CLng(&H33)
SendArray(86) = CLng(&H32)
SendArray(87) = CLng(&H31)
SendArray(88) = CLng(&H30)
SendArray(89) = CLng(&H1C)
SendArray(90) = CLng(&H41)
SendArray(91) = CLng(&H32)
SendArray(92) = CLng(&H0)
SendArray(93) = CLng(&H2)
SendArray(94) = CLng(&H30)
SendArray(95) = CLng(&H31)
SendArray(96) = CLng(&H1C)
SendArray(97) = CLng(&H41)
SendArray(98) = CLng(&H32)
SendArray(99) = CLng(&H0)
SendArray(100) = CLng(&H1)
'SendArray(101) = CLng(&H30)
SendArray(102) = CLng(&H1C)
SendArray(103) = CLng(&H3)
SendArray(104) = CLng(&H0) 'BCD - CStr 'Normal - Val
For Recur = 2 To 102
LRC = LRC Xor SendArray(Recur)
Next
SendArray(103) = LRC
Label1.Caption = "Trasmitting request..."
SendBuffer = vbNullString
For Recur = 0 To 103
SendBuffer = SendBuffer & Chr(SendArray(Recur))
Next
MSComm1.Output = SendBuffer
ReceiveBuffer = MSComm1.Input
End Sub
Concluding: Within 99 Bytes of Data sent to POS Terminal, this code works perfect, Pls anyone help to let me understand, why this doesn't work for more data. (Nothing triggers on POS Terminal) My requirement is to send upto 250 Byte of Data.
Looking forward for the help.