| |
|
|
 Member 4968348 | ¡Hola zusammen,
bin neu hier en el Foro y habe veces 'ne Cuestión para o.g. Thema Yo versuche encima el virt. Port mi vom Arduino gesendete Zeichenkette a lesen. Mit el "hauseigenen" seriellen Monitor el IDE y una otro Termialprogramm (RS232 Terminal) klappt el wunderbar. Leider macht el XProfan Prog algo Problemas. En el 1. Durchlauf se el empfangende Zeichenkette no adecuado. En el folgenden Durchläufen se jeweils el empf. Zeichenkette vom vorherigen (!) Durchlauf korrekt adecuado usw.
Was se ejecuta como falso ?
Hier veces el Ver código fuente: ( XProfan11 , teilweise de el Ayuda-Expediente entnommen)
'============================================================================ ' COM Empfang '============================================================================
Declarar a$, f%, ende% , Sendestring$ , Empfangstring$ , Durchlauf%
Proc GetComInput Parámetros id% Declarar x$ , Empf$ x$ = @ReadCom$(id%, 1) @ComError(id%) Imprimir x$;
Sinestar encargado x$ = "" x$=@ReadCom$(id%,1) @ComError(id%) imprimir x$; EndWhile
ENDPROC
Ventana 0, 0 - 600, 600
f% = @OpenCom("COM5", 100, 100)
ende% = 0 Durchlauf% = 1
GetComInput f% Sinestar encargado ende%
a$ = @Entrada$("Zeichen 's' para senden", "", "s")
If a$ = "" ' Ende con Abbruch ende%=1
ElseIf a$ = "s" ' Signo senden imprimir @Formato$("Duchlauf 00 : ",Durchlauf%); imprimir @Formato$("Wert gesendet 00 : ",Durchlauf%); Sendestring$ = @Formato$("00000",Durchlauf%)
@WriteCom(f%,Sendestring$)
sleep 100 imprimir "empfangen = "; GetComInput f% ' empfangene Signo lesen
INC Durchlauf% a$ = "" imprimir Endif EndWhile
@CloseCom(f%) End
Apéndice: Arduino UNO en me al COM 5 (USB) angeschlossen Das Comportamiento zeigt se en el BS Win XP Im BS Win11 funkt lo garnicht con el Profano-Prog.
Mit el hauseigenen ser. Monitor el Arduino IDE muy bien Der Arduino Sketch dürft also trabajo |
|
|
| |
|
|
|
 E.T. | Kann no testen, aber veces drüber geschaut:
Der erste Aufruf de "GetComInput" es sin el "@WriteCom(f%,Sendestring$)" antes el Hauptschleife.
Erst en el 2. Aufruf en el Hauptschleife es el "@WriteCom(f%..." esta, como es f% allerdings todavía 1 vom 1. Durchlauf, porque sólo später en el Bucle aumenta se.
So probiert: ... ' GetComInput f% Sinestar encargado ende% ...
Como beginnt el "Anzeige" con Durchlauf 1
(getestet sin Fehlermeldungen bajo Win10, allerdings auch kein "Gerät" angeschlossen) |
|
|
| Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | vor 6 Tagen ▲ |
|
|
|
|
 Member 4968348 | ¡Hola Mario,
[
E.T. (01.06.2025)
Kann no testen, aber veces drüber geschaut:
Der erste Aufruf de "GetComInput" es sin el "@WriteCom(f%,Sendestring$)" antes el Hauptschleife.
So probiert: ... ' GetComInput f% Sinestar encargado ende% ...
... ha no Erfolg gebracht
E.T. (01.06.2025)
Erst en el 2. Aufruf en el Hauptschleife es el "@WriteCom(f%..." esta, como es f% allerdings todavía 1 vom 1. Durchlauf, porque sólo später en el Bucle aumenta se.
'f%' es el Rückgabewert de @openCom, also el Port-Handle ! y se en el Bucle auch no aumenta
Yo habe el problema mitlerweile salvo algunos Schönheitsfehler gelöst, siehe Ver código fuente más unten. Usted schriebst: du hast kein "Gerät" para testen. Usted necesidad no necesariamente una Arduino Board con entsprechenden Prog, en el Ganze a testen. Wenn du una " USB to Serial Adapter with CH340" hast ....así algo...)

simplemente al Adapter Pin TxD con Pin RxD verbinden y encima el Gerätemanager el Port herausfinden. Leider funktioniert sólo Port 1 - 9, por qué ??? Getestet con Win10
Yo benutze el Prog dazu, en encima una Arduino una Schrittmotor a steuern. Yo sende una 'Befehl' y el Board envía entonces el Status zurück .
Hier el überarbeitete Ver código fuente: |
 |
|
| |
|
|
|
 Member 4968348 | ... achso,
So es el Ver código fuente mejor lesbar 
'====================
' COM Empfang
'====================
Declarar Eingabe$, Port$ , Port_Hnd%, ende% , Sendestring$ , Empfangstring$
Proc GetComString
Parámetros id%
Declarar Signo$ , Empf$
Mientras que 1
Signo$ = @ReadCom$(id%, 1)
sleep 100'notwendig, por qué ???
@ComError(id%)
casenot Signo$ = "" : romper'Bucle sólo verlassen, si Signo anliegt
endwhile
@Conjunto("Decimals",0)
Sinestar encargado Signo$ = ""'Bucle solange Signo disponible son
Empf$ = Empf$ + Signo$
Signo$=@ReadCom$(id%,1)'Signo einlesen
@ComError(id%)
EndWhile
volver Empf$
ENDPROC
Ventana 0, 0 - 800, 600
Def $Port "COM5"'a / de esta Port se gesendet / empfangen
Def $Port_Parameter ":9600,N,8,1"'Port Settings
imprimir " Signo senden y empfangen en Port: " + $Port + ":\n"
Port_Hnd% = @OpenCom($Port, 100, 100)
ifnot Port_Hnd% = -1' Port es verfügbar
@setCom(Port_Hnd%, $Port + $Port_Parameter)
ende% = 0
Sinestar encargado ende%
Eingabe$ = @Entrada$("beliebige (Alpha)Zeichenkette eingeben", "", "beliebige Zeichen")
If Eingabe$ = ""' Ende con <Abbruch>
ende%=1
más
Sendestring$ = Eingabe$
@WriteCom(Port_Hnd%,Sendestring$)'Zeichenkette senden
imprimir " gesendet wurde : "; Sendestring$
Empfangstring$ = GetComString(Port_Hnd%)'empfangene Zeichenkette
imprimir "empfangen wurde : "; Empfangstring$
clear Empfangstring$
imprimir
Endif
EndWhile
más
imprimir "Port " + $Port + " no verfügbar"
waitinput
endif
@CloseCom(Port_Hnd%)
End
|
|
|
| |
|
|