我想请教一个VB中利用MScomm控件与单片机串口通信的问题。拜托各位高人能指点一下啊!
我的串口通信采用ModbusRTU协议通信。单片机中从0x0010到0x0020地址中的数据是我需要的一条完整的信息。我设计时按界面的读取数据按钮后,上位机向单片机发送一...
我的串口通信采用ModbusRTU协议通信。单片机中从0x0010到0x0020地址中的数据是我需要的一条完整的信息。我设计时按界面的读取数据按钮后,上位机向单片机发送一组数据,然后单片机就会将我需要的数据传送到上位机,传送完成后单片机中数据就变成了一组新的数据了。上位机接收到数据后利用oncomm进行数据的读取和处理(每接收到20个字节的数据进行一次读取和处理),处理完成后再进行下一组新的数据的接收和处理(处理方法与第一组一致),这样循环,直至收据全部接受完。
我的问题:我在进行数据读取和处理的时候单片机是不是继续往上传第二组数据,上位机的处理速度和单片的速度哪个更快一些呢?我用什么方法才能保证上位机能接收到每一组数据。因为是新手,还请大家多多指教啊! 展开
我的问题:我在进行数据读取和处理的时候单片机是不是继续往上传第二组数据,上位机的处理速度和单片的速度哪个更快一些呢?我用什么方法才能保证上位机能接收到每一组数据。因为是新手,还请大家多多指教啊! 展开
2个回答
展开全部
1.采用异步通讯方式
2.采用命令+数据的握手方式
按界面的读取数据按钮→
上位机向单片机发送命令+一组数据→
单片机接收完毕,根据命令备妥要回复的数据→
单片机回复上位机组号+是否最后一组+第一组数据→
上位机收完第一组数据,判断有没有第二组数据→
如果还有数据,上位机向单片机发送包含组号的命令→
单片机回复相应命令.....
2.采用命令+数据的握手方式
按界面的读取数据按钮→
上位机向单片机发送命令+一组数据→
单片机接收完毕,根据命令备妥要回复的数据→
单片机回复上位机组号+是否最后一组+第一组数据→
上位机收完第一组数据,判断有没有第二组数据→
如果还有数据,上位机向单片机发送包含组号的命令→
单片机回复相应命令.....
更多追问追答
追问
谢谢你的回答,再请教一下:
因为下位机是别人做好的,他给了我一个通信协议,就是下面的这个,单片机给我回复的内容中不包含组号啊!我怎样才能把每组数据都联系起来呢,我要把数据保存到EXCEL中。
通信协议:
读取数据下行命令
地址 功能码 起始地址高字节 起始地址低字节 数据长度高字节 数据长度低字节
读取数据上行命令
地址 功能码 数据长度 数据内容1 …… 数据内容n
追答
取消上位机 oncomm 读取方式
在上位机软件界面添加时钟控件,并增加一个接收字串变量
1.按界面的读取数据按钮后,设置 时钟控件 Interval 属性为 1000ms,让时钟控件运作
2.上位机向单片机发送一组数据。
时钟控件 Timer 事件
1.读取 MSCOMM 输入缓冲,并将数据赋值到字串变量
2.检查字串变量长度是否为 0
3.如果字串变量长度 > 0,每20字节处理数据,将字串变量清空,设置钟控件 Interval 属性为 0 让时钟控件停止运作
要点:时钟控件 Interval 属性设多少,由实验确定,总之在这个时间内收齐有可能最长的数据就可以。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询