mboost-dp1

C# lyskryds - Virkelig brug for hjælp ?


Gå til bund
Gravatar #1 - abreko
7. aug. 2010 15:36
Hej alle.

Jeg står nu med et nyt besynderligt problem.? Kan ikke helt rigtig finde rundt i det og hvordan det skal forklares, men vil gøre mit bedste ..

Det er således, at jeg jo som sagt er i gang med et lyskryds, som så køre i det der bliver rød, gult grønt, gult rød osv.

Nu er det sådan, at der er ni forskellige knapper, og i hver knap er der en rød og gul lampe ved siden af. Jeg har så programmert det til at være rødt, medmindre man trykker på en knap, hvor den så bliver grøn.

Men men men, når jeg så køre programmet, og jeg intet trykker, så går der fuldstændigt ged i den, også selvom jeg trykker? Den ene lyser grønt, de orange lamper lyser selv de røde lyser.

Men hvis jeg sletter koderne til lampe 4-9 men beholder de resterende, så køre den fuldstændigt perfekt uden fejl.

Koden er lidt lang, men håber ikke det betyder noget ?

"

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;

namespace Projekt_2010
{
class Program
{

[DllImport("inpout32.dll", EntryPoint = "Out32")]
public static extern void Output(int adress, int value);
[DllImport("inpout32.dll", EntryPoint = "Inp32")]
public static extern short Input(int adress);


static void SetLys(int x, int y, ConsoleColor Farve)
{
Console.SetCursorPosition(x, y);
Console.ForegroundColor = Farve;
Console.Write("¦");
}


static void Setlampe(int nr, int lampe)
{
Output(0x378, nr);
strobe();
Output(0x378, lampe);
strobe();
}


static void SetLysFod(int x, int y, ConsoleColor Farve, int nr, int lampe)
{
Console.SetCursorPosition(x, y);
Console.ForegroundColor = Farve;
Console.Write("¦");

Output(0x378, nr);
strobe();
Output(0x378, lampe);
strobe();
}


static void strobe()
{
Output(0x37A, 0x1);
Output(0x37A, 0x0);
}


static void Lyskryds(int Nr, int Nr1, int Lampe, int Lampe1)
{
int kontakt;

Output(0x378, Nr);
strobe();

kontakt = Input(0x379);

if (kontakt == 126)
{
Output(0x378, Nr1);
strobe();
Output(0x378, Lampe);
strobe();
}
else
{
Output(0x378, Lampe1);
strobe();
}
}

static void Main(string[] args)
{

Console.BackgroundColor = ConsoleColor.DarkGray;
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.Clear();

Output(0x378, 0xC0);
strobe();

Console.CursorVisible = false;

while (true)
{

// -- // -- // -- // -> Tænder rød fra 1-4. <- // -- // -- // -- //

Setlampe(0x00, 0x81);
SetLys(14, 14, ConsoleColor.Red);

Setlampe(0x01, 0x81);
SetLys(16, 14, ConsoleColor.Red);

Setlampe(0x02, 0x81);
SetLys(15, 15, ConsoleColor.Red);

Setlampe(0x03, 0x81);
SetLys(15, 13, ConsoleColor.Red);

// Beholder jeg koderne herfra og nedefter, så laver den underlige ting,
// Men sletter jeg dem, køre den fint ?
Setlampe(0x04, 0x81);
SetLys(23, 6, ConsoleColor.Red);
SetLys(23, 15, ConsoleColor.Red);

Setlampe(0x05, 0x81);
SetLys(25, 14, ConsoleColor.Red);
SetLys(23, 22, ConsoleColor.Red);

Setlampe(0x06, 0x81);
SetLys(7, 22, ConsoleColor.Red);
SetLys(7, 14, ConsoleColor.Red);

Setlampe(0x07, 0x81);
SetLys(5, 14, ConsoleColor.Red);
SetLys(7, 6, ConsoleColor.Red);

Setlampe(0x08, 0x81);
SetLys(11, 5, ConsoleColor.Red);
SetLys(19, 5, ConsoleColor.Red);

Setlampe(0x09, 0x81);
SetLys(19, 23, ConsoleColor.Red);
SetLys(11, 23, ConsoleColor.Red);
// Slut

Thread.Sleep(1000);

// -- // -- // -- // -> Midterkryds - Vest, Øst. <- // -- // -- // -- //

SetLys(14, 14, ConsoleColor.DarkGray);
SetLys(16, 14, ConsoleColor.DarkGray);

Setlampe(0x00, 0x83);
SetLys(17, 14, ConsoleColor.Yellow);

Setlampe(0x01, 0x83);
SetLys(13, 14, ConsoleColor.Yellow);

System.Threading.Thread.Sleep(1000);

SetLys(17, 14, ConsoleColor.DarkGray);
SetLys(13, 14, ConsoleColor.DarkGray);

Setlampe(0x00, 0x84);
SetLys(18, 14, ConsoleColor.Green);

Setlampe(0x01, 0x84);
SetLys(12, 14, ConsoleColor.Green);

System.Threading.Thread.Sleep(1000);

SetLys(18, 14, ConsoleColor.DarkGray);
SetLys(12, 14, ConsoleColor.DarkGray);

Setlampe(0x00, 0x82);
SetLys(17, 14, ConsoleColor.Yellow);

Setlampe(0x01, 0x82);
SetLys(13, 14, ConsoleColor.Yellow);

System.Threading.Thread.Sleep(1000);

SetLys(17, 14, ConsoleColor.DarkGray);
SetLys(13, 14, ConsoleColor.DarkGray);

Setlampe(0x00, 0x81);
SetLys(14, 14, ConsoleColor.Red);

Setlampe(0x01, 0x81);
SetLys(16, 14, ConsoleColor.Red);

// -- // -- // -- // -> Drejepile - Vest, Øst. <- // -- // -- // -- //

System.Threading.Thread.Sleep(1000);

SetLys(14, 14, ConsoleColor.DarkGray);
SetLys(16, 14, ConsoleColor.DarkGray);

Setlampe(0x00, 0x88);
SetLys(18, 15, ConsoleColor.Green);

Setlampe(0x01, 0x88);
SetLys(12, 13, ConsoleColor.Green);

System.Threading.Thread.Sleep(1000);

SetLys(18, 15, ConsoleColor.DarkGray);
SetLys(12, 13, ConsoleColor.DarkGray);

Setlampe(0x00, 0x81);
SetLys(14, 14, ConsoleColor.Red);

Setlampe(0x01, 0x81);
SetLys(16, 14, ConsoleColor.Red);

Setlampe(0x02, 0x81);
SetLys(15, 15, ConsoleColor.Red);

Setlampe(0x03, 0x81);
SetLys(15, 13, ConsoleColor.Red);

System.Threading.Thread.Sleep(1000);

// -- // -- // -- // -> Midterkryds - Nord, Syd. <- // -- // -- // -- //

SetLys(15, 15, ConsoleColor.DarkGray);
SetLys(15, 13, ConsoleColor.DarkGray);

Setlampe(0x02, 0x83);
SetLys(15, 12, ConsoleColor.Yellow);

Setlampe(0x03, 0x83);
SetLys(15, 16, ConsoleColor.Yellow);

System.Threading.Thread.Sleep(1000);

// -- // -- // -- // -> Fodgængerfelt - Nord, Syd. <- // -- // -- // -- //

SetLys(15, 12, ConsoleColor.DarkGray);
SetLys(15, 16, ConsoleColor.DarkGray);

Setlampe(0x02, 0x84);
SetLys(15, 11, ConsoleColor.Green);

Setlampe(0x03, 0x84);
SetLys(15, 17, ConsoleColor.Green);

System.Threading.Thread.Sleep(1000);

SetLys(15, 11, ConsoleColor.DarkGray);
SetLys(15, 17, ConsoleColor.DarkGray);

Setlampe(0x02, 0x82);
SetLys(15, 12, ConsoleColor.Yellow);

Setlampe(0x03, 0x82);
SetLys(15, 16, ConsoleColor.Yellow);

System.Threading.Thread.Sleep(1000);

SetLys(15, 12, ConsoleColor.DarkGray);
SetLys(15, 16, ConsoleColor.DarkGray);

Setlampe(0x02, 0x81);
SetLys(15, 15, ConsoleColor.Red);

Setlampe(0x03, 0x81);
SetLys(15, 13, ConsoleColor.Red);

// -- // -- // -- // -> Drejepile - Nord, Syd. <- // -- // -- // -- //

System.Threading.Thread.Sleep(1000);

SetLys(15, 15, ConsoleColor.DarkGray);
SetLys(15, 13, ConsoleColor.DarkGray);

Setlampe(0x02, 0x90);
SetLys(14, 11, ConsoleColor.Green);

Setlampe(0x03, 0x90);
SetLys(16, 17, ConsoleColor.Green);

System.Threading.Thread.Sleep(1000);

SetLys(14, 11, ConsoleColor.DarkGray);
SetLys(16, 17, ConsoleColor.DarkGray);

Setlampe(0x02, 0x81);
SetLys(15, 15, ConsoleColor.Red);

Setlampe(0x03, 0x81);
SetLys(15, 13, ConsoleColor.Red);

// -- // -- // -- // -> Starter forfra igen. <- // -- // -- // -- //






}


}
}
}
Gravatar #2 - abreko
7. aug. 2010 15:58
Den som kan hjælpe mig, eller på nogen måde kan få programmet til at virke, er jeg villig til at ofre nogle penge til den person.!!

Håber virkelig der er en der kan hjælpe mig!!!
Gravatar #3 - onetreehell
7. aug. 2010 21:30
Det ser godt nok grimt ud. Hvad er pointen med det?
Gravatar #4 - abreko
7. aug. 2010 22:59
Hvis du ikke har noget relevant at sige, så syntes jeg ikke du skal skrive ?
Gravatar #5 - cyandk
7. aug. 2010 23:21
Når han siger grimt så mener han at der er en masse crap code i det, så det var faktisk utrolig relevant.
Gravatar #6 - mazing
8. aug. 2010 02:18
Start med at erstatte magiske tal med noget mere menneskeligt forståeligt. f.eks med nogle enums.

enum SignalRetning
{
EAST = 0x14,
WEST = 0x15,
osv
}

Tænker mest på SetLampe() her.. Går ud fra SetLys er til visualisering i Console? Måske skal du overveje at samle SetLampe og SetLys i én metode...
Gravatar #7 - abreko
8. aug. 2010 03:36
Jah det må vel abre være mig der misforstod det..

Men, ja du har ret i at SetLys er til visualisering i console. Det er ikke der den fejler, men på selve boksen som jo er tilsluttet til computern via paralelporten.

Jeg er ikke helt med i hvad du mener med enums ? Jeg er lidt ny til dette så det er måske nok derfor =?

SetLampe og SetLys har jeg således samlet i en metode, hvis det er det du mener ?

Static void SetLys(int x, int y, int nr, int lampe, ConsoleColor Farve)
{
Console.SetCursorPosition(x, y);
Console.ForegroundColor = Farve;
Console.Write("¦");
Output(0x378, nr);
strobe();
Output(0x378, lampe);
strobe();
}

Gravatar #8 - Flemhans
8. aug. 2010 03:48
Her er en der har et lignende problem, håber du eventuelt kan få noget ud af det.

http://www.udvikleren.dk/CSharp/Thread.aspx/15/323...

Jeg kan desværre ikke hjælpe så meget selv da jeg ikke har en pind forstand på disse koder.
Gravatar #9 - abreko
8. aug. 2010 03:57
Det er så mig der skrev der inde, men åbenbart er der ingen der kan hjælpe indtil vider.
Gravatar #10 - Flemhans
8. aug. 2010 06:15
Okay jeg håber at du finder en der kender til det !
Gravatar #11 - Flemhans
18. aug. 2010 16:56
Fik du ordnet det hele?
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login