-         
+ Antworten
Ergebnis 1 bis 2 von 2

Thema: Serielle schnitstelle (rts/dtr/cts)

  1. #1
    Igor_B
    Gast

    Serielle schnitstelle (rts/dtr/cts)

    Hi ,
    Brauch dringend hilfe ....
    Und zwar gehts um das 10 bit datenerfassungssystem von conrad
    mit dem ltc 1090 chip . Vielleicht kennt das wer von euch !
    Also ich hab folgendes problem - ich hab den source code zum ansprechen des 10 bit datenerfassungssystems , nur ich brauch den code in c .
    So nun zum code , zum teil kapier ich ja was passiert nur
    bei den ports häng ich . Ich weis nicht was ich an den welchen port ausgeben muss um zb RTS auf null zu setzen , oder DTR bzw CTS .
    Vielleicht kann mir ja da wer helfen .
    Danke schon mal
    lg
    Igor_b
    Code:
     DECLARE FUNCTION GetMesswert! (Kanal!, Durchlauf!)
      
      'Bildschirm vorbereiten
      CLS
      LOCATE 25, 13: PRINT "mV";
      LOCATE , 35: PRINT "0       1       2       3       4       5 Volt";
      LOCATE 1, 1
        
      'Beginn der Endlosschleife
      DO
    
        'Meáwertabfrage vom AD-Wandler
        MilliVolt = GetMesswert(1, 1)
    
        'Spannungswert auf den Bildschirm schreiben
        LOCATE , 10: PRINT USING "#####"; MilliVolt;
    
        'Spannung als Leuchtpunkt ausgeben
        LOCATE , 35 + (MilliVolt / 125): PRINT "Ü"
        
        'Wiederhole die Messungen bis eine Taste gedrckt wird
      LOOP WHILE INKEY$ = ""
    
      'Programm beenden
      END
    
    FUNCTION GetMesswert (Kanal, Durchlauf)
    
      DIM AdressePort(4)
      AdressePort(1) = &H3F8: AdressePort(2) = &H2F8
      AdressePort(3) = &H3E8: AdressePort(4) = &H2E8
    
      Port = 1
      Referenz! = 5#
      PC.Speed& = 0
      MaxBitWert = 2048
    
      SELECT CASE Kanal
      CASE 1
        Kanal$ = "100011101111"
      CASE 2
        Kanal$ = "110011101111"
      CASE 3
        Kanal$ = "100111101111"
      CASE 4
        Kanal$ = "110111101111"
      CASE 5
        Kanal$ = "101011101111"
      CASE 6
        Kanal$ = "111011101111"
      CASE 7
        Kanal$ = "101111101111"
      CASE 8
        Kanal$ = "111111101111"
      END SELECT
    
        Messaddition& = 0
    
        FOR Messung = 0 TO Durchlauf
    
          Messchritt = 0
          BitWert = MaxBitWert
    
          FOR i = 1 TO 12
    
            OUT AdressePort(Port) + 4, (&HFE AND INP(AdressePort(Port) + 4))
    
            IF MID$(Kanal$, i, 1) = "0" THEN
              OUT AdressePort(Port) + 4, (&HFD AND INP(AdressePort(Port) + 4))
            ELSE
              OUT AdressePort(Port) + 4, (&H2 OR INP(AdressePort(Port) + 4))
            END IF
    
            OUT AdressePort(Port) + 4, (&H1 OR INP(AdressePort(Port) + 4))
    
            IF (INP(AdressePort(Port) + 6) AND 16) = 16 THEN
            ELSE
              Messchritt = Messchritt + BitWert
            END IF
            BitWert = BitWert / 2
    
          NEXT i
    
          OUT AdressePort(Port) + 4, (&HFD AND INP(AdressePort(Port) + 4))
          OUT AdressePort(Port) + 4, (&H2 OR INP(AdressePort(Port) + 4))
    
          FOR Warten& = 1 TO PC.Speed&: NEXT Warten&
    
          IF Messung > 0 THEN
            Messaddition& = Messaddition& + Messchritt
          END IF
    
        NEXT Messung
    
        Messchritt = (Messaddition& / Durchlauf)
        GetMesswert = Messchritt / 4.095 * Referenz!
    
    END FUNCTION

  2. #2
    Gast
    Deine Frage ist nicht ganz klar: Kennst Du die Portadressen nicht?
    3F8= Basisadresse für Com-Port1. (2F8 für COM2). Von dort aus die anderen Adressen:

    Adr. +4 = DTR , Bit 0 an Pin 4 (9-polig)
    Adr. +4 = RTS, Bit 1 an Pin 7
    Adr. +6 = DCD, Bit 7 an Pin 1
    Adr. +6 = DSR, Bit 5 an Pin 6
    Adr.+6 = CTS, Bit 4 an Pin 8
    Adr. +6 = RI, Bit 6 an Pin 9

    War es das, was Dir fehlt?

    Gruß, Harald

+ Antworten

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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