SetCommMask()

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • niko
    Avregistrerad
    • 2002-06-16
    • 2415

    #16
    BTW: Har du provat giveio.sys? Den är inte specifik för att läsa mot LTP1 utan ger generell hårdvaruaccess. Eventuellt kunde alltså din SetCommMask-kod funka när den är laddad? (Nu spekulerar jag.) Men det är iaf den killarna i tråden jag länkade till pratar om (andra inlägget).

    Comment

    • Reza
      Medlem
      • 2001-02-27
      • 111

      #17
      Jag har laddat ner giveio och installerat det, men det fungerar inte.
      Jag får INVALID_HANDLE_VALUE.

      h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL,
      OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);


      Med min dll fil kan jag ju som bekant läsa av porten direkt, kan jag loopa och se när det finns något att läsa???
      "Keep things as simple as possible, but not simpler"

      Comment

      • developer
        Medlem
        • 2001-08-02
        • 453

        #18
        Vad returnerar GetLastError() när CreateFile() felat?

        Är drivrutinen startad? Använd sc.exe för att kontrollera drivrutinen - "sc query giveio", "sc start giveio" och "sc stop giveio" borde fungera.

        Comment

        • developer
          Medlem
          • 2001-08-02
          • 453

          #19
          Jag tror att USBLPTPD11.SYS är något för dig. Det verkar som den stöder asynkron IO från parallellporten. Då borde du kunna göra en ioctl med IOCTL_WAIT_INTERRUPT, och skicka med en overlapped-struktur med ett event som du sedan väntar på med WaitForSingleObject, så signalerar drivern eventet när data kommer på porten. Då kan du göra läsningen.

          (jag är inte alls säker på att jag har rätt...)

          Comment

          • Reza
            Medlem
            • 2001-02-27
            • 111

            #20
            developer, jag har suttit med det här problemet i flera dag nu (sovit bara några timmar).
            Vill du vara så snäll och skriva ett exempel på hur jag väntar på inkommande data och hur jag läser det med hjälp av USBLPTPD11.SYS.
            Får jag det här att funka nu kan jag sova ikväll…
            "Keep things as simple as possible, but not simpler"

            Comment

            • niko
              Avregistrerad
              • 2002-06-16
              • 2415

              #21
              [citat]
              Jag har laddat ner giveio och installerat det, men det fungerar inte.
              [/citat]

              Jag testade själv på XP Pro (svensk) och det fungerar utmärkt. Hur installerade du den? Om man bara står i system32\drivers på XP och skriver: "instdrv giveio giveio.sys" så kommer det inte att funka. Du måste se till att registernyckeln:

              [kod]HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\giveio\ imagepath[/kod]

              har värdet: "system32\drivers\giveio.sys".
              Sen går det att starta med: "net start giveio" och "CreateFile" kommer också att returnera en "valid handle".

              Om det sen gör att din kod med SetCommMask kommer att fungera är, som sagt, mer osäkert. Men jag tycker det är värt ett försök.

              Comment

              • Reza
                Medlem
                • 2001-02-27
                • 111

                #22
                Nej, det fungerar inte. När jag kör net star får jag meddelandet :
                "systemfel 3 har uppstått.
                Det går inte att hitta sökvägen."

                ????
                "Keep things as simple as possible, but not simpler"

                Comment

                • niko
                  Avregistrerad
                  • 2002-06-16
                  • 2415

                  #23
                  OK? Prova att skriva "\??\<hela sökvägen>" i registernyckeln.

                  Alltså tex: "\??\c:\windows\system32\drivers\giveio.sys".

                  Det ska också funka. Du har väl förresten placerat filen i mappen "drivers"?

                  Comment

                  • Reza
                    Medlem
                    • 2001-02-27
                    • 111

                    #24
                    Ha ha det fungerar, tack.
                    Nu ska jag prova med SetCommMask och sånt, jag hör av mig snart!!!
                    "Keep things as simple as possible, but not simpler"

                    Comment

                    • Reza
                      Medlem
                      • 2001-02-27
                      • 111

                      #25
                      Nej, det fungerar inte med SetCommMask
                      "Keep things as simple as possible, but not simpler"

                      Comment

                      • niko
                        Avregistrerad
                        • 2002-06-16
                        • 2415

                        #26
                        OK. Trist. Men du har ju ett par options kvar. Dels developers variant, dels min länk där uppe: http://www.entechtaiwan.com/tviclpt.htm. Men borde du inte sova en stund först?

                        Comment

                        • Reza
                          Medlem
                          • 2001-02-27
                          • 111

                          #27
                          Det bästa hade varit om jag hade kunnat använda en dll fil, som io.dll fast med interrupts.
                          Vet någon var man får tag i sånt??

                          Jag känner nu att jag kanske ska tala om varför jag vill ”läsa av” LPT porten…
                          Jo, jag har byggt en liten elektronisk krets som ska avkoda DTMF tonerna till bitar.
                          Det är alltså en nummerpresentatör till PC.
                          "Keep things as simple as possible, but not simpler"

                          Comment

                          • niko
                            Avregistrerad
                            • 2002-06-16
                            • 2415

                            #28
                            [citat="Reza"]
                            Det bästa hade varit om jag hade kunnat använda en dll fil, som io.dll fast med interrupts.
                            [/citat]

                            Fast io.dll är inte en stand-alone dll. Den innehåller en driver (io.sys) som den dumpar till disk och installerar och startar. io.sys fungerar sen "i princip" som giveio.sys.

                            [citat="Reza"]
                            Vet någon var man får tag i sånt??
                            [/citat]

                            På sidan jag länkade till så står det att det kitet hanterar interrupts från parallellporten. Finns säkert sample-kod. Har du provat?

                            Annars har jag nog inte fler tips .. Tyvärr.

                            Comment

                            • Reza
                              Medlem
                              • 2001-02-27
                              • 111

                              #29
                              Det är jag igen, nu måste ni vara väldigt trötta på dessa frågor, förlåt…
                              Varje gång DTMF tonerna är på ingång får min app en Busy signal på LPT pin 11.
                              Är det ok att loppa och checka denna värde, är det signal på pin 11 utför jag något annars fortsätter loppen?

                              Jag vill helst inte betala 1000:- för en sån kit som hanterar interrupts från parallellporten.
                              "Keep things as simple as possible, but not simpler"

                              Comment

                              • niko
                                Avregistrerad
                                • 2002-06-16
                                • 2415

                                #30
                                Är ingen expert på sånt här men det är ju sjävklart mer optimalt att använda interrupts än att polla. Men sen beror det ju helt och hållet på hur ofta man är tvungen att polla för att inte missa data. Du märker ju själv hur systemet påverkas när du testar? Om processorn ligger på 100 % och musen knappt går att flytta så .. annars är det väl OK?

                                Comment

                                Working...