VB串口通信:如何接收缓存中的多条数据,并在多个text中显示出来?

zzcjcn5566 2011-01-24 09:16:15
上位机软件通过RS232串口发送命令给单片机,让单片机读取EEPROM中的数据和写入数据。

软件界面有两个命令控件,一个读数据(同时向单片机发出多条读EEPROM数据指令),一个写数据(同时向单片机发送多条写入EEPROM数据指令).
还有多个TEXT控件(代表了EEPROM中不同地址的数据),显示单片机返回的指令及EEPROM中的数据。

问题:如何同时发送多条读数据命令后,把串口接收缓存(单片机返回EEPROM数据)内的多条数据接收并且准确显示在多个text控件中?


上位机查询指令:AO(起始位)+00+00(EEPROM地址)+C0(结束位)
单片机返回指令:B0(起始位)+00(EEPROM数据)

请各位高手提供思路或vb代码,谢谢!
...全文
1882 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
touren 2013-10-18
  • 打赏
  • 举报
回复
引用 18 楼 cbm666 的回复:
已替你写好 发送与接收的两个代码 使用了握手协议 邮箱 ??
cbm666大哥;能否发一份给我,谢谢! widedog999@163.com
乐一夏 2013-08-08
  • 打赏
  • 举报
回复
楼主,这个代码你还在不在,能把代码发我一份吗?谢谢。837776473@qq.com
abcddabc 2013-05-30
  • 打赏
  • 举报
回复
引用 18 楼 cbm666 的回复:
已替你写好 发送与接收的两个代码 使用了握手协议 邮箱 ??
我的邮箱:2274077582@qq。com,非常感谢
abcddabc 2013-05-30
  • 打赏
  • 举报
回复
能不能把程序也发我一份啊《我现在也遇到
引用 10 楼 cbm666 的回复:
[Quote=引用 8 楼 king06 的回复:] 一次不要向单片机发那么多数据 [/Quote] 完全同意, 最好用双工握手协议最稳定, 等单片机回应后再发送 (ACK NAK 的概念) 4F 可能我说的不清楚 我指的批量发送是 一批的TextBox 而不是一批数据库内的所有记录 下图是我将数据库内 For i=0 to rs.recordcount-1 逐笔发送 需要代码我再给你吧
老师,能不能也发我一份啊《我现在也遇到了同样的问题,非常感谢。
lilikaixin 2012-10-12
  • 打赏
  • 举报
回复
在进行人员定位时,VB怎样从串口读取数组内容啊,麻烦各位高手指点一下,非常感谢
dh243210877 2012-09-04
  • 打赏
  • 举报
回复
谁能给我说下,怎么把缓存里的数赋给数组然后进行单个操作?
wbl51 2011-10-05
  • 打赏
  • 举报
回复
我也很想知道
VB 怎么循环的 发送 和接收
多条 16进制 数据
q347957334 2011-04-08
  • 打赏
  • 举报
回复
18楼的能发份给我吗,谢谢啊,347957334@qq。com
_三皮_ 2011-01-26
  • 打赏
  • 举报
回复
你所谓的同时发,肯定也是排队的,因为一个串口只能打开一次,只要一帧数据一次发过去就可以了
dbcontrols 2011-01-25
  • 打赏
  • 举报
回复
双方约定好协议,编码,解码即可
贝隆 2011-01-25
  • 打赏
  • 举报
回复
兄弟,串口通信只能一条命令一条命令的执行通信,不管你是读还是写。
如果你要一次读多个地址或写多个地址,也不是不行,但不是在通信上做文章而是在你的单片机程序和通信命令上做文章,你可以修改通信协议,让他可以自定义读写多个地址(起始地址+地址长度)。
至于如何发命令你可以考虑把读放入一个Timer控件中轮询读取,读的频率可以修改Timer的Interval来实现。
关于如何实现串口通信,请参阅:
http://download.csdn.net/source/1498637
http://download.csdn.net/source/1498644
http://download.csdn.net/source/1262066
of123 2011-01-25
  • 打赏
  • 举报
回复

实际上是协议设计问题。

最好是命令应答对,一一对应。不要一次发多条命令。
li163 2011-01-25
  • 打赏
  • 举报
回复
看标题是上位机接收问题,看内容既有发送又有接收,到底是什么问题?
zzcjcn5566 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cbm666 的回复:]
引用 8 楼 king06 的回复:
一次不要向单片机发那么多数据


完全同意, 最好用双工握手协议最稳定, 等单片机回应后再发送 (ACK NAK 的概念)

4F 可能我说的不清楚 我指的批量发送是 一批的TextBox 而不是一批数据库内的所有记录

下图是我将数据库内 For i=0 to rs.recordcount-1 逐笔发送



需要代码我再给你吧
[/Quote]麻烦您把代码发给我吧,我可以参考下,任务挺急的。谢谢!!
cbm6666 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 king06 的回复:]
一次不要向单片机发那么多数据
[/Quote]

完全同意, 最好用双工握手协议最稳定, 等单片机回应后再发送 (ACK NAK 的概念)

4F 可能我说的不清楚 我指的批量发送是 一批的TextBox 而不是一批数据库内的所有记录

下图是我将数据库内 For i=0 to rs.recordcount-1 逐笔发送



需要代码我再给你吧
zzcjcn5566 2011-01-25
  • 打赏
  • 举报
回复
现在使用的是一个笨办法,是把串口接收缓存的数据赋给一个变量,让后使用mid函数取值,把取出来的值赋给文本框控件显示出来,但是接收的数据多了,mid函数就会取错。
king06 2011-01-25
  • 打赏
  • 举报
回复
一次不要向单片机发那么多数据
zzcjcn5566 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tiger_zhao 的回复:]
串口速度远小于 CPU 的处理速度,所以还是老老实实地发一个请求接收一个数据、再发一个请求接收一个数据的循环方式进行。
[/Quote]我也想使用这种方式,比较稳定,以前写过串口发码软件,收码没有写过,麻烦给一段代码参考下,谢谢。
现在使用的是一个笨办法,是把串口接收缓存的数据赋给一个变量,让后使用mid函数取值,把取出来的值赋给文本框控件显示出来,但是接收的数据多了,mid函数就会取错。
zzcjcn5566 2011-01-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cbm666 的回复:]
一.多个Textbox 可以先处理加总, 但得先各别转为16进制,最前面加上起始符 最后面加上终止符, 发送这批字串, 不会影响同时接收进来的数据. 但你的textbox最好用数组控件 再用 For..NEXT 循环

二.发送数据如有汉字 注意高低位对调

接收可以使用 OnComm事件, 分解后再逐一带入 Textbox, 但你不能使用上面正在传输的textbox 可以先存入变量或另组……
[/Quote]谢谢
cbm6666 2011-01-25
  • 打赏
  • 举报
回复
【CBM666 的串口发送--16进制】
http://cbm666.net/forum.php?mod=viewthread&tid=615&fromuid=2


【CBM666 的串口收送学习】
http://cbm666.net/forum.php?mod=viewthread&tid=773&fromuid=2
加载更多回复(7)

864

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧