搜索
bottom↓
回复: 13

用过C#写串口程序的请进!

[复制链接]

出0入0汤圆

发表于 2011-8-3 11:55:55 | 显示全部楼层 |阅读模式
我目前正在用C#写一个wince下面的程序,具体功能就是收到一些数据,解释后再发送相应的数据,现在用到了5个窗体,代码一点点的写,结果到了form2的时候出问题了,因为form2不能调用form1中的串口控件,form1中的串口控件需要一直打开,有数据需要发送的时候就发数据,没有数据发送就监听。现在哪位筒子知道怎样让多个窗体共用一个串口控件?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2011-8-3 12:44:21 | 显示全部楼层
呼叫大侠

出0入0汤圆

发表于 2011-8-3 12:47:07 | 显示全部楼层
还是可以访问的

只要将form1的 对象告诉 form2 就可以了...

出0入0汤圆

 楼主| 发表于 2011-8-3 13:16:38 | 显示全部楼层
可否具体点?

出0入0汤圆

发表于 2011-8-3 14:18:41 | 显示全部楼层
LZ,改成public就可以被其它类访问了,这是明显的事。。。

出0入0汤圆

 楼主| 发表于 2011-8-3 14:25:53 | 显示全部楼层
我已经改成public了,关键问题是,我还调用form1中的一个senddata函数,用来发数据,现在一发数据就提示串口是关闭状态,open一下就说端口不存在,因为都是使用一个com口的,怎么办?

出0入0汤圆

发表于 2011-8-3 20:42:01 | 显示全部楼层
发送啊,接收啊,打开一次就够了,不要关掉串口。保持引用。

出0入0汤圆

发表于 2011-8-3 21:42:51 | 显示全部楼层
1.把串口类封装成static
2.要注意加锁,避免通信冲突
3.你把你程序的流程画出来,会比较好解决

出0入0汤圆

发表于 2011-8-3 22:18:20 | 显示全部楼层
我一般用一个专门的线程来处理串口通讯(串口控件放进组件中)、另一个线程处理数据,主UI线程只负责窗口显示,这样速度快(尤其在多核处理器上),界面没延迟。

跟着这篇文章做一遍就明白了
http://msdn.microsoft.com/en-us/library/48cfdff6%28v=VS.90%29.aspx

多线程通讯示例:
点击此处下载 ourdev_663996ARKSRB.rar(文件大小:48K) (原文件名:multithread.rar)

出0入0汤圆

发表于 2011-8-12 11:19:32 | 显示全部楼层
sendmessage 或用 委托

出0入0汤圆

发表于 2011-8-12 11:22:48 | 显示全部楼层
还没用到多线程 MARK一下

出0入0汤圆

发表于 2011-8-12 21:37:07 | 显示全部楼层
Program.cs里添加static的Send Command Queue和Receive Command Queue
把SerialPort封装进Component,Component在Main里启动,启动后台发送线程循环检查Send Command Queue是否有数据,有的话就发。SerialPort的Receive事件对接收到的数据做简单处理然后直接Enqueue进Receive Command Queue。
在UI线程里启动一个主线程循环处理Receive Command Queue接收到的数据;主线程和窗口UI的通讯使用Event和control.invoke来进行。

这样做的好处是一个线程不工作或等待数据时可以把CPU时间让给另一个线程,UI更新和数据处理感觉上几乎同时发生(如果你用双核处理器就是同时发生),用户界面流畅,提高产品形象。

出0入0汤圆

发表于 2011-8-12 22:18:47 | 显示全部楼层
mark~~

出0入0汤圆

发表于 2011-8-13 09:34:04 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 16:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表