我做的一个项目是通过485通讯接收传来的数据,200公斤称重的大桶灌装,下位机是称重传感器然后进称重仪表,有个接口板负责采集仪表的数据然后发给我——工控机,然后我判断接收的数据是否灌状结束了 如果结束了 就记录下来 送到数据库里!不过 现在现实情况反映来看 有丢桶的现象500桶数据能丢20-40桶的样子 不知道什么原因 高手有做过类似的工程吗??帮帮忙 我现在在现场呢!!解决不了 就回不了家了!!!郁闷啊!!在线等!!
我是用mscomm控件通讯的!!现在怀疑是不是接收缓冲区满的原因 导致数据有个别记录不下来啊!!现在只是怀疑没有查明原因!
我是用mscomm控件通讯的!!现在怀疑是不是接收缓冲区满的原因 导致数据有个别记录不下来啊!!现在只是怀疑没有查明原因!
解决方案 »
- 一个错误的处理向各位高手请教???
- 请教:数据库查询问题?
- 请问如何在VB中打开已经存在的EXCEL文件?
- 关于VB编写显示和分析Gerber274X的问题?
- 求救!有关密码设置.
- 怎样把一个字符赋给drivelistbox,急用!得到答案马上结贴!
- 急,Richtext控件用SelStart和SelLength选择部分字符时出现选不中(SelLength=0)的错误,请指教
- [推荐]适合大家入门的VB好书
- 请教在access结合vb的问题
- vb.net写的程序,运行时内存占用不断增加,请前辈们分析一下,谢谢!
- 想做一个与证券公司股票代码输入的控件,但不知道如何下手,请大家帮忙
- 谁有 VideoEdit Pro ActiveX Control v1.2
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
MSComm1.Output = Sd_Data
记得在发送新的串口数据去采集此时的什么桶装的数量时把发送和接收数据缓冲区都清空后再发送数据。建议不要使用OnComm事件进行通讯,使用定时器更加可靠。
在定时器中:
1》先检查缓冲区数据,如果不为空则全部取出进行效验和计算。2》计算完成,如果符合条件则入数据库,不符合则自行处理3》然后发送本次要查询字节数据出去即可在下个定时器事件中你将要再次重复1》,2》,3》三步,如此不断得进行检查数据,应该更加可靠另外,定时器间隔要看波特率和发送数据多少决定的。一般建议9600bps发送一个字节或接收一个字节需要1ms左右注意:定时器最小间隔不能设置为50ms以下!
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
MSComm1.Output = Sd_Data
记得在发送新的串口数据去采集此时的什么桶装的数量时把发送和接收数据缓冲区都清空后再发送数据。
请问如何清的接收缓冲区啊??
桶满得时候会是什么数据 还有桶满了以后会立刻装新得桶吗? 还是要等你得指令
我觉得这个是关键
MSComm1.InBufferSize = 40962 每次接收数据(发送命令)之前,清空缓冲区:
MSComm1.InBufferCount = 0
1:检查485接口是否有问题,是否存在虚焊,接地端是否有问题.
2:设置COM缓存为16K
3:使用事件方式获取端口数据
4:简化/优化算法,使数据处理速度提高