Int1 Software UART

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Nee ich verweigere mich bestimmt nicht. nur evtl verstehe ich es noch nicht. Zumindest was du mit "Verweigerst Dich aber grundsätzlich die Steuerzeichen des Com- Protokolls für Daten platt zu machen." verstehe ich jetzt gar nicht.Bei einer anderen Anwendung über Hardware UART bin folgenden Weg gegangen.


      Onrxd:

      Gosub Empfang1

      If Varval = 1 Then
      Gosub Empfang2
      Hoehe = Varval
      Varval = 1
      End If

      If Varval = 2 Then
      Gosub Empfang2
      Breite = Varval
      Varval = 1
      End If

      Return

      Empfang1:
      Input Daten1 Noecho
      Varval = Val(Daten1)
      Return

      Empfang2:
      Input Daten2 Noecho
      Varval = Val(Daten2)
      Return

      Dort Funktioniert das wunderbar, ich wecke die UART und bestimme mit den ersten Datensatz wofür was kommt und mit den zweiten den Datensatz kommt der Wert. Klar kann man das alles auch in einer String senden mit Trennzeichen, nur habe ich eine App die genau in diese Format sendet und diese will ich nutzen.
    • Dete schrieb:

      Quellcode

      1. Daten_einlesen:
      2. Disable Int1
      3. Print #2 , "CONNECT BT-ADAPTER"
      4. Input #1 , A
      5. B = Val(a)
      6. While B > 0
      7. Input #1 , A
      8. B = Val(a)
      9. Print #2 , "Hier kommt das Zeichen: " ; B
      10. Wend
      Alles anzeigen

      Dete schrieb:

      Was mich halt verwundert ist Tatsache das ich am Anfang bei der Software UART den ersten Wert immer zweimal schicken muss und danach reicht einmal wie erwartet.
      Hallo Dete,
      nach dem Connect wertest du das erste Zeichen doch gar nicht aus, sondern gehst direkt in die While-Schleife und wartest dort auf das nächste Zeichen. Dann wird alles bis zur ersten 0 ausgegeben, bevor die Schleife verlassen wird.
    • Hi Dete

      Dete schrieb:

      Klar kann man das alles auch in einer String senden mit Trennzeichen, nur habe ich eine App die genau in diese Format sendet und diese will ich nutzen.
      noch mal meine Vermutung.
      Dim A As String * 2
      Ein String übernimmt auch die Steuerzeichen also CR =13 wird nur nicht angezeigt.
      Deshalb der Hinweis schau Dir Input A im Terminal als Hex an. Da sieht man ja alle Zeichen also h0D für Enter.
      Wenn Du nur Enter drückst wird dies als Wert in deinem Fall weiter verarbeitet.
      Da Enter = 13 > 0 ist wird Ereignis ausgelöst.
      Hat nix mit selbst generierte Trennzeichen zu tun. LF und CR schickt COM- Protokoll mit, kann aber unterdrückt oder beim Empfang gelöscht werden.
      Ist oft Fehlerursache bei Schnittstellen wo„Textzahlen“ weiter verarbeitet werden sollen.
      Wenn schon String dann aber alle Steuerzeichen vorab „platt machen". Bevor es weiter geht.

      Wenn Du ein spezielles Sende App- Format verwendest, dann kannst Du natürlich meine Hinweise als Null + Nichtig betrachten.

      Ja, ja meine Rhetorik.
      Entschuldige
    • Hallo Fredred,
      Dete benutzt doch Input zum Einlesen und da er das nicht anders konfiguriert hat, wartet Input auf das CR (13). Dieses wird nicht in der Variable gespeichert, auch nicht, wenn du nur Enter drückst.
      Solange Input also auf CR reagiert, wird dieses Zeichen nicht im String abgespeichert.

      Ich würde auch nicht sagen, dass das Com-Protokoll LF und CR schickt, sondern die Anwendung, die das Protokoll benutzt. Windows macht nun mal aus einem Enter ein CR-LF, Unix nur LF und Apple nur CR. Print in Bascom schickt standarmäßig auch ein CR-LF.