-
am port stehen keine daten zu verfügung, das is ja das prob...., hab mit ner funktion, die mir n kumpel gesagt hat überprüft, wieviel im buffer ist, da war 0 drin =)
vllt hats dran gelegen, dass ich mit 7 bit sende, ich hab imma auf 8 gestellt.
naja, hab jez n progg namens SeriKey! geladen, das überträgt den eingang der com-schittstelle direkt in die tastatureingabe, damit bin ich erstmal bedient. wäre trotzdem cool zu erfahren, wieso das andere denn nicht geht.
damit werd ich erstma mein jetztiges projekt (is für die schule) zuende machen, dann hab ich zeit mich mit dem anderen zu befassen
übrigens.....thx für die posts, hätte nicht gedacht, dass das so schnell geht
-
na wenn du mit 7 bit sendest kommt am anderen ende wo 8bit erwartet werden auch nur mist raus!
probiere es einfach mal mit 8 datenbit und 2 stoppbits, das ist auch recht stabil so zumal die baudrate des senders mit dem empfänger stimmen muss .... baue einfach mal ne echoschleife!!! also tx und rx verbinden und dann die tastatur auslesen, senden und anshliessend empfangen
-
ok, werd ich machen (halte einfach n weißes blatt pappier vor den empfäger und sender, so hab ichs auch anfangs richtig eingestellt (mit hyperterminal)
mach das morgen, bin grad nicht zu Hause
-
ahhhh ein asuuurrrroooo, gott ich bin blind ..... da brauchst 9600BAUD 8 datenbits 1(EIN, nicht ZWEI) stoppbits .... klar das du mit dem tranceiver nix empfangen konntest ^^
der weisse blatttest (schreibt man das mit 3 t ???) ist perfekt, mal eine endlossschleife
Code:
char letzetaste;
char letzeszeichen;
while(letztetaste != ESCAPETASTE) {
letzeszeichen = 0;
letzeszeichen = DeinSerialport.lesebyte(); // ich weis nicht mehr wie des ging, aber HIER darf das programm NICHT stehenbleiben
if (letzteszeichen != 0) zeichenausgeben();
if (keypressed()) {
letztetaste = getch();
DeinSerialport.schreibebyte(letztetaste);
}
}
return 0;
das ist nur pseudocode :p
-
sooo, hab das jez gemacht.....aber befridigend ist das ergebnis immernoch nicht! =)
das ist mein quellcode: (habe keine endlosschleife gemacht, sondern immer wieder das selbe zeichen gesendet)
if (serial.Open(1, 2400)){
int i,j;
char taste = 'a';
for(i = 0, j = 0; i < 50; j++, i++) {
char zeichen = 'z';
printf("\nnr.: %i", j);
serial.SendData(&taste, sizeof(taste));
printf("\ndata waiting: %i\n", serial.ReadDataWaiting());
serial.ReadData(&zeichen, sizeof(taste));
printf("zeichen: %c", zeichen);
printf("\n");
}
}
else
printf("Failed to open port!");
hab mit 2400 baud, 8 bit und einem stopbit gesendet (weil mein infrarot-sender so sicher funktioniert, verwende das auch im hyperterminal.)
und hier ist das merkwürdiger ergebniss:
nr.: 0
data waiting: 0
zeichen: z
nr.: 1
data waiting: 0
zeichen: z
nr.: 2
data waiting: 0
zeichen: z
nr.: 3
data waiting: 0
zeichen: z
nr.: 4
data waiting: 0
zeichen: z
nr.: 5
data waiting: 0
zeichen: z
nr.: 6
data waiting: 0
zeichen: z
nr.: 7
data waiting: 0
zeichen: z
nr.: 8
data waiting: 0
zeichen: z
nr.: 9
data waiting: 0
zeichen: z
nr.: 10
data waiting: 0
zeichen: z
nr.: 11
data waiting: 0
zeichen: z
nr.: 12
data waiting: 0
zeichen: z
nr.: 13
data waiting: 0
zeichen: z
nr.: 14
data waiting: 0
zeichen: z
nr.: 15
data waiting: 8
zeichen:
nr.: 16
data waiting: 7
zeichen: ■
nr.: 17
data waiting: 6
zeichen: о
nr.: 18
data waiting: 5
zeichen: м
nr.: 19
data waiting: 4
zeichen: м
nr.: 20
data waiting: 3
zeichen: м
nr.: 21
data waiting: 2
zeichen: м
nr.: 22
data waiting: 1
zeichen: м
nr.: 23
data waiting: 0
zeichen: z
nr.: 24
data waiting: 0
zeichen: z
nr.: 25
data waiting: 8
zeichen: м
nr.: 26
data waiting: 7
zeichen: м
nr.: 27
data waiting: 6
zeichen: м
nr.: 28
data waiting: 5
zeichen: м
nr.: 29
data waiting: 4
zeichen: м
nr.: 30
data waiting: 3
zeichen: м
nr.: 31
data waiting: 2
zeichen: м
nr.: 32
data waiting: 1
zeichen: м
nr.: 33
data waiting: 0
zeichen: z
nr.: 34
data waiting: 0
zeichen: z
nr.: 35
data waiting: 8
zeichen: м
nr.: 36
data waiting: 7
zeichen: м
nr.: 37
data waiting: 6
zeichen: м
nr.: 38
data waiting: 5
zeichen: м
nr.: 39
data waiting: 4
zeichen: м
nr.: 40
data waiting: 3
zeichen: м
nr.: 41
data waiting: 2
zeichen: м
nr.: 42
data waiting: 1
zeichen: м
nr.: 43
data waiting: 0
zeichen: z
nr.: 44
data waiting: 0
zeichen: z
nr.: 45
data waiting: 8
zeichen: м
nr.: 46
data waiting: 7
zeichen: м
nr.: 47
data waiting: 6
zeichen: м
nr.: 48
data waiting: 5
zeichen: м
nr.: 49
data waiting: 4
zeichen: м
manchma kam statt dem "m" auch ein "V"
ich kann mir das ehrlichgesagt nicht erklären....ich hoffe dass da jemand mehr ahnung hat als ich....=)
-
erstens, bitte benutze die CODE tags, also vor dem code [ c o d e ] und dahinter [ / c o d e ] natürlich ohne leerzeichen
ausserdem hast du immernochnicht die BAUDRATE eingestellt!!!!!
if (serial.Open(1, 2400)){
sagt mir 2400 BAUD !!!!
der asuro sendet aber normalerweise auf 9600BAUD 8 Databit 1 Stoppbit!!!!!
-
mit 9600 gehts noch schlechter......da kommt noch mehr scheiß raus =)
müsste mit 2400 am besten gehen (empfange beim hyperterminal mit 2400 und bei diesem prog, dass ich runtergeladen habe auch mit 2400 (allerdings nit 7bit))
eigentlich wär es ja auch scheißegal, denn ich hab ja ne echo-schleife, bei der ich immer genauso sende, wie ich empfange...
ps. thx das mit den code-tags, hab das schon gesucht.
-
es scheint fast schon, als ob es erstmal anlaufen muss, denn nach dem 20. mal sendet er immer konstant (zwar nicht das richtige zeichen, aber konstant!)
wenn ich ein char array sende und empfange, dann funktioniert es garnicht...... wenn ReadDataWaiting() mehr als 0 anzeigt, dann scheint das array überhaupt keinen inhalt zu haben.
hab mal wieder versucht mit allen möglichen parametern vom asuro was zu senden und es am pc zu empfangen, hat aber nicht funktioniert, es kam absolut nix an.
-
wie hast du das mit dem echo jetzt gemacht ? wenns weisses blatt iss, klingts nach schlecht eingestelltem empfänger, wenn anders gelöst, bitte beschreiben ^^
-
weißes blatt. aber eigentlich brauche ich nicht mal eins, der sendet das echo auch ohne blatt bei mir, der sender und empfänger sind ja direkt nebeneinander. der empfänger ist richtig eingestellt, sendet mir beim hyperterminal ja auch richtige zeichen. und dieses programm, das ich runtergeladen habe, um die eingänge vom com-port direkt an die tastatureingabe weiterzuleiten funktioniert ja auch.
vielleicht hat das mit der parität irgendeine bedeutung beim selbstgeschriebenen programm..............allerdigs kommt da dann wenigstens etwas an, auch wenn nur müll, bei mir kommt ja überhaupt nix an. das ist es, was mich so wundert, denn falsche sendelägen würden zwar die gesendete information verfälschen, aber es würde zumindest irgendetwas ankommen!