- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 6 von 6

Thema: Software UART Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627

    Software UART Problem

    Hallo,
    ich möchte Daten an software UART senden(Software UART, weil ich 3 RS232 Schnittstellen nutze).

    Ich habe aus einem alten Programm einen Softwareteil kopiert und weiß nun nicht, wie ich die Schnittstelle anpassen muss...

    es geht um:

    "...Output As #3 und 4" das ich benutzen möchte - ich denke da habe ich keine Fehler gemacht ABER

    wie muss ich das folgende ändern:
    Open "com1:" For Binary As #1 -> wird das dann com3?...#3?

    UND den Putbefehl:
    Put #1 , 0 -> statt #1 dann #3?


    vielen Dank, Tobias


    Code:
    '-------------------------------------------------------------------------------
    'Software RS232 für US-Sensor
    Open "COMB.1:9600,8,N,2" For Output As #1                   'Port PB1 wird als TX definiert
    Open "COMB.2:9600,8,N,2" For Input As #2                    'Port PB2 wird als RX definiert
    
    '-------------------------------------------------------------------------------
    'Software RS232 für USB
    Open "COMB.0:9600,8,N,2" For Output As #3                   'Port PB0 wird als TX definiert
    Open "COMD.6:9600,8,N,2" For Input As #4                    'Port PD6 wird als RX definiert
    
    '-------------------------------------------------------------------------------
    'USB Confi!!!!
    
    Echo Off                                                    '///für USB-Stick
    Open "com1:" For Binary As #1                               '///für USB-Stick
    '...
    
    '_______________________________________________________________________________
    Usb_schreiben:
    
    Print #3 , "OPW Log.txt" + Chr(13);                         'Datei Log.txt öffnen
    Input #4 , Datensatz
    
      Datensatz = Date$ + Chr(9) + Time$ + Chr(9) + Str(entfernung) + Chr(9) + "cm" + Chr(9) + Str(liter) + Chr(9) + "Liter" + Chr(13) + Chr(10)
      L = Len(datensatz)                                        'gibt die Länge von String "Datensatz" wieder
      Print #3 , "WRF ";                                        'Befehl um in die geöffnete Datei zu schreiben
      Put #1 , 0
      Put #1 , 0
      Put #1 , 0
      Put #1 , L                                                'L ist die Länge vom String S
      Put #1 , 13
      Print #3 , Datensatz ;
      Input #4 , Datensatz
    
    
    Print "CLF log.txt" + Chr(13);                              'Datei log.txt schließen
    Input Datensatz
    
    Return
    ...

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    und hier noch das original Programm, aus welchem ich den Teil kopiert habe....

    Code:
    'Konfiguration µC:
    $regfile = "m32def.dat"                                     'AT-Mega32
    $crystal = 14745600                                         'Quarz: 14,7456 MHz
    $baud = 9600                                                'Baudrate definieren
    
    '-------------------------------------------------------------------------------
    
    
    '-------------------------------------------------------------------------------
    Open "com1:" For Binary As #1
    
    Dim Samples As Word
    Dim Delayms As Word
    Dim Channels As Word
    Dim N As Integer
    Dim I As Integer
    Dim L As Integer
    Dim S As String * 20
    Dim Ad As Integer
    
    Config Portb = Output
    Config Adc = Single , Prescaler = Auto , Reference = Off
    Start Adc
    Echo Off
    
    Do
      Input S
    Loop Until S = "D:\>"                                       'USB Controller abfragen, bis D:\> gesendet wird
    Portb.0 = 1                                                 'schreib-LED einschalten
    Waitms 1000
    Print "rd todo.txt" + Chr(13);                              'todo.txt Datei LESEN
    Input Samples                                               'Werte aus Datei übernehmen
    Get #1 , L
    Input Delayms
    Get #1 , L
    Input Channels
    Get #1 , L
    Input S
    Print "OPW Log.txt" + Chr(13);                              'Datei Log.txt öffnen
    Input S
    For N = 1 To Samples                                        'Anzahl Messungen
      S = ""
      For I = 1 To Channels                                     'Kanäle 1-8 MAX 'geändert
        Ad = Getadc(i)
        S = S + Str(ad)
        If I < Channels Then S = S + Chr(9)
      Next I
      S = S + Chr(13) + Chr(10)
      L = Len(s)                                                'gibt die Länge von String "S" wieder
      Print "WRF ";
      Put #1 , 0
      Put #1 , 0
      Put #1 , 0
      Put #1 , L                                                'L ist die Länge vom String S
      Put #1 , 13
      Print S ;
      Input S
      Waitms Delayms                                            'Wartezeit zwischen den Messungen
    Next N
    Print "CLF log.txt" + Chr(13);                              'Datei log.txt schließen
    Input S
    Portb.0 = 0                                                 'schreib-LED ausschalten
    End
    ...

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.03.2006
    Beiträge
    68
    also um den software UART port zustarten nutze ich folgendes erfolgreich:


    Open "coma.0:9600,8,n,1" For Input As #1

    pin = a.0 !! kannst hier natürlich auch comc.4 schreiben zb.
    Input: also eingang -> receive!

    ansonsten als ausgang "For Output" schreiben!

    gruß max

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Zitat Zitat von maximum2006
    also um den software UART port zustarten nutze ich folgendes erfolgreich:


    Open "coma.0:9600,8,n,1" For Input As #1
    naja das mach ich doch:
    Open "COMD.6:9600,8,N,2" For Input As #4

    aber in dem alten Programm wurde die Hardware RS232 genutzt und ich verstehe den Zusatz nicht:
    Open "com1:" For Binary As #1

    wofür steht es und wie muss ich das ändern, wenn ich es ändern muss?

    und was machen die PUT anweisungen?
    Put #1 , 0

    Tobias
    ...

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    23.03.2006
    Beiträge
    68
    du kannst beim software UART kein BINARY nutzen nehm input/output

    You can use BINARY or RANDOM for COM1 and COM2, but for the software UART pins, you must specify INPUT or OUTPUT
    .

    schreib:

    Code:
    Open "com1:" For Input/Output As #1

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    so es läuft fast...

    leider kommt beim ersten Start immer eine Fehlermeldung:
    Bad Command<\r>

    Das Problem ist das der µC aus irgendeinem Grund eine 0 beim ersten mal sendet:

    <\0>OPW LOG.txt<\r> -> DAS IST FALSCH

    OPW LOG.txt<\r> -> SO SOLLTE ES SEIN

    Code:
    Usb_schreiben:
    'Portb.0 = 1                                                 'schreib LED ein
    Print #3 , "OPW LOG.txt" + Chr(13);                         'Datei Log.txt öffnen
    Input #4 , Datensatz
    
      Datensatz = Date$ + Chr(9) + Time$ + Chr(9) + Str(entfernung) + Chr(9) + "cm" + Chr(9) + Str(liter) + Chr(9) + "Liter" + Chr(13) + Chr(10)
    
      L = Len(datensatz)                                        'gibt die Länge von String "Datensatz" wieder
      Print #3 , "WRF ";                                        'Befehl um in die geöffnete Datei zu schreiben
      Put #3 , 0
      Put #3 , 0
      Put #3 , 0
      Put #3 , L                                                'L ist die Länge vom String Datensatz
      Put #3 , 13                                               '13 ist das abschlusszeichen also wie Chr 13
      Print #3 , Datensatz ;
      Input #4 , Datensatz
    
    
    Print #3 ,"CLF log.txt" + Chr(13);                              'Datei log.txt schließen
    Input #4 , Datensatz
    'Portb.0 = 0                                                 'schreib LED aus
    
    Return
    ist da etwas in irgend einem Speicher oder so?!


    Tobias
    ...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress