现在发现,Timer控件貌似无法按照规定的interval执行,也就是说,经常好久才能执行一次分析程序。。。。
怀疑是串口接收数据的行为优先级很高,导致Timer控件无法连续正常运行。
请问有什么办法解决么????
6 个解决方案
#1
没人碰到这个问题么?
刚才换了种思路,用两个定时器,timer1和timer2,timer2负责定时用sp.ReadExisting()获取数据存入缓存变量,timer1用于分析。
结果发现,timer1在timer2工作期间根本无法启动。。。。
这究竟啥原因?
刚才换了种思路,用两个定时器,timer1和timer2,timer2负责定时用sp.ReadExisting()获取数据存入缓存变量,timer1用于分析。
结果发现,timer1在timer2工作期间根本无法启动。。。。
这究竟啥原因?
#2
#3
.net不懂
只知道wince的串口不支持overlapped
要通过多线程来模拟
不清楚楼主是不是用的.net里面的SerialPort控件
以前偶尔用过,接收数据之后,用个叫什么异步托管
然后在里面修改界面上显示的参数
ps:确实不是很懂,纯属顶贴。
只知道wince的串口不支持overlapped
要通过多线程来模拟
不清楚楼主是不是用的.net里面的SerialPort控件
以前偶尔用过,接收数据之后,用个叫什么异步托管
然后在里面修改界面上显示的参数
ps:确实不是很懂,纯属顶贴。
#4
研究了下,貌似有个System.Threading.Timer对象,不知道能完成任务不?
#5
对的,就是用这个控件,DataReceived事件里的确可以通过程序托管来实现修改界面参数的显示,但是问题是,设计要求是,串口这里只负责接收,而必须有另一个线程来分析数据并修改显示。。。。头疼,查了下,貌似要用到System.Threading.Timer,但是,测试的时候报错说,无法访问独立线程控件之类的。。。。
#6
完蛋了,System.Threading.Timer也不能满足要求。。。
究竟要怎么样啊?System.Threading.Timer已经是独立线程运行了。。。
究竟要怎么样啊?System.Threading.Timer已经是独立线程运行了。。。
#1
没人碰到这个问题么?
刚才换了种思路,用两个定时器,timer1和timer2,timer2负责定时用sp.ReadExisting()获取数据存入缓存变量,timer1用于分析。
结果发现,timer1在timer2工作期间根本无法启动。。。。
这究竟啥原因?
刚才换了种思路,用两个定时器,timer1和timer2,timer2负责定时用sp.ReadExisting()获取数据存入缓存变量,timer1用于分析。
结果发现,timer1在timer2工作期间根本无法启动。。。。
这究竟啥原因?
#2
#3
.net不懂
只知道wince的串口不支持overlapped
要通过多线程来模拟
不清楚楼主是不是用的.net里面的SerialPort控件
以前偶尔用过,接收数据之后,用个叫什么异步托管
然后在里面修改界面上显示的参数
ps:确实不是很懂,纯属顶贴。
只知道wince的串口不支持overlapped
要通过多线程来模拟
不清楚楼主是不是用的.net里面的SerialPort控件
以前偶尔用过,接收数据之后,用个叫什么异步托管
然后在里面修改界面上显示的参数
ps:确实不是很懂,纯属顶贴。
#4
研究了下,貌似有个System.Threading.Timer对象,不知道能完成任务不?
#5
对的,就是用这个控件,DataReceived事件里的确可以通过程序托管来实现修改界面参数的显示,但是问题是,设计要求是,串口这里只负责接收,而必须有另一个线程来分析数据并修改显示。。。。头疼,查了下,貌似要用到System.Threading.Timer,但是,测试的时候报错说,无法访问独立线程控件之类的。。。。
#6
完蛋了,System.Threading.Timer也不能满足要求。。。
究竟要怎么样啊?System.Threading.Timer已经是独立线程运行了。。。
究竟要怎么样啊?System.Threading.Timer已经是独立线程运行了。。。