当前位置:编程学习 > VB >>

串口接收20万个数据。。再在msflexgrid里显示,问题是不显示的话。接收到尾帧时 接收的数据是完整的个数,,加了显示,,接收的数据就有漏掉

串口接收20万个数据。。再在msflexgrid里显示,不显示的话。接收到尾帧时 接收的数据是完整的个数,不遗漏,问题是加了显示后,,就发现接收的数据就有漏掉。会漏个几十个 你可以考虑将接收来的数据存储在数组中,等接收万数据后再显示。 将数据直接写入数据库表,msflexgrid 与记录集绑定,每次接收到新数据后,执行 rs.ReQuery。不要人工填充 msflexgrid。 接受到数组, 控件从数组显示.
引用 2 楼 of123 的回复:
将数据直接写入数据库表,msflexgrid 与记录集绑定,每次接收到新数据后,执行 rs.ReQuery。不要人工填充 msflexgrid。

写入数据库我不认同,这显然会大大的降低程序的运行效率,就楼主这个情况,显然是处理大量数据时占用了CPU资源,从而导致数据丢失。
我一直有个疑问,20万个数据?真是20万个数据?楼主没有开玩笑吧?如果是20万个数据,楼主就不应该用中断方式接收,而应该用轮询方式接收,即发送命令后就等待接收数据,给一个时间段给处理接收数据,等接收完了,再处理填写入表格的部分即可。 写绑定的数据库表,实际上反而比人工写入 MSFlexGrid 要快。我做过,显然比那个“显然”更可靠。

因为用 SQL 写入数据时,是将 SQL 命令丢给了数据库驱动,让它去后台异步执行。VB 代码就可以转而去处理数据接收了。
引用 4 楼 Veron_04 的回复:
Quote: 引用 2 楼 of123 的回复:

将数据直接写入数据库表,msflexgrid 与记录集绑定,每次接收到新数据后,执行 rs.ReQuery。不要人工填充 msflexgrid。

写入数据库我不认同,这显然会大大的降低程序的运行效率,就楼主这个情况,显然是处理大量数据时占用了CPU资源,从而导致数据丢失。
我一直有个疑问,20万个数据?真是20万个数据?楼主没有开玩笑吧?如果是20万个数据,楼主就不应该用中断方式接收,而应该用轮询方式接收,即发送命令后就等待接收数据,给一个时间段给处理接收数据,等接收完了,再处理填写入表格的部分即可。


发送512*512个数据
引用 4 楼 Veron_04 的回复:
Quote: 引用 2 楼 of123 的回复:

将数据直接写入数据库表,msflexgrid 与记录集绑定,每次接收到新数据后,执行 rs.ReQuery。不要人工填充 msflexgrid。

写入数据库我不认同,这显然会大大的降低程序的运行效率,就楼主这个情况,显然是处理大量数据时占用了CPU资源,从而导致数据丢失。
我一直有个疑问,20万个数据?真是20万个数据?楼主没有开玩笑吧?如果是20万个数据,楼主就不应该用中断方式接收,而应该用轮询方式接收,即发送命令后就等待接收数据,给一个时间段给处理接收数据,等接收完了,再处理填写入表格的部分即可。

轮训法 就是用timer做的吧?不知道是不是我做的不好,timer做的速度太慢了。timer最小值只能设1ms。
引用 7 楼 u011672494 的回复:
Quote: 引用 4 楼 Veron_04 的回复:

Quote: 引用 2 楼 of123 的回复:

将数据直接写入数据库表,msflexgrid 与记录集绑定,每次接收到新数据后,执行 rs.ReQuery。不要人工填充 msflexgrid。

写入数据库我不认同,这显然会大大的降低程序的运行效率,就楼主这个情况,显然是处理大量数据时占用了CPU资源,从而导致数据丢失。
我一直有个疑问,20万个数据?真是20万个数据?楼主没有开玩笑吧?如果是20万个数据,楼主就不应该用中断方式接收,而应该用轮询方式接收,即发送命令后就等待接收数据,给一个时间段给处理接收数据,等接收完了,再处理填写入表格的部分即可。

轮训法 就是用timer做的吧?不知道是不是我做的不好,timer做的速度太慢了。timer最小值只能设1ms。

是的
引用 8 楼 Veron_04 的回复:
Quote: 引用 7 楼 u011672494 的回复:

Quote: 引用 4 楼 Veron_04 的回复:

Quote: 引用 2 楼 of123 的回复:

将数据直接写入数据库表,msflexgrid 与记录集绑定,每次接收到新数据后,执行 rs.ReQuery。不要人工填充 msflexgrid。

写入数据库我不认同,这显然会大大的降低程序的运行效率,就楼主这个情况,显然是处理大量数据时占用了CPU资源,从而导致数据丢失。
我一直有个疑问,20万个数据?真是20万个数据?楼主没有开玩笑吧?如果是20万个数据,楼主就不应该用中断方式接收,而应该用轮询方式接收,即发送命令后就等待接收数据,给一个时间段给处理接收数据,等接收完了,再处理填写入表格的部分即可。

轮训法 就是用timer做的吧?不知道是不是我做的不好,timer做的速度太慢了。timer最小值只能设1ms。

是的


因为太慢了所以没用他 能否贴上代码? 1.如果项目没有强制要求写数据库,不用DB为好,临时存贮可用文本替代
2.感觉楼主项目说明不够细,不太好具体建议 是要求必须要接收完才显示吗?边接收边显示不是更好吗?
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,