| |
|
|
 Member 4968348 | allô zusammen,
suis récente ici im Forum et habe la fois 'ne Frage zum o.g. Thema je versuche sur den virt. Port mon vom Arduino gesendete Zeichenkette trop lesen. avec dem "hauseigenen" seriellen Monitor qui IDE et einem anderen Termialprogramm (RS232 Terminal) klappt cela wunderbar. malheureusement pouvoir cela XProfan Prog quelque chose Probleme. chez dem 1. Durchlauf wird qui empfangende Zeichenkette pas angezeigt. chez den folgenden Durchläufen wird jeweils qui empf. Zeichenkette vom vorherigen (!) Durchlauf korrekt angezeigt usw.
quoi fonctionne là faux ?
ici la fois qui Voir le texte source: ( XProfan11 , partiellement aus qui Aider-Dossier entnommen)
'============================================================================ ' COM réception '============================================================================
Déclarer a$, f%, ende% , Sendestring$ , Empfangstring$ , Durchlauf%
Proc GetComInput Paramètres id% Déclarer x$ , Empf$ x$ = @ReadCom$(id%, 1) @ComError(id%) Imprimer x$;
WhileNot x$ = » x$=@ReadCom$(id%,1) @ComError(id%) imprimer x$; Endwhile
ENDPROC
Fenêtre 0, 0 - 600, 600
f% = @OpenCom("COM5", 100, 100)
ende% = 0 Durchlauf% = 1
GetComInput f% WhileNot ende%
a$ = @Contribution$("Zeichen 's' pour senden", », "s")
Si a$ = » ' Ende avec Abbruch ende%=1
ElseIf a$ = "s" ' marque senden imprimer @Format$("Duchlauf 00 : ",Durchlauf%); imprimer @Format$("Wert gesendet 00 : ",Durchlauf%); Sendestring$ = @Format$("00000",Durchlauf%)
@WriteCom(f%,Sendestring$)
sleep 100 imprimer "empfangen = "; GetComInput f% ' empfangene marque lesen
INC Durchlauf% a$ = » imprimer Endif Endwhile
@CloseCom(f%) Fin
Nachtrag: Arduino UNO chez mir am COM 5 (USB) angeschlossen cela Verhalten zeigt sich im BS Win XP Im BS Win11 funkt es garnicht avec dem Profan-Prog.
avec dem hauseigenen ser. Monitor qui Arduino IDE très bien qui Arduino Sketch dürft alors marcher |
|
|
| |
|
|
|
 E.T. | Kanns pas testen, mais la fois drüber geschaut:
qui erste Aufruf de "GetComInput" erfolgt sans cela "@WriteCom(f%,Sendestring$)" avant qui Hauptschleife.
seulement im 2. Aufruf dans qui Hauptschleife ist cela "@WriteCom(f%..." dabei, voilà f% allerdings encore 1 vom 1. Durchlauf, weil seulement später dans qui Boucle augmenté wird.
So probiert: ... ' GetComInput f% WhileNot ende% ...
là beginnt qui "Anzeige" avec Durchlauf 1
(getestet sans Fehlermeldungen sous Win10, allerdings aussi ne...aucune "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 | allô Mario,
[
E.T. (01.06.2025)
Kanns pas testen, mais la fois drüber geschaut:
qui erste Aufruf de "GetComInput" erfolgt sans cela "@WriteCom(f%,Sendestring$)" avant qui Hauptschleife.
So probiert: ... ' GetComInput f% WhileNot ende% ...
... hat keinen Erfolg gebracht
E.T. (01.06.2025)
seulement im 2. Aufruf dans qui Hauptschleife ist cela "@WriteCom(f%..." dabei, voilà f% allerdings encore 1 vom 1. Durchlauf, weil seulement später dans qui Boucle augmenté wird.
'f%' ist qui Rückgabewert de @openCom, alors cela Port-Handle ! et wird dans qui Boucle aussi pas augmenté
j'ai cela Problem mitlerweile jusqu'à sur quelques Schönheitsfehler gelöst, siehe Voir le texte source plus unten. Du schriebst: tu as ne...aucune "Gerät" zum testen. Du besoin pas absolument un Arduino Board avec entsprechenden Prog, um cela Ganze trop testen. si du un " USB to Serial Adapter with CH340" la hâte ....so quelque chose...)

simple am Adapter Pin TxD avec Pin RxD relier et sur den Gerätemanager den Port herausfinden. malheureusement funktioniert seulement Port 1 - 9, pourquoi ??? Getestet avec Win10
je benutze cela Prog en supplément, um sur un Arduino une Schrittmotor trop steuern. je sende un 'Befehl' et cela Board sendet ensuite den Status zurück .
ici qui überarbeitete Voir le texte source: |
 |
|
| |
|
|
|
 Member 4968348 | ... achso,
So ist qui Voir le texte source besser lesbar 
'====================
' COM réception
'====================
Déclarer Eingabe$, Port$ , Port_Hnd%, ende% , Sendestring$ , Empfangstring$
Proc GetComString
Paramètres id%
Déclarer marque$ , Empf$
Tandis que 1
marque$ = @ReadCom$(id%, 1)
sleep 100'notwendig, pourquoi ???
@ComError(id%)
casenot marque$ = » : pause'Boucle seulement sortir de, si marque anliegt
endwhile
@Set("Décimal",0)
Whilenot marque$ = »'Boucle solange marque vorhanden sommes
Empf$ = Empf$ + marque$
marque$=@ReadCom$(id%,1)'marque einlesen
@ComError(id%)
Endwhile
return Empf$
ENDPROC
Fenêtre 0, 0 - 800, 600
Def $Port "COM5"'à / de cette Port wird gesendet / empfangen
Def $Port_Parameter ":9600,N,8,1"'Port Settings
imprimer " marque senden et empfangen sur Port: " + $Port + ":\n"
Port_Hnd% = @OpenCom($Port, 100, 100)
ifnot Port_Hnd% = -1' Port ist disponible
@setCom(Port_Hnd%, $Port + $Port_Parameter)
ende% = 0
WhileNot ende%
Eingabe$ = @Contribution$("beliebige (Alpha)Zeichenkette eingeben", », "beliebige Zeichen")
Si Eingabe$ = »' Ende avec <Abbruch>
ende%=1
d'autre
Sendestring$ = Eingabe$
@WriteCom(Port_Hnd%,Sendestring$)'Zeichenkette senden
imprimer " gesendet wurde : "; Sendestring$
Empfangstring$ = GetComString(Port_Hnd%)'empfangene Zeichenkette
imprimer "empfangen wurde : "; Empfangstring$
clear Empfangstring$
imprimer
Endif
Endwhile
d'autre
imprimer "Port " + $Port + " pas verfügbar"
waitinput
endif
@CloseCom(Port_Hnd%)
Fin
|
|
|
| |
|
|