摘要: 在上一篇文章中,写了一些串口通信时数据接收的内容,其中有一行代码有个提问:在数据接收线程中,当接收到数据并且校验正确后,我怎么显示这些数据到窗体中呢?要显示数据,必须要访问主线程(A)的各种控件,而数据接收是另一个线程(B)。有两种方案可以解决这个问题,和上文一样,也是第二个较好。方法一:取消跨线程操作检查当线程B在访问线程A创建的控件时,线程A会对控件的线程锁进行检验,当多个线程同时对控件进行写操作时,必然产生冲突,因此此时的程序会非常不稳定,经常突然就退出,Debug显示原因是跨线程操作控件了。既然如此,那就让线程A不去检验其他线程了,在Form_Load函数里加一句:System.Win 阅读全文
posted @ 2011-01-21 12:54 杨少宁 阅读(3361) 评论(5) 推荐(4) 编辑
摘要: 利用串口进行通信,当发送方(A)将数据写入串口后,通过无线或有线方式将数据传送给接收方(B),B通过调用串口读方法comm.read(参数)即可将数据读出。原理十分简单,但最近在利用串口处理SM-42无线传输时,数据总是一段一段的传到B,并不能在comm_DataReceived方法中单纯使用read方法将数据接收完全。我知道用缓存机制,但由于经验少(正在实习),到网上找了找大牛们的方法,并结合自己的理解,发现有两种方法可以处理。方法一:comm_DataReceived(Comm控件的数据接收方法,当有数据来临时会触发)会创建一个线程(悲哀,因为之前不知道它另辟线程,所以自己编写了一个线程处 阅读全文
posted @ 2011-01-21 11:30 杨少宁 阅读(13197) 评论(24) 推荐(8) 编辑