怎样才能不用全局变量呢?

opgg 2005-09-03 11:25:38
我用二个定时器,用Timer1来定时收串口数据,并在收数据的同时,把数据按类别分好。然后用Timer2来处理这些数据。(即定时刷新显示FORM上的各EDIT).现在问题来了,我只能用几个全局变量数组了。因为在Timer1和Timer2里都要用到这几个数组,现在有什么方法可以改进一下,做到不用全局变量呢?谢谢!~~~~~
...全文
310 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglovec 2006-06-15
  • 打赏
  • 举报
回复
线程很费资源 如果用不好就别用 不到万不得以 就不要用

用全局变量也不无不妥

如果你真的不想用 写个全局控制类不就得了
okkk 2005-10-20
  • 打赏
  • 举报
回复
kankan
javaFever 2005-10-20
  • 打赏
  • 举报
回复
为什么要避免使用“全局变量”呢?全局与局部只是相对的概念,根据你对作用域的理解不同,全局也可能是局部。

不过,通信的编程的确是离不开线程和队列缓冲区的,当然,象串口这类有固定波特率的通信,理论上讲用定时器也可以,不过,很多情况下,它们不会工作在理论状态下。
XBox360 2005-10-20
  • 打赏
  • 举报
回复
楼上抄得一字不漏,^_^
xiaomatian 2005-10-12
  • 打赏
  • 举报
回复
用多线程比较妥当,一个用来接收,一个用来处理.
huabihan 2005-09-05
  • 打赏
  • 举报
回复
用多线程比较妥当,一个用来接收,一个用来处理.
FengSC 2005-09-05
  • 打赏
  • 举报
回复
你的Timer1、Timer2都是Form里的,那你可以定义Form的成员变量数组,这样就可以不用全局变量数组了。
leonatcs 2005-09-05
  • 打赏
  • 举报
回复
如果你不会用多线程和线程同步,那就去用控件吧(mscomm、turbopower apro...),受到数据自动触发事件,把这些数据写到edit里。你自己用timers的做法极不科学。
7rainbow 2005-09-04
  • 打赏
  • 举报
回复
用线程吧,同步一下就好
wjfjason 2005-09-04
  • 打赏
  • 举报
回复
楼上说得很对啊
diaojie 2005-09-04
  • 打赏
  • 举报
回复
冒昧问一句:楼主为什么这么做呢?
Timer事件是按照全局队列的形式来处理的,也就是说,假如你的Timer2处理占用太长时间,那么由Timer1事件定义的接收操作就被延后,这样很容易造成串口数据丢失。
为什么不用多线程呢?

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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