国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【W(wǎng)inForm項(xiàng)目】C#模擬交通信號(hào)燈|WinForm交通紅綠燈

這篇具有很好參考價(jià)值的文章主要介紹了【W(wǎng)inForm項(xiàng)目】C#模擬交通信號(hào)燈|WinForm交通紅綠燈。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


前言

交通信號(hào)燈十字路口通行原理圖。

實(shí)際上歸類為四大類:

  • 南北雙向直行
  • 東西雙向直行
  • 一對(duì)黑色粗線的左轉(zhuǎn)
  • 一對(duì)紅色粗線的左轉(zhuǎn)。
    【W(wǎng)inForm項(xiàng)目】C#模擬交通信號(hào)燈|WinForm交通紅綠燈
    狀態(tài)邏輯圖如下圖所示:
  • 假定通行順序?yàn)椋耗媳敝毙?、南北左轉(zhuǎn)、東西直行、東西左轉(zhuǎn)。
  • 南北行人只在南北車流綠燈和黃燈的時(shí)候可以通行,東西人行同理。
  • 假設(shè)綠燈25s,黃燈5s,這二者決定紅燈的時(shí)間。
  • 四大類方向30s切換一次,總共循環(huán)為120s。
  • 南北、東西行人通行時(shí)間一次循環(huán)內(nèi)分別為30s。
    【W(wǎng)inForm項(xiàng)目】C#模擬交通信號(hào)燈|WinForm交通紅綠燈

一、運(yùn)行效果

  • 點(diǎn)擊開始:

進(jìn)入120s的整個(gè)循環(huán)中,第一部分南北直行綠燈在25s后變?yōu)辄S燈持續(xù)5s,然后為紅燈;第二部分南北左轉(zhuǎn)燈對(duì)應(yīng)變?yōu)榫G燈并進(jìn)行倒計(jì)時(shí),然后黃燈,紅燈;第三部分就是東西直行的綠燈黃燈紅燈,第四部分是東西左轉(zhuǎn)的綠黃紅切換。

  • 南北向、東西向行人在對(duì)應(yīng)的時(shí)間切換綠燈和紅燈。

  • 停止按鈕,停止計(jì)數(shù)器的計(jì)時(shí)。

  • 思路:1秒的定時(shí)器計(jì)算時(shí)間,到了對(duì)應(yīng)的時(shí)間階段,觸發(fā)界面的狀態(tài)變化和倒計(jì)時(shí)。詳情見代碼。

【W(wǎng)inForm項(xiàng)目】C#模擬交通信號(hào)燈|WinForm交通紅綠燈

二、界面設(shè)計(jì)

控件和命名圖片中標(biāo)出了同系列的第一個(gè),其余的根據(jù)方向類推命名。

【W(wǎng)inForm項(xiàng)目】C#模擬交通信號(hào)燈|WinForm交通紅綠燈

三、代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;

namespace TrafficLight
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        int time = 0;//計(jì)時(shí)器
        const int MAX_LOOP_TIME = 120;//120s時(shí)間為一次循環(huán)

        //以下時(shí)間段分別為:南北直行綠燈25,南北直行黃燈5,南北左轉(zhuǎn)綠燈25,南北左轉(zhuǎn)黃燈5,東西直行綠燈25,東西直行黃燈5,東西左轉(zhuǎn)綠燈25,東西左轉(zhuǎn)黃燈5
        int[] PassTime={25, 30, 55, 60, 85, 90, 115, 120};
        
        //事件委托的方式觸發(fā)
        public delegate void delegateTrafficLight(int tm);
        public event delegateTrafficLight EventTrafficLight;


        private void btnStart_Click(object sender, EventArgs e)
        {
            timer1.Start();

            //Thread threadLightChg = new Thread(LightChange);
            //threadLightChg.Start();
        }

        private void btnStop_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //計(jì)時(shí)開始,進(jìn)入循環(huán),120s為一次循環(huán)
            if (time < MAX_LOOP_TIME - 1)  //119秒后置為0秒
            {
                time += 1;
                if (EventTrafficLight != null)
                {
                    EventTrafficLight(time);
                }
            }
            else
            {
                time = 0;
                if (EventTrafficLight != null)
                {
                    EventTrafficLight(time);
                }

                txtStoN.Clear();
                txtNtoS.Clear();
                txtWtoE.Clear();
                txtEtoW.Clear();
            }

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.EventTrafficLight += new delegateTrafficLight(LightChange);
        }

        public void LightChange(int time)
        {
            if (time < PassTime[0])
            {
                lbStoNStraight.BackColor = Color.Green;
                lbStoNLeft.BackColor = Color.Red;

                lbNtoSStraight.BackColor = Color.Green;
                lbNtoSLeft.BackColor = Color.Red;

                lbWtoEStraight.BackColor = Color.Red;
                lbWtoELeft.BackColor = Color.Red;

                lbEtoWStraight.BackColor = Color.Red;
                lbEtoWLeft.BackColor = Color.Red;

                lbPeopleNS1.BackColor = Color.Green;
                lbPeopleNS2.BackColor = Color.Green;
                lbPeopleNS3.BackColor = Color.Green;
                lbPeopleNS4.BackColor = Color.Green;

                lbPeopleWE1.BackColor = Color.Red;
                lbPeopleWE2.BackColor = Color.Red;
                lbPeopleWE3.BackColor = Color.Red;
                lbPeopleWE4.BackColor = Color.Red;

                //倒計(jì)時(shí)
                txtStoN.Text = (PassTime[0] - time).ToString();
                txtNtoS.Text = (PassTime[0] - time).ToString();

            }
            else if (time >= PassTime[0] && time < PassTime[1])
            {
                lbStoNStraight.BackColor = Color.Yellow;
                lbStoNLeft.BackColor = Color.Red;

                lbNtoSStraight.BackColor = Color.Yellow;
                lbNtoSLeft.BackColor = Color.Red;

                lbWtoEStraight.BackColor = Color.Red;
                lbWtoELeft.BackColor = Color.Red;

                lbEtoWStraight.BackColor = Color.Red;
                lbEtoWLeft.BackColor = Color.Red;

                lbPeopleNS1.BackColor = Color.Green;
                lbPeopleNS2.BackColor = Color.Green;
                lbPeopleNS3.BackColor = Color.Green;
                lbPeopleNS4.BackColor = Color.Green;

                lbPeopleWE1.BackColor = Color.Red;
                lbPeopleWE2.BackColor = Color.Red;
                lbPeopleWE3.BackColor = Color.Red;
                lbPeopleWE4.BackColor = Color.Red;

                //倒計(jì)時(shí)
                txtStoN.Text = (PassTime[1] - time - 1).ToString();
                txtNtoS.Text = (PassTime[1] - time - 1).ToString();
            }
            else if (time >= PassTime[1] && time < PassTime[2])
            {
                lbStoNStraight.BackColor = Color.Red;
                lbStoNLeft.BackColor = Color.Green;

                lbNtoSStraight.BackColor = Color.Red;
                lbNtoSLeft.BackColor = Color.Green;

                lbWtoEStraight.BackColor = Color.Red;
                lbWtoELeft.BackColor = Color.Red;

                lbEtoWStraight.BackColor = Color.Red;
                lbEtoWLeft.BackColor = Color.Red;

                lbPeopleNS1.BackColor = Color.Red;
                lbPeopleNS2.BackColor = Color.Red;
                lbPeopleNS3.BackColor = Color.Red;
                lbPeopleNS4.BackColor = Color.Red;

                lbPeopleWE1.BackColor = Color.Red;
                lbPeopleWE2.BackColor = Color.Red;
                lbPeopleWE3.BackColor = Color.Red;
                lbPeopleWE4.BackColor = Color.Red;

                //倒計(jì)時(shí)
                txtStoN.Text = (PassTime[2] - time - 1).ToString();
                txtNtoS.Text = (PassTime[2] - time - 1).ToString();
            }
            else if (time >= PassTime[2] && time < PassTime[3])
            {
                lbStoNStraight.BackColor = Color.Red;
                lbStoNLeft.BackColor = Color.Yellow;

                lbNtoSStraight.BackColor = Color.Red;
                lbNtoSLeft.BackColor = Color.Yellow;

                lbWtoEStraight.BackColor = Color.Red;
                lbWtoELeft.BackColor = Color.Red;

                lbEtoWStraight.BackColor = Color.Red;
                lbEtoWLeft.BackColor = Color.Red;

                lbPeopleNS1.BackColor = Color.Red;
                lbPeopleNS2.BackColor = Color.Red;
                lbPeopleNS3.BackColor = Color.Red;
                lbPeopleNS4.BackColor = Color.Red;

                lbPeopleWE1.BackColor = Color.Red;
                lbPeopleWE2.BackColor = Color.Red;
                lbPeopleWE3.BackColor = Color.Red;
                lbPeopleWE4.BackColor = Color.Red;

                //倒計(jì)時(shí)
                txtStoN.Text = (PassTime[3] - time - 1).ToString();
                txtNtoS.Text = (PassTime[3] - time - 1).ToString();
            }
            else if (time >= PassTime[3] && time < PassTime[4])
            {
                lbStoNStraight.BackColor = Color.Red;
                lbStoNLeft.BackColor = Color.Red;

                lbNtoSStraight.BackColor = Color.Red;
                lbNtoSLeft.BackColor = Color.Red;

                lbWtoEStraight.BackColor = Color.Green;
                lbWtoELeft.BackColor = Color.Red;

                lbEtoWStraight.BackColor = Color.Green;
                lbEtoWLeft.BackColor = Color.Red;

                lbPeopleNS1.BackColor = Color.Red;
                lbPeopleNS2.BackColor = Color.Red;
                lbPeopleNS3.BackColor = Color.Red;
                lbPeopleNS4.BackColor = Color.Red;

                lbPeopleWE1.BackColor = Color.Green;
                lbPeopleWE2.BackColor = Color.Green;
                lbPeopleWE3.BackColor = Color.Green;
                lbPeopleWE4.BackColor = Color.Green;

                //倒計(jì)時(shí)
                txtWtoE.Text = (PassTime[4] - time - 1).ToString();
                txtEtoW.Text = (PassTime[4] - time - 1).ToString();
            }
            else if (time >= PassTime[4] && time < PassTime[5])
            {
                lbStoNStraight.BackColor = Color.Red;
                lbStoNLeft.BackColor = Color.Red;

                lbNtoSStraight.BackColor = Color.Red;
                lbNtoSLeft.BackColor = Color.Red;

                lbWtoEStraight.BackColor = Color.Yellow;
                lbWtoELeft.BackColor = Color.Red;

                lbEtoWStraight.BackColor = Color.Yellow;
                lbEtoWLeft.BackColor = Color.Red;

                lbPeopleNS1.BackColor = Color.Red;
                lbPeopleNS2.BackColor = Color.Red;
                lbPeopleNS3.BackColor = Color.Red;
                lbPeopleNS4.BackColor = Color.Red;

                lbPeopleWE1.BackColor = Color.Green;
                lbPeopleWE2.BackColor = Color.Green;
                lbPeopleWE3.BackColor = Color.Green;
                lbPeopleWE4.BackColor = Color.Green;

                //倒計(jì)時(shí)
                txtWtoE.Text = (PassTime[5] - time - 1).ToString();
                txtEtoW.Text = (PassTime[5] - time - 1).ToString();
            }
            else if (time >= PassTime[5] && time < PassTime[6])
            {
                lbStoNStraight.BackColor = Color.Red;
                lbStoNLeft.BackColor = Color.Red;

                lbNtoSStraight.BackColor = Color.Red;
                lbNtoSLeft.BackColor = Color.Red;

                lbWtoEStraight.BackColor = Color.Red;
                lbWtoELeft.BackColor = Color.Green;

                lbEtoWStraight.BackColor = Color.Red;
                lbEtoWLeft.BackColor = Color.Green;

                lbPeopleNS1.BackColor = Color.Red;
                lbPeopleNS2.BackColor = Color.Red;
                lbPeopleNS3.BackColor = Color.Red;
                lbPeopleNS4.BackColor = Color.Red;

                lbPeopleWE1.BackColor = Color.Red;
                lbPeopleWE2.BackColor = Color.Red;
                lbPeopleWE3.BackColor = Color.Red;
                lbPeopleWE4.BackColor = Color.Red;

                //倒計(jì)時(shí)
                txtWtoE.Text = (PassTime[6] - time - 1).ToString();
                txtEtoW.Text = (PassTime[6] - time - 1).ToString();
            }
            else if (time >= PassTime[6])
            {
                lbStoNStraight.BackColor = Color.Red;
                lbStoNLeft.BackColor = Color.Red;

                lbNtoSStraight.BackColor = Color.Red;
                lbNtoSLeft.BackColor = Color.Red;

                lbWtoEStraight.BackColor = Color.Red;
                lbWtoELeft.BackColor = Color.Yellow;

                lbEtoWStraight.BackColor = Color.Red;
                lbEtoWLeft.BackColor = Color.Yellow;

                lbPeopleNS1.BackColor = Color.Red;
                lbPeopleNS2.BackColor = Color.Red;
                lbPeopleNS3.BackColor = Color.Red;
                lbPeopleNS4.BackColor = Color.Red;

                lbPeopleWE1.BackColor = Color.Red;
                lbPeopleWE2.BackColor = Color.Red;
                lbPeopleWE3.BackColor = Color.Red;
                lbPeopleWE4.BackColor = Color.Red;

                //倒計(jì)時(shí)
                txtWtoE.Text = (MAX_LOOP_TIME - time - 1).ToString();
                txtEtoW.Text = (MAX_LOOP_TIME - time - 1).ToString();
            }
        }
    }

   
}


總結(jié)

重在理解交通信號(hào)燈的原理。

代碼重點(diǎn):文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-494539.html

  • 使用了定時(shí)器
  • 使用了委托事件的觸發(fā)方式
  • 對(duì)常量和公共數(shù)組的應(yīng)用
  • 變量命名規(guī)范、代碼整潔

到了這里,關(guān)于【W(wǎng)inForm項(xiàng)目】C#模擬交通信號(hào)燈|WinForm交通紅綠燈的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于FPGA的交通信號(hào)燈設(shè)計(jì)

    1.1 設(shè)計(jì)目的 1.2 設(shè)計(jì)任務(wù) 1.模擬十字路口交通信號(hào)燈的工作過(guò)程,利用交通信號(hào)燈上的兩組紅,黃,綠LED發(fā)光二極管作為交通信號(hào)燈,設(shè)計(jì)一個(gè)交通信號(hào)燈控制器。 2.模擬兩條公路,一條交通主干道,一條交通支干道,在主干道和支干道的交叉路口上設(shè)置紅,綠,藍(lán)燈進(jìn)行交

    2023年04月22日
    瀏覽(39)
  • 基于STM32的智能交通信號(hào)燈控制系統(tǒng)設(shè)計(jì)

    基于STM32的智能交通信號(hào)燈控制系統(tǒng)設(shè)計(jì)

    通過(guò)分析交通規(guī)則和交通燈的工作原理,給出智能交通信號(hào)燈控制系統(tǒng)的設(shè)計(jì)方法?;赟TM32F103芯片開發(fā)滿足需求的外圍電路,并繪制電路原理圖。基于MDK keil軟件編寫交通信號(hào)燈控制程序,利用LabVIEW搭建交通信號(hào)燈場(chǎng)景,LabVIEW可以控制紅綠燈時(shí)長(zhǎng)。分別完成硬件、軟件調(diào)試

    2024年02月03日
    瀏覽(33)
  • 數(shù)電課程設(shè)計(jì)——課設(shè)二:交通信號(hào)燈

    數(shù)電課程設(shè)計(jì)——課設(shè)二:交通信號(hào)燈

    ?一、實(shí)驗(yàn)內(nèi)容 (1)十字路口有 x、y 方向兩組交通信號(hào)燈,每組有紅、黃、綠燈各一個(gè); (2)設(shè)計(jì)一個(gè)交通燈控制電路,模擬十字路口交通燈工作情況,紅燈亮 35s,黃燈亮 5s,綠 燈亮 30s; (3)設(shè)系統(tǒng)時(shí)鐘頻率為 50MHz,要求用數(shù)碼管顯示計(jì)時(shí)結(jié)果; (4)掌握 Verilog HDL 的

    2024年02月09日
    瀏覽(26)
  • 基于單片機(jī)的交通信號(hào)燈控制

    基于單片機(jī)的交通信號(hào)燈控制

    目錄 一、方案流程及技術(shù)規(guī)格書設(shè)計(jì) 二、系統(tǒng)硬件電路設(shè)計(jì) 三、系統(tǒng)軟件設(shè)計(jì) 四、系統(tǒng)調(diào)試測(cè)試與分析 前言 ? ? ? ?伴隨著越來(lái)越多的家用小轎車的出現(xiàn),道路安全問(wèn)題也越來(lái)越被人們重視,當(dāng)今,紅綠燈也被安裝在各個(gè)路口,來(lái)規(guī)范人們的駕駛習(xí)慣,紅燈停,綠燈行的

    2024年02月03日
    瀏覽(20)
  • 基于FPGA的交通信號(hào)燈設(shè)計(jì)(二)

    基于FPGA的交通信號(hào)燈設(shè)計(jì)(二)

    根據(jù)要求,我們可以用典型時(shí)序狀態(tài)機(jī)實(shí)現(xiàn)功能,共有六個(gè)大的狀態(tài),現(xiàn)設(shè)定: S0:?四個(gè)方向的紅燈全亮 S1:?東、西方向綠燈亮,南、北方向紅燈亮 S2:東、西方向黃燈閃爍,南、北方向紅燈亮 S3:東、西方向紅燈亮,南、北方向綠燈亮 S4:東、西方向紅燈亮,南、北方向黃

    2024年04月23日
    瀏覽(27)
  • 基于51單片機(jī)的交通信號(hào)燈

    基于51單片機(jī)的交通信號(hào)燈

    本設(shè)計(jì)學(xué)校的一次單片機(jī)實(shí)訓(xùn)。 利用51單片機(jī)控制各個(gè)路口紅綠燈及時(shí)間顯示。 1、題目要求 1、各個(gè)路口紅綠燈亮滅的規(guī)則,暫不考慮左轉(zhuǎn)方向; 2、倒計(jì)時(shí)的實(shí)現(xiàn),利用單片機(jī)的定時(shí)器進(jìn)行計(jì)數(shù)得到秒信號(hào); 3、時(shí)間顯示:東西南北四個(gè)方向的時(shí)間一致,當(dāng)東西方向?yàn)?0秒綠

    2024年01月24日
    瀏覽(22)
  • AI:05- - 基于深度學(xué)習(xí)的道路交通信號(hào)燈的檢測(cè)與識(shí)別

    AI:05- - 基于深度學(xué)習(xí)的道路交通信號(hào)燈的檢測(cè)與識(shí)別

    ?? 本文選自專欄:AI領(lǐng)域?qū)?從基礎(chǔ)到實(shí)踐,深入了解算法、案例和最新趨勢(shì)。無(wú)論你是初學(xué)者還是經(jīng)驗(yàn)豐富的數(shù)據(jù)科學(xué)家,通過(guò)案例和項(xiàng)目實(shí)踐,掌握核心概念和實(shí)用技能。每篇案例都包含代碼實(shí)例,詳細(xì)講解供大家學(xué)習(xí)。 ??????本專欄包含以下學(xué)習(xí)方向: 機(jī)器學(xué)習(xí)、

    2024年02月03日
    瀏覽(24)
  • Verilog設(shè)計(jì)實(shí)例(二):交通信號(hào)燈設(shè)計(jì)實(shí)例

    Verilog設(shè)計(jì)實(shí)例(二):交通信號(hào)燈設(shè)計(jì)實(shí)例

    本文為Verilog實(shí)例開發(fā)的第二彈,缺少Verilog代碼練手或者有些生疏的可以在這里參考一些設(shè)計(jì)實(shí)例進(jìn)行練習(xí)。 本系列導(dǎo)航: Verilog設(shè)計(jì)實(shí)例(一):自動(dòng)售貨機(jī)設(shè)計(jì)實(shí)例 設(shè)計(jì)一個(gè)交通燈控制電路,紅燈30s后轉(zhuǎn)為綠燈。共x,y方向兩組交通燈,每組紅綠燈各一個(gè),紅燈亮30s,綠

    2024年02月03日
    瀏覽(26)
  • 基于51單片機(jī)的交通信號(hào)燈設(shè)計(jì)

    基于51單片機(jī)的交通信號(hào)燈設(shè)計(jì)

    簡(jiǎn)介 1.本系統(tǒng)采用STC89C51單片機(jī)以及單片機(jī)最小系統(tǒng)和74HC245電路以及外圍的按鍵和數(shù)碼管顯示等部件,設(shè)計(jì)一個(gè)基于單片機(jī)的交通燈設(shè)計(jì)。設(shè)計(jì)通過(guò)兩位一體共陰極數(shù)碼管顯示,并能通過(guò)按鍵對(duì)定時(shí)進(jìn)行設(shè)置,而且具有蜂鳴器提示。 2、本設(shè)計(jì)擬實(shí)現(xiàn)的性能指標(biāo)如下: 設(shè)在十

    2024年02月04日
    瀏覽(22)
  • 基于Proteus仿真的交通信號(hào)燈設(shè)計(jì)——利用匯編語(yǔ)言實(shí)現(xiàn)

    基于Proteus仿真的交通信號(hào)燈設(shè)計(jì)——利用匯編語(yǔ)言實(shí)現(xiàn)

    基本信息 采用AT89C51單片機(jī) 晶振頻率:12MHZ 紅綠燈:發(fā)光二極管 數(shù)字顯示:LED數(shù)碼管 東西南北四個(gè)方向,一次循環(huán)共有六個(gè)狀態(tài),且每個(gè)狀態(tài)的倒計(jì)時(shí)時(shí)間一樣 交通狀態(tài) 東西紅燈22s,南北綠燈22s(數(shù)碼管從0到21); 東西紅燈5s,南北綠燈5s且沒0.5s閃爍一次(數(shù)碼管從0到4);

    2024年02月09日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包