C#窗体应用程序接收串口数据和上传数据库问题 20C

我准备做个电子秤,硬件是一直往串口发数据,能接收过来并显示到控件上,但想做一个只要称到重量自动上传到数据库,这个怎么实现,我的思路是判断重量值一秒内是否变化,不变化就上传,不知道怎么实现或者有没有其他思路。主要就是自动选取有效数据并上传到数据库

2个回答

你这做需求,由于需要一直接收。所以需要开启一个线程,这个线程里面加一个While循环。

bool Flag=true;

Thread thread=new Thread(new ThreadStart(delegate()
{
while(Flag)
{
//1.在这里接收串口数据并处理串口数据,转换成你需要的数据类型。如果没有数据就contiue

                        //2.判断是否有变化


                        //3.如果有变化就continue

                //4.不变化就上传,这里最好用一个事件去触发操作数据库。
        }

}));
thread.Start();

qq_28684017
小川blog 回复兵工厂三剑客: 能不能再详细点,有点迷糊,谢谢
2 年多之前 回复

首先说你的串口接收数据,串口接收数据主要有2种方式,一种是通过DataReceived事件;另一种是通过ReadExisting()方法。前者只要有串口数据就会触发
事件进行接收。但是根据你的描述,串口一直在发,频率是多少,就看你硬件是如何设置的了,如果太快,再加上你要更新主界面,会造成卡顿的现象。所以推荐使用第2种。

另外,你的思路里面有个漏洞,怎么去判断1秒内重量是否有变化?假如说一秒钟它的数据变化是10 11 9 10这4个数据,是不是就认为重量没变化呢?
但实际上重量还是有变化的嘛。

另外,不建议这么频繁的去操作数据库,你可以先将数据放到缓存或者集合当中,当达到一定数量的时候,再统一存到数据库中。这就像你让一个人去买水果,
要买的水果有香蕉,梨子,桃子,苹果。你是让他去买了香蕉回来再去梨子,买了梨子回来再去买桃子,最后去买苹果;还是一次性买完呢。

思路我前面已经提供了,就在while循环里面。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问