Avatar billede pablopablo Nybegynder
14. juli 2005 - 00:34 Der er 1 kommentar og
1 løsning

Seriel komm og Code pages(CP)

Hejsa...

Jeg har kodet et prog. som modtager data fra en maskine via RS-232...Jeg har aldrig haft noget dokumentation på hvad maskinen reelt sender i...altså hvilken code page, UTF8 eller noget...Jeg tror dog den sender via CP 1252...men er nu kommet i tvivl!

Jeg modtager godt nok ikke via CP 1252 men i unicode...

Et udklip af koden, som står for modtagelse af data ser således ud:

//Opretter et nyt byte array med det antal modtaget karaktere som størrelse
                byte[] modtagetData = new byte[cp1.InBufferCount];

                //Lægger indholdet fra com-port-bufferen over i det nye byte array
                if(cp1!=null)
                    modtagetData = cp1.Input;

                for(int i=0; i<modtagetData.Length; i++)
                {
                    //Omregner decimalværdien til UNICODE-tegn og gemmer det i variablen "data".
                    data += new string((char)modtagetData[i],1);
                }

...

Af det data som modtages, klippes en del komma-tal ud og der forefindes også 3 gange 128 karaktere som hver repræsentere en graf hver...dvs. det første af de 128 tegn decimale værdi bliver omregnet og det er så det første Y-koordinat i grafen osv...fx. (0, 67) (1, 70) osv..

Det har altid fungeret fint, at modtage data på denne måde, både div. tal og de tre grafer er altid blevet tegnet korrekt...

Mit spg. / problem er, at programmet også er i stand til at sende det samme data videre til andre systemer...lige nu sidder jeg med to computere hvor programmet kører på begge...Programmet er i stand til at sende præcis det samme data som det tidligere har modtaget(via samme protokol som maskinen benytter)...og efter at have studeret det data som maskinen sender ud, er jeg nået frem til at den bruge CP 1252...Men problemet er ved brug af CP 1252 til afsendelse af data fra den første PC til den anden, at de tre grafer kun bliver 80% "korrekt tegnet", dvs. når man sammenligner de tre grafer i det prog. på den ene maskine og i det andet prog. på den anden maskine så er der nogle underlige "hakker" i de tre grafer...åbenbart pga. nogle andre tegn/tal er sendt over mediet end de oprindelige...? Alt data ud over graferne, dvs. en masse komma-tal er 100% identisk med det afsendte fra den første PC...så jeg undrer mig noget over fejlen...

Jeg håber meget I kan følge mig og I kan hjælpe mig til hvorledes jeg kommer videre...

På forhånd tak ;)

Mvh. PabloPablo
Avatar billede pablopablo Nybegynder
14. juli 2005 - 04:06 #1
Jeg skulle bruge code page 28591 istf. code page 1252!! That's it!
Avatar billede medions Nybegynder
14. juli 2005 - 08:41 #2
pablopablo> Gider du kontakte mig på rune[at]medions.dk

//>Rune
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester