Avatar billede daimidude Nybegynder
02. juli 2004 - 12:21 Der er 16 kommentarer

Læsning af serialport/RS232-problem.

Hej Alle.

Jeg har lavet en applikation i C#, der skal modtage, og kun modtage, en streng/karakterer fra serialport.

For at opnå dette bruger jeg metoderne fra:
http://msdn.microsoft.com/msdnmag/issues/02/10/NETSerialComm/default.aspx

Med hyperTerminal modtager jeg det jeg skal bruge korrekt, f.eks. således:
#2249|2265|0|0|1|1$#2258|2279|0|1|0|0$

Men med koden fra ovenstående link får jeg, i bytes, f.eks. dette:
132,44, 26, 26, 82, 24, 53, 24, 33, 37, 99, 67, 60, 60, 56, 28, 
239, 12, 134, 140, 99, 230, 165, 255, 136, 136 ,16, 18, 16, 255
136, 37, 243, 24, 24, 239, 12, 134 Osv.

Jeg ved ikke hvordan jeg skal fortolke dette så det giver mening.

Har nogen en ide om hvad jeg skal/kan gøre?

Mvh.
Avatar billede rbj_fp Nybegynder
02. juli 2004 - 12:26 #1
Du skal konvertere dine bytes til chars for at få det til at virke...
Avatar billede daimidude Nybegynder
02. juli 2004 - 12:28 #2
rbj_fp> Kan du give et eksempel på hvordan denne konvertering skulle foregå, så ovenstående bytes kommer til, at ligne resultatet fra HyperTerminal??
Avatar billede rbj_fp Nybegynder
02. juli 2004 - 12:32 #3
Jeg er desværre ikke alt for meget inde i C# lige nu....

men noget ala Char minTegn = ((Char)minByte);
Avatar billede rbj_fp Nybegynder
02. juli 2004 - 12:34 #4
Ellers prøv denne:
byte x; // her er din byte
string str1 = x.ToString();
Avatar billede finger Nybegynder
02. juli 2004 - 12:42 #5
hvis du har det i et array:
System.Text.StringBuilder sb = new StringBuilder();

foreach(Byte b in myBytesArray)
{
  sb.append(b.ToString());
}
string myresult = sb.ToString();
Avatar billede finger Nybegynder
02. juli 2004 - 12:43 #6
du kan sikkert også bruge Char.Parse()
ellers er der noget i Convert klassen
Avatar billede daimidude Nybegynder
02. juli 2004 - 12:44 #7
rbj_fp> Ja, det ville jeg også mene, men det giver mig noget lignene dette:
? ,     R    5   ! % c C < < 8  ï ? ? c æ ¥ ÿ ?? ÿ ? % ó ï ? ? s

som ikke siger mig meget :-(
Avatar billede rbj_fp Nybegynder
02. juli 2004 - 12:47 #8
Noget kunne tyde på at der er en forskellig i hvordan dit program og hyperterminal forstår tegnene
Avatar billede finger Nybegynder
02. juli 2004 - 12:50 #9
er du sikker på at dit program åbner porten rigtigt? det kunne tyde på at nogle indstillinger er forkerte. fx offset eller hastighed
Avatar billede daimidude Nybegynder
02. juli 2004 - 12:51 #10
Netop, for jeg kan godt knvertere værdierne til string og/eller char. De bliver bare ikke til noget som tilnærmelsesvis ligner resultatet fra HyperTerminal.
Avatar billede daimidude Nybegynder
02. juli 2004 - 12:52 #11
finger> Jeg åbner porten med samme hastighed som i Hyper.. nemlig baudRate 9600...
Avatar billede daimidude Nybegynder
02. juli 2004 - 12:56 #12
Såvidt jeg kan se åbnes porten således i i klassen fra linket:
hPort = Win32Com.CreateFile(cs.port, Win32Com.GENERIC_READ | Win32Com.GENERIC_WRITE, 0, IntPtr.Zero, Win32Com.OPEN_EXISTING, Win32Com.FILE_FLAG_OVERLAPPED, IntPtr.Zero);
Avatar billede finger Nybegynder
02. juli 2004 - 12:58 #13
hmmm... der er jo hverken hastighed eller offset eller stopbits... kan du evt vise noget mere af den kode du bruger?
Avatar billede daimidude Nybegynder
02. juli 2004 - 13:06 #14
Kallse jeg bruger kan ses her:
http://userportal.iha.dk/~01879/bin/CommBase.cs
Avatar billede finger Nybegynder
02. juli 2004 - 13:13 #15
hmmm det er for langt at kigge på nu. ser om jeg får tid i aften
Avatar billede daimidude Nybegynder
02. juli 2004 - 13:20 #16
Jeg vil næsten tro at det mest interessante fore går ned ved/i "internal class Win32Com", bod slutning/bunden af filen CommBase.cs.
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