mboost-dp1
C# lyskryds - Virkelig brug for hjælp ?
- Forside
- ⟨
- Forum
- ⟨
- Programmering
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. <- // -- // -- // -- //
}
}
}
}
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. <- // -- // -- // -- //
}
}
}
}
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...
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...
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();
}
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();
}
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.
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.
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.