要發送的內容如下:
SOH+"S01A1"+STX+"010"+ETX+BCC這几個是固定條件
SOH=01H,STX=02H,ETX=03H
BBC是算出來的
BCC = 01H xor 53H xor 30H xor 31H xor 41H xor 31H xor 02H Xor 30H xor 31H xor 30H xor 03H or 20H =33H轉成十六制是這樣的
SOH S 0 1 A 1 STX 0 1 0 ETX BCC
01H 53H 30H 31H 41H 31H 02H 30H 31H 30H 03H 33H在VB里十六進制前面是加"&H"的,請問在VB里用MSCOMM控件怎樣發送?
SOH+"S01A1"+STX+"010"+ETX+BCC這几個是固定條件
SOH=01H,STX=02H,ETX=03H
BBC是算出來的
BCC = 01H xor 53H xor 30H xor 31H xor 41H xor 31H xor 02H Xor 30H xor 31H xor 30H xor 03H or 20H =33H轉成十六制是這樣的
SOH S 0 1 A 1 STX 0 1 0 ETX BCC
01H 53H 30H 31H 41H 31H 02H 30H 31H 30H 03H 33H在VB里十六進制前面是加"&H"的,請問在VB里用MSCOMM控件怎樣發送?
S(1)=&H01
S(2)=&H53
...
S(12)=&H33
MSComm.Output=S
MSComm.InputMode = comInputModeText
MSComm.Output=Chr(&H1) & "S01A1" & Chr(&H2) & "010" & Chr(&H3) & chr(&h33)2: 字节方式发送
参考hellobcb(学海无涯,回头是岸),不过要加一句
MSComm.InputMode = comInputModeBinary
'=======================
'初始化控件 (COM) <<-------------------------------------
'strSetings="57600,n,8,1"
'nCommPort为端口号,1
'=======================
Public Sub IniCOM(strSetings As String, nCommPort As Integer)
On Error GoTo ERR_RESULT
m_Protocol = tyCOMProtocol
MyComm.Settings = strSetings
MyComm.CommPort = nCommPort
MyComm.InputMode = comInputModeBinary
MyComm.PortOpen = True
MyComm.InputLen = 0 MyComm.NullDiscard = False 'NULL字符从端口传送到接受缓冲区
MyComm.DTREnable = False 'DTR线无效
MyComm.EOFEnable = False '不寻找EOF符
MyComm.RTSEnable = False 'RTS线无效
MyComm.RThreshold = 1 '接收1Byte返回
MyComm.InBufferCount = 0 '清空接受缓冲区
MyComm.OutBufferCount = 0 '清空传输缓冲区
MyComm.SThreshold = 1 '如果传输缓冲区完全空时产生
MyComm.OutBufferCount = 0ReDim m_MsgBuffer(0)
ReDim m_BufferTmp(0)
m_bMsgHead = False
m_lDataCount = -1
Exit SubERR_RESULT:
MsgBox "本机并未设置此端口或端口已被占用,请用户重新设置。"
End Sub
然后就可以用mscomm.ouput="要发送的东西"
可以是array,string,都行。
16进制可以放到数组里面,
比如
dim arr() as byte
redim arr(2)
arr(0)=cbyte(&H30)
arr(1)=cbyte(&H98)
mscomm.ouput=arr