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
