wince5.0,.net2.0环境下,串口是否可以异步接收数据?

心云意水 2011-03-10 04:52:26
RT,一个程序,串口接收pc机端每100ms发送过来一包的数据(64字节),wince这段,我在sp_DataReceived函数里,设置将读到的数据都合并入一个字符串变量S,然后在界面上添加Timer控件,这个控件每90ms读取一次S,并对其进行分析,分析后的数据输出到窗体上。
现在发现,Timer控件貌似无法按照规定的interval执行,也就是说,经常好久才能执行一次分析程序。。。。
怀疑是串口接收数据的行为优先级很高,导致Timer控件无法连续正常运行。

请问有什么办法解决么????
...全文
96 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
心云意水 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 joyzml 的回复:]
.net不懂
只知道wince的串口不支持overlapped
要通过多线程来模拟

不清楚楼主是不是用的.net里面的SerialPort控件
以前偶尔用过,接收数据之后,用个叫什么异步托管
然后在里面修改界面上显示的参数

ps:确实不是很懂,纯属顶贴。
[/Quote]

对的,就是用这个控件,DataReceived事件里的确可以通过程序托管来实现修改界面参数的显示,但是问题是,设计要求是,串口这里只负责接收,而必须有另一个线程来分析数据并修改显示。。。。头疼,查了下,貌似要用到System.Threading.Timer,但是,测试的时候报错说,无法访问独立线程控件之类的。。。。
心云意水 2011-03-11
  • 打赏
  • 举报
回复
研究了下,貌似有个System.Threading.Timer对象,不知道能完成任务不?
GARY 2011-03-11
  • 打赏
  • 举报
回复
.net不懂
只知道wince的串口不支持overlapped
要通过多线程来模拟

不清楚楼主是不是用的.net里面的SerialPort控件
以前偶尔用过,接收数据之后,用个叫什么异步托管
然后在里面修改界面上显示的参数

ps:确实不是很懂,纯属顶贴。
心云意水 2011-03-11
  • 打赏
  • 举报
回复
完蛋了,System.Threading.Timer也不能满足要求。。。

究竟要怎么样啊?System.Threading.Timer已经是独立线程运行了。。。
心云意水 2011-03-10
  • 打赏
  • 举报
回复
没人碰到这个问题么?

刚才换了种思路,用两个定时器,timer1和timer2,timer2负责定时用sp.ReadExisting()获取数据存入缓存变量,timer1用于分析。
结果发现,timer1在timer2工作期间根本无法启动。。。。

这究竟啥原因?

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧