关于VB接收DPS数据的问题
我用VB做了一个上位机,用来接收DSP程序,原来做的是6路显示,现在被要求做成12路显示的,由于DSP以下发不了那么多数据,要分2次发完,请问大神我这应该怎么做?比如DS...
我用VB做了一个上位机,用来接收DSP程序,原来做 的是6路显示,现在被要求做成12路显示的,由于DSP以下发不了那么多数据,要分2次发完,请问大神我这应该怎么做?比如DSP发个标志位,比如1代表前6路,2代表后6路,那我怎么写程序使上位机可以分辨出来呢?我原来程序如下:
Dim inbuffer As Variant
Dim inbuf() As Byte
inbuffer = MSComm1.Input
inbuf() = inbuffer
DataVolt1 = inbuf(0)
DataVolt2 = inbuf(1)
DataVolt3 = inbuf(2)
DataVolt4 = inbuf(3)
DataVolt5 = inbuf(4)
DataVolt6 = inbuf(5)
DataVolt7 = inbuf(6)
DataVolt8 = inbuf(7)
DataVolt9 = inbuf(8)
DataVolt10 = inbuf(9)
DataVolt11 = inbuf(10)
DataVolt12 = inbuf(11)
voltagenum1 = DataVolt1 * 16 * 16 + DataVolt2
voltagenum2 = DataVolt3 * 16 * 16 + DataVolt4
voltagenum3 = DataVolt5 * 16 * 16 + DataVolt6
voltagenum4 = DataVolt7 * 16 * 16 + DataVolt8
voltagenum5 = DataVolt9 * 16 * 16 + DataVolt10
voltagenum6 = DataVolt11 * 16 * 16 + DataVolt12
请问我现在要改的话怎么改呢?请大神帮我写点程序指导下~因为是半路学的,好多都不懂~如果有什么好的办法也请指教下~谢谢了 展开
Dim inbuffer As Variant
Dim inbuf() As Byte
inbuffer = MSComm1.Input
inbuf() = inbuffer
DataVolt1 = inbuf(0)
DataVolt2 = inbuf(1)
DataVolt3 = inbuf(2)
DataVolt4 = inbuf(3)
DataVolt5 = inbuf(4)
DataVolt6 = inbuf(5)
DataVolt7 = inbuf(6)
DataVolt8 = inbuf(7)
DataVolt9 = inbuf(8)
DataVolt10 = inbuf(9)
DataVolt11 = inbuf(10)
DataVolt12 = inbuf(11)
voltagenum1 = DataVolt1 * 16 * 16 + DataVolt2
voltagenum2 = DataVolt3 * 16 * 16 + DataVolt4
voltagenum3 = DataVolt5 * 16 * 16 + DataVolt6
voltagenum4 = DataVolt7 * 16 * 16 + DataVolt8
voltagenum5 = DataVolt9 * 16 * 16 + DataVolt10
voltagenum6 = DataVolt11 * 16 * 16 + DataVolt12
请问我现在要改的话怎么改呢?请大神帮我写点程序指导下~因为是半路学的,好多都不懂~如果有什么好的办法也请指教下~谢谢了 展开
2个回答
展开全部
简单做法(治标做法):在两次数据之间加入一个不会在正常数据序列中出现的字节串作为分割字节串,例如:AAAAAA&&BBBBBB,然后在VB中用split函数来把接收到的字节串用分割字节串(&&)分为两部分
复杂做法(当然也是治根的办法):DSP的发送函数重做,先设定一个数据分包协议,包括数据包头、数据体、校验码、数据包尾,然后上位机程序做好相应的数据包解析函数就可以了,这种方法比较一劳永逸,数据分包协议做好以后要扩展数据容量或者功能都比较方便
复杂做法(当然也是治根的办法):DSP的发送函数重做,先设定一个数据分包协议,包括数据包头、数据体、校验码、数据包尾,然后上位机程序做好相应的数据包解析函数就可以了,这种方法比较一劳永逸,数据分包协议做好以后要扩展数据容量或者功能都比较方便
更多追问追答
追问
请问第一种方法用SPLIT函数怎么写程序呢?请问能不能给我写个示例让我看一下呢?谢谢了!
追答
Dim Arry
StrTmp = "AAAAAA&&BBBBBB"
Arry = Split(StrTmp, "&&")
'如果就两串看下面
strA=Arry(0)
strB=Arry(1)
'如果大于2个有效串看下面
For i = 0 To UBound(Arry)-1
strPart(i)=Arry(i)
Next i
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询