Avatar billede preet Nybegynder
04. oktober 2004 - 14:44 Der er 9 kommentarer og
1 løsning

Sende escape og enter-karakter via TCP/IP

I forlængelse af mit forrige spørgsmål har jeg nu brug for at sende karaktererne Enter og Escape via TCP/IP... Enter virker muligvis, har ikke lige mulighed for at teste nu.

Jeg havde forestillet mig, at det ville være nok at sende \n (måske det er) og \e (virker slet ikke)...

Klassen jeg bruger til at sende er en der er kommet med den enhed, som jeg programmerer til. Når jeg sender karakter eller strenge ser det ud som følgende:

gtp.send("Hello");

Jeg har prøvet med forskellige ting, men puha. Java er ikke lige mig :/
Avatar billede arne_v Ekspert
04. oktober 2004 - 14:49 #1
Nu ved jeg ikke hvad gtp er for en type.

Men sender du en byte med værdien decimal 27, så er det en escape. Og en
retur vil være en 10 eller 13 eller 13 efterfulgt af 10.
Avatar billede arne_v Ekspert
04. oktober 2004 - 14:52 #2
Og \e og \r og \n burde faktisk blive til 27 og 13 og 10, når du konverterer
fra streng/chars til byte.
Avatar billede arne_v Ekspert
04. oktober 2004 - 14:53 #3
Bemærk at du kan ikke køre GUI applikationer over socket kun rene console
applikationer.
Avatar billede preet Nybegynder
04. oktober 2004 - 14:59 #4
Det er en socket til den enhed, jeg arbejder på... Den er lavet ved at jeg har skrevet private tcpip gtp;

Jeg er virkelig grøn inden for Java, er vant til C/C++ og php så er desværre nødt til at få tingene skåret lidt ud. Jeg har forsøgt mig med gtp.send((char)13) men det vil den slet ikke spise. Men ved heller ikke om det er sådan, at byte skal sendes afsted?
Avatar billede preet Nybegynder
04. oktober 2004 - 15:04 #5
Jeg vil lige prøve at beskrive mit projekt. Jeg skal lave en applet der skal ligge i en lille enhed med indbygget webserver. Appletten skal bl.a. indeholde et terminal-vindue hvor jeg kan skrive kommandoer til enheden (enheden er en XPort der skal sende kommandoerne videre til RS232).

Jeg har fået oprettet forbindelse og kan kommunikere med den. Men mangler escape-tegnet til at få stoppet enkelte kommandoer.
Avatar billede arne_v Ekspert
04. oktober 2004 - 15:06 #6
Øh.

Du laver vel en:

Socket s = new Socket(host, port);
OutputStream os = s.getOutputStream();
byte[] b = new byte[antaltegn];
// fyld data i b
os.write(b);

?
Avatar billede preet Nybegynder
05. oktober 2004 - 09:41 #7
Du skal have tak for hjælpen, desværre kan jeg ikke få det til at virke - jeg kan slet ikke få fyldt data ind i b...

Jeg er vant til fra andre sprog at kunne skrive b[0] = (byte)27 men her brokker compileren sig over en manglende identifier... Hvad gør jeg forkert?
Avatar billede arne_v Ekspert
05. oktober 2004 - 09:47 #8
byte[] b = new byte[2];
b[0] = (byte)27;
b[1] = (byte)63;

bør compile fint.
Avatar billede preet Nybegynder
05. oktober 2004 - 11:03 #9
Hej Arne,

Dine svar har hjulpet mig et godt stykke af vejen nu, så stik mig et svar :)

Peter
Avatar billede arne_v Ekspert
05. oktober 2004 - 11:06 #10
kommer her
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
Kurser inden for grundlæggende programmering

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