Comm-Api: Senden_Empfangen

Status
Nicht offen für weitere Antworten.
M

morEtal

Gast
Hallo,

ich habe ein Problem. Ich versuche über die Serielle Schnittstelle eine Verbindung zu einem MC aufzubauen(8051).

Allerdings habe ich das Problem, wenn ich Daten sende (Byte: 01010101), lasse ich die empfangenen Daten über die Leds anzeigen. So nun zum Problem - Ich bekomme etwas vollkommen anderes Angezeigt wie sende.

Hier noch ein bischen Code:

Code:
Assembler Code:

recieve_byte:

warte1:	jnb ri,warte1		;Warten bis Byte eingetroffen
		;	setb p2.0
			mov a,sbuf			;Datenenbyte einlesen
			;ANL A,#7FH 			; BIT 7 AUSBLENDEN
			clr ri            ;ri-flag zurücksetzen
			mov p2,a
			clr REN
			ret






Java Code:


    void sendeSerialPort(String nachricht) {
        b = new byte[1];
        b[0] = (byte) 01010101;
        System.out.println("Sende: " + nachricht);
        if (serialPortGeoeffnet != true) {
            return;
        }
        try {

            
           outputStream.write(b);
        } catch (IOException e) {
            System.out.println("Fehler beim Senden");
        }
        System.out.println("Theoretisch gesended");
    }


Könnt ihr evtl Fehler erkennen ?
Oder habt ihr vlt irgendwelche nützlichen Tippse für mich?


Danke und gz
 
S

stev.glasow

Gast
keine ahnung was java macht wenn man 01010101 als wert angibt, aber binärdarstellung ist das nicht. denn wenn man sich mal b[0] anschaut, sieht man dass b[0] 65 ist und nicht 01010101/85
versuchmal b[0] = Byte.parseByte("01010101", 2);
 
M

morEtal

Gast
Also ich habe es jetz mit der von dir beschriebenen Methode versucht.

Allerdings kommt auf dem Mc 10100101 an.

Finded irgendjemand vieleicht noch einen Fehler oder soll ich evtl mal den kompletten Code posten?
 
G

Gast

Gast
Was mir jetzt gerade noch spontan einfällt:

Das ergebnis verändert sich drastisch mit der eingestellten Baud-Rate.

Ich hab mittlerweile sogar schon die Baud-Raten alle versucht.
Bei den meisten kommt nichts an, das beste Ergebnis bekomme ich bei einer Baud von 300.

Kennt irgendjemand eine idiotensichere Taktik um die Baud herrauszufinden ?

Gz
 

Murray

Top Contributor
Sendest Du wirklich nur das eine Byte? Dann hilft es vielleicht, den Stream explizit zu flushen:
Code:
      try {

           
           outputStream.write(b);
           outputStream.flush();
        } catch (IOException e) {
            System.out.println("Fehler beim Senden: " + e);
        }
 
G

Guest

Gast
Das flushen des Streams bringt keine Besserung.
Ja, wir senden wirklich nur ein Testbyte.
Hat niemend ne Idee?

thnx im voraus
 

kama

Top Contributor
Hallo,

Gast hat gesagt.:
Das ergebnis verändert sich drastisch mit der eingestellten Baud-Rate.

Ich hab mittlerweile sogar schon die Baud-Raten alle versucht.
Bei den meisten kommt nichts an, das beste Ergebnis bekomme ich bei einer Baud von 300.
Das stinkt danach, dass das Handshake nicht vorhanden bzw. nicht zusammen passt? RTS/CTS oder Xon/Xoff ?
Was ist mit Start-/Stop-Bit Einstellung ? Parity Bit ?

Die Baudrate rausfinden kann man nur, wenn man ein definiertes Zeichen hin und her schickt und schaut bis das Fehlerfrei mindestens zweimal ankommt...

EDIT: Schon mal folgende Daten versucht: 9600 Bits/s, 1 Startbit, 8 Datenbits und 1 Stopbit, No Parity

MfG
Karl Heinz Marbaise
 
G

Guest

Gast
Hallo,

handshake haben wir speziell nicht eingestellt.
1 start bit, 1 stop bit, no parity und 8 Datenbits sind eingestellt (Mode1).
Bei der Baudrate bin ich noch unsicher. Bei der Baudrate ist kam mir bis jetzt aber 300 Bits/s am besten vor.
Ich habe in Assembler ein Programm geschrieben, dass die ankommenden Bytes direkt wieder zurückschickt.
Könnte aber auch sein, das im Assembler Programm ein Fehler ist.

Hier maql der Assembler Code

Code:
;********************************************************************
;**           Tesprogramm zum Senden und Empfangen                 **
;**         von Bytes über die serielle Schnittstelle              **
;********************************************************************



include c51rd2.inc

org 0												; StartAdresse des Codes
; Initialisierung der Schnittstelle 0--------------------------------

	mov scon,#01010000b  ;Schnittstellen Modus 1
						 ;Interrupts zurücksezen
	;orl pcon,#080h  ;smod = 1 (doppelte Baudrate)
	orl tmod,#020h  ;Timer 1 auf Modus 2 setzen
	mov th1,#10100000b   ;Reload-Wert für 4800 Baud
	setb ti			 ;Sendepuffer als leer deklarieren
	setb tr1        ;Startet Timer 1
	mov p2,#0h
	
;Empfängt Datenbytes und sendet sie wieder zurück--------------------

loop:	  	acall recieve_byte	
			acall send_byte
			cjne A,#27,loop   ;Schleife verlassen, falls
									;ASCII-Code = 27 (ESC)
end_loop: sjmp end_loop									
									
		
;********************************************************************	
;**SEND_BYTE		
;**FUNKTION: liest Datenbyte über serielle Schnittstelle
;**          ein, falls RI-Flag gesetzt wurde
;**OUTPUT: A Empfangene Datenbyte
;********************************************************************

recieve_byte:

warte1:	jnb ri,warte1		;Warten bis Byte eingetroffen
		;	setb p2.0
			mov a,sbuf			;Datenenbyte einlesen
			;ANL A,#7FH 			; BIT 7 AUSBLENDEN
			clr ri            ;ri-flag zurücksetzen
			mov p2,a
			clr REN
			ret
			
			
;********************************************************************
;**SEND_BYTE
;**FUNKTION:	Sendet Datenbyte in A über serielle Schnittstelle
;**				, falls TI_Flag gesetzt wurde
;**Input:		A		zu sendendes Datenbyte
;********************************************************************


send_byte:

warte2:	jnb ti,warte2		;warte bis vorheriges byte
		;	setb p2.1						;gesendet wurde
			mov sbuf,A			;Datenbyte ausgeben
			clr ti				;TI-Flag zurücksetzen
			setb REN
			ret
			
				
									
end
 

kama

Top Contributor
Hallo,

Anonymous hat gesagt.:
handshake haben wir speziell nicht eingestellt.
richtiges Kabel ?


Hm. Laut der Doku die ich mit Tante Google gefunden habe sieht die Initialisierung der Schnittstelle so aus....
Hier doppelte Baudrate (PCON)....Du wolltest ja PCON.7 = 0

EDIT: Hier

Weiterhin scheint mir der Wert für die Baudrate nicht richtig zu sein, da Du 0A0H Verwendest ? 300 Baud ?

Ich müsste jetzt noch weiter in die Doku vom 8051 einsteigen, um rauszufinden, ob die Reihenfolge hier auch eine Rolle spielt....

Code:
	; SMOD = 1 (double baud rate)
	; SMOD = 0 will not double baud rate
	ORL		PCON,#080h ;SMOD = 0

	; Timer 1, Mode 2
	MOV		TMOD,#20H

	; 19200 (57600/3 = 19200)
	MOV		TH1, -3	; 0FDH is the value for 9600 Baud

	; 8-Bit data, 1 stop bit, RI enabled
	MOV		SCON,#50H

	;Start timer 1
	SETB	TR1

Code:
;orl pcon,#080h  ;smod = 1 (doppelte Baudrate)
So weit ich Verstanden habe ist smod invertiert...das heißt smod=1 bedeutet bit 7 zurück setzen (XOR in 8051 kenn ich leider nicht)....smode=0 bedeutet ORL PCON,#080h

Weiterhin würde ich zum Testen zuerst nur einmal vom 8051 Send und mal schauen, ob ich was empfangen kann... ?

EDIT: Mit welcher Frequenz läuft der MC denn ?
MfG
Karl Heinz Marbaise
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D package javax.comm does not exist Java Basics - Anfänger-Themen 5
G NetBeans Comm.jar 2Klassen verbinden Java Basics - Anfänger-Themen 3
J javax.comm-API kompilieren Java Basics - Anfänger-Themen 12
Z E-Mail senden mit Bibliotheken Java Basics - Anfänger-Themen 1
C Bytearray senden via SerialPort Java Basics - Anfänger-Themen 7
K Mail senden, nachdem Anwendung beendet wurde (gleich wie) Java Basics - Anfänger-Themen 4
B Java Mail -> Mail senden, ist aber nich in IMAP unter "Gesendet" Java Basics - Anfänger-Themen 3
S Bilder über Socket Senden Java Basics - Anfänger-Themen 1
R Antwort vom Server an mehreren Clients senden Java Basics - Anfänger-Themen 3
G Email senden MailDev Java Basics - Anfänger-Themen 13
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
T Datei seriell senden Java Basics - Anfänger-Themen 42
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
L Text/Befehle zu Programmen senden Java Basics - Anfänger-Themen 1
F String zu einem Server senden Java Basics - Anfänger-Themen 4
R Daten via Post an php Script senden Java Basics - Anfänger-Themen 1
M Input/Output Allg. Befehle an die cmd.exe senden Java Basics - Anfänger-Themen 9
fLooojava Bluetooth Projekt - Problem beim mehrmaligen Senden Java Basics - Anfänger-Themen 5
M Int wert in ActionEvent senden Java Basics - Anfänger-Themen 4
A Pfadangabe Datei senden Java Basics - Anfänger-Themen 14
S Hilfe!! Senden eine Bestätigungsmail Java Basics - Anfänger-Themen 3
C "Signal" senden Java Basics - Anfänger-Themen 2
J Funktion um JSON per Post senden/emfangen Java Basics - Anfänger-Themen 3
H Objekt zu groß zum Senden? Java Basics - Anfänger-Themen 6
E Senden von Objects an Client. Variablenwerte kommen nicht an Java Basics - Anfänger-Themen 5
P Probleme bei senden eines Strings übers Netzwerk Java Basics - Anfänger-Themen 4
E SMS senden Java Basics - Anfänger-Themen 3
U E-Mails mittels Java senden. Java Basics - Anfänger-Themen 2
M bild mit httpPost senden Java Basics - Anfänger-Themen 8
B Object an Server senden, Server antwortet mit objekt? Java Basics - Anfänger-Themen 7
C Little Endianess - Senden von Daten Java Basics - Anfänger-Themen 2
M String senden/empfangen mit PHP funktioniert nicht Java Basics - Anfänger-Themen 2
T Daten über Com Port senden Java Basics - Anfänger-Themen 2
G Datei an PHP Script senden und speichern Java Basics - Anfänger-Themen 2
D Daten an Formular senden Java Basics - Anfänger-Themen 4
T Tastatur Tasten Senden Java Basics - Anfänger-Themen 4
M Mail senden - Problem connect to SMTP host Java Basics - Anfänger-Themen 5
Blackskyliner Befehle an einen Thread senden? Java Basics - Anfänger-Themen 2
M Bitmuster eines Strings über RS232 senden Java Basics - Anfänger-Themen 5
S 2x per GET senden Java Basics - Anfänger-Themen 6
B Bild/Datei von einem Server an einen Client senden Java Basics - Anfänger-Themen 6
M Mails zum Server senden der Authentisierung benötigt Java Basics - Anfänger-Themen 3
H String mit UDP senden Java Basics - Anfänger-Themen 10
M Warum kann man dem Thread kein notify senden? Java Basics - Anfänger-Themen 15
G String zur RS232 senden und mit cr abschließen! Java Basics - Anfänger-Themen 4
O Post senden an php script. Java Basics - Anfänger-Themen 20
G Post-Methode senden Java Basics - Anfänger-Themen 4
C string über server/client verbindung senden ? Java Basics - Anfänger-Themen 4
H Befehl zum FTP-Server senden?? Java Basics - Anfänger-Themen 2
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
I Webhook lokal empfangen Java Basics - Anfänger-Themen 21
I Java Mail (IMAP -> Empfangen) und Google Mail Java Basics - Anfänger-Themen 1
F Mail empfangen mit JAVA Java Basics - Anfänger-Themen 3
N Client soll mehrere Antworten von Servern gleichzeitig empfangen Java Basics - Anfänger-Themen 8
L Datei empfangen Java Basics - Anfänger-Themen 17
W RS232: Daten empfangen,bearbeiten,ausgeben Java Basics - Anfänger-Themen 2
H UDP Empfangen----> Ausgeben im TextField Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben