21. august 2009 - 12:34Der er
9 kommentarer og 1 løsning
Forskel på HyperTerminal og C#
Jeg skal styre noget elektronik via den serielle port. Hvis jeg sender en kommando via HyperTerminalen i Windows, kan jeg styre min elektronik, men så snart jeg sender den samme serielle kommando fra C#, så sker der ikke noget som helst med min elektronik. Min C# kode ser således ud:
SerialPort s = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); s.Open(); s.Write("$05EA"); s.Close(); s.Dispose();
Kan ikke se på hvilken måde HyperTerminalen skulle kunne være anderledes end min C# kode? Hvad kan der være galt siden jeg ikke kan styre elektronikken fra C#?
Det har jeg allerede prøvet og det virker heller ikke. Det er underligt at det virker upåklageligt i HyperTerminalen og ikke fra mit program. Jeg har også prøvet et andet terminalprogram som jeg plejer at bruge, men det virker heller ikke. Det er åbenbart kun HyperTerminalen der virker. Det er godt nok underligt! Jeg kan simpelthen ikke forstå hvad det kan være?
Mit næste forslag må så være, at lade være med at lukke porten med det samme efter du har skrevet. Det er ikke sikkert dataene er blevet skrevet ud på porten endnu, når du lukker den.
Prøv en simpel Thread.Sleep(1000) for at teste det.
Du kunne også eksperimentere med noget i stil med:
Det virker desværre heller ikke :-( Jeg tror ikke det er fordi den når at lukke porten. Det må være noget andet der er i vejen. Har snart prøvet alt uden held..
Jeg er ved at rende tør for forslag.... Mine sidste desperate forslag: 1. Prøv med s.Write(@"$05EA"); 2. Prøv at lytte til et evt. svar fra hardware'en. Måske sender den en fejlmeddelelse tilbage. 3. Prøv at måle på ledningen, om der overhovedet bliver sendt noget.
Jeg har fundet løsningen på problemet. Der var ikke noget i vejen med den serielle forbindelse. Det var bare microcontrolleren som skulle konfigureres anderledes til at modtage data.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.