繁体   English   中英

关于中断?

[英]About interrupts?

我正在编写一个基本的交通信号灯控件,它将显示在监视器上。

在这种情况下,我需要发生外部中断(事件)并更改当前交通信号灯的状态。 我正在尝试不使用任何板子或外部外围设备的情况。

现在我认为我有以下选择。 告诉我哪个是最好的。

1.要在系统上安装一个中断功能,它将定期发出中断? (但我不知道该如何安装...任何机构请帮助我)

2.在第二台PC或超级终端上运行的AC程序,该程序会定期向运行交通信号灯程序的PC串行端口发送一些不同的值,该PC串行端口会定期检查该值,并且对于一组数据,它将更改为一个值状态和另一组数据的另一状态。 因此,这两个程序将在各自的系统上同时运行。

3.否则我应该去外部中断发生器吗?

在以上方法中,这是最好的方法。 否则还有其他更简单的替代方案,并且不包括外部硬件。如果以上任何解决方案都不正确,请忽略它们。.我的环境是Windows上的turboC。(我也邀请了bcc回答gcc在Windows上为ARM7安装了gcc的TRITON IDE)

您可以只创建一个多线程应用程序,并在唤醒时使某些中断像中断一样。

线程一:交通控制线程二:模拟从东部进来的交通并请求更改灯光,并在1至60秒内随机睡眠,然后再次唤醒。 线程X发挥想象力。

在gcc中,如果您有一个示例的pthread lib,则可以轻松完成。

选项1是最简单的,您只需创建一个计时器即可定期中断程序。 您说您在用C编程,但未指定平台,计时器与平台有关。

在Unixland中,计时器发送信号以在完成时进行处理。 具体来说,Linux的计时器实现是setitimer

然后,您必须捕获并处理计时器发送的信号

在Win32 API中,您也可以使用计时器 ,但是概念有所不同。

获取Microsoft®Win32®Programmer的参考帮助文件的副本: Win32.hlp

寻求SetTimer和相关功能。 此函数在希望在特定时间间隔(从调用setTimer的那一刻起)之后调用函数的窗口上注册。 我的建议是,在该功能上,您:-杀死该计时器,并设置另一个与此计时器相同的计时器(即,相同的间隔,相同的功能); -增加计数器; -针对常数测试计数器;

即计数器= 10,变黄色,= 20,变绿色,= 30变红色,并重置计数器。

如果想法是让交通信号灯对其他事物做出反应,则将计数器逻辑替换为“其他事物”。

程序的main()只是定时器初始化和while(1)。 其余的由计时器调用的函数完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM