急!!!!!如何让VB串口接收的数据长度可变!!!可能是20个字符,可能是45个字符。。。。

现在是这样如果我将RTHReshold为20,则触发中断后只收了20个,那45的时候就不行了。如果我设置成45.,20字符的时候就不触发中断了!!!咋办!!怎么能让它可变... 现在是这样 如果我将RTHReshold 为20,则触发中断后只收了20个,那45的时候就不行了。如果我设置成45.,20字符的时候就不触发中断了!!!咋办!!怎么能让它可变!谢谢谢谢谢谢!!! 展开
 我来答
hilinx
2010-10-11 · 超过42用户采纳过TA的回答
知道答主
回答量:216
采纳率:0%
帮助的人:106万
展开全部
太阳雨多年积攒极其珍贵的原创VB串口通信技术资料V4.0 (600M)

VB串口通信编程源码200个,多种行业多种应用...
VB串口通信技术文章160篇,详尽地对VB串口通信的诠释...
VB串口通信电子书籍16部,工业通信名家著作,经典细致...
VB串口通信控件16个,简化串口通信编码,提高开发效率...
VB串口视频教程44个,一套完整视频教程,讲解直观,更快掌握...

超级赠品一:OSI网络模型教程48M
超级赠品二:串口硬件层知识大全资料包24M
超级赠品三:串口调试工具80个,应用于各种串口调试与校验计算...
超级赠品四:程序员发展类文章和书籍12部,帮助您的成长,健康和发展....
超级赠品五:更送虚拟串口调试软件, 帮助你在没有串口的电脑上也能正常调试...

你在淘宝搜索“太阳雨VB串口资料”就可以找到,希望可以帮助到你。
同时,还有"太阳雨VC串口资料"和"太阳雨DELPHI"串口资料...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萍水相逢就是缘吧
2010-10-10 · TA获得超过6078个赞
知道大有可为答主
回答量:1.5万
采纳率:54%
帮助的人:2087万
展开全部
那就 将RTHReshold 为 1

接收一个,存起来

最后一起处理

推荐看书 Visual_Basic与_RS-232_串行通信控制

祝你顺利
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dh31133
2010-10-10 · 超过30用户采纳过TA的回答
知道答主
回答量:186
采纳率:0%
帮助的人:94.5万
展开全部
全局参数:Private Rv_data() As Byte '存放接收的数据Private tmpRV() As Byte '存放暂存的数据Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
————————————————————————————————————————————
Form_Load ()中先初始化控件参数With MSComm1.Settings = "9600,N,8,1".InputMode = 1 '设置接受数据的类型是二进制类型数据.InputLen = 8 '一次性从接收缓冲区中读取所有数据(8个字节为一组).InBufferCount = 0 '清空接收缓冲区.OutBufferCount = 0 '清空发送缓冲区.SThreshold = 0 '一旦发送数据就触发OnComm()事件来检测是否返回数据.RThreshold = 1 '接收到1个字节数据就立即触发OnComm()事件.CommPort = 1 '使用第一个串口.PortOpen = True '打开串口End With
——————————————————————————————————————————————思路是这样的:按8个为一组然后一组一组地进行取出,直到缓冲区数据全部取完为止Private Sub MSComm1_OnComm()Dim UB1%, UB2%, TM As Integer, i As IntegerSelect Case MSComm1.CommEventCase comEvReceive Sleep (20) '相隔20ms就可以正确接收到24个字节的数据 Do While MSComm1.InBufferCount > 0 TM = TM + 1 If TM = 1 Then Rv_data = MSComm1.Input Else tmpRV = MSComm1.Input UB1 = UBound(Rv_data) UB2 = UBound(tmpRV) + 1 '元素比下标大1 ReDim Preserve Rv_data(UB1 + UB2) For i = UB1 + 1 To UB1 + UB2 Rv_data(i) = tmpRV(i - UB1 - 1) Next i End If LoopIf Check_RvData Then Call Response_OK() '这里用来进行正确的处理Else Call Response_Bad() '这里用来进行错误处理End IfErase tmpRVErase Rv_dataEnd SelectEnd Sub——————————————————————————————————————————————
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
弥觅云3d
2012-07-14
知道答主
回答量:4
采纳率:0%
帮助的人:5558
展开全部
我也在搞这个问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式