per usb plug n play programm starten



  • Der Schwierigkeitsgrad ist 3.8.



  • hustbaer schrieb:

    Der Schwierigkeitsgrad ist 3.8.

    Würd da schon eher 3.85 schätzen. 🕶


  • Administrator

    @hustbaer & theta,
    Ihr seid fies ... 😃

    @Datsik,
    1. Wie sollen wir den Schwierigkeitsgrad schätzen? Wir wissen ja nicht einmal, was für Wissen du besitzt und auch dann, ist sowas sehr schwer bis gar nicht möglich.
    2. Ein freundlicher Mod mit den entsprechenden Rechten in diesem Forum (nicht ich), wird dich hoffentlich bald in die WinAPI verschieben. Denn mit reinem C++ ist dies nicht lösbar.
    3. Du wirst kaum ein Treiber schreiben müssen. Grundsätzlich sollte ein Programm reichen, welches im Hintergrund läuft, und auf USB Änderungen hört. Wenn die richtige DeviceID reinkommt, wird halt das andere Programm gestartet. Solche Events gibt es (z.B. WM_DEVICECHANGE oder RegisterDeviceNotification ), aber dazu kann dir sicher ein WinAPI Experte mehr sagen.

    Grüssli



  • danke schonmal für die antworten.

    theta schrieb:

    hustbaer schrieb:

    Der Schwierigkeitsgrad ist 3.8.

    Würd da schon eher 3.85 schätzen. 🕶

    beruhend auf einer skala von 1-10 vermute ich.

    Dravere schrieb:

    @hustbaer & theta,
    Ihr seid fies ... 😃

    @Datsik,
    1. Wie sollen wir den Schwierigkeitsgrad schätzen? Wir wissen ja nicht einmal, was für Wissen du besitzt und auch dann, ist sowas sehr schwer bis gar nicht möglich.

    ________________________________________________

    mein c++ wissen beschränkt sich auf hallo welt ...
    irgendwie muss ich es trotzdem lösen.
    is aber nicht das erste mal das ich solche spielerein aufgetragen bekomme.

    ________________________________________________

    2. Ein freundlicher Mod mit den entsprechenden Rechten in diesem Forum (nicht ich), wird dich hoffentlich bald in die WinAPI verschieben. Denn mit reinem C++ ist dies nicht lösbar.

    ________________________________________________

    wusst ich nich das ich hier in dem c++ thread falsch bin SRY an dieser stelle 😃

    ________________________________________________

    3. Du wirst kaum ein Treiber schreiben müssen. Grundsätzlich sollte ein Programm reichen, welches im Hintergrund läuft, und auf USB Änderungen hört. Wenn die richtige DeviceID reinkommt, wird halt das andere Programm gestartet. Solche Events gibt es (z.B. WM_DEVICECHANGE oder RegisterDeviceNotification ), aber dazu kann dir sicher ein WinAPI Experte mehr sagen.

    Grüssli

    trotzdem danke für deine mühen 😉
    vllt kann mir da jmd genaueres sagen.

    grüße



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ (auch C++0x) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Morgen,

    gibts hier nen Win API spezialisten der davon etwas mehr ahung hat?

    Ich hätte noch erwähnen sollen das das Pad eine API Schnittstelle hat...
    Habe dazu noch neue Infos bekommen von der Obrigkeit.
    Wir haben ein Programm indem man gegen ende der Beratung Verträge ausfüllen soll/muss, dort kommt das Pad zum einsatz. Wenn man auf den Button ´"Unterschreiben" drückt, soll das Programm die USB Ports checken. Wenn das Pad angeschlossen ist gehts weiter wenn nicht dann halt ne Fehlermeldung.


  • Mod

    Dann sprich doch einfach die API des Pads and und das wird Dir sagen ob das Pad verfügbar ist oder nicht...

    Das ist doch der Sinn einer API oder?

    void CMyApp::OnClickUnterschreiben()
    {
       if (!OeffnePadMitSpeziellerApiFunktion())
            FehlerMeldung("Das Pad ist nciht angeschlossen!");
       else
            HoleUnterschriftVonPad();
    }
    


  • Denke auch das die API diesen Zweck erfüllen soll aber ich hab von c++ keine Ahnung und mein chef will das ich das löse und ich das in c++ mache. Wie schon oben erwähnt begrenzen sich meine kenntnisse auf hallo welt.



  • Denke auch das die API diesen Zweck erfüllen soll aber ich hab von c++ keine Ahnung und mein chef will das ich das löse und ich das in c++ mache. Wie schon oben erwähnt begrenzen sich meine kenntnisse auf hallo welt.

    Tönt fast so, als würdest Du glauben, Du darfst die API nicht benutzen, weil Du es ja in C++ machen musst...



  • er will das ich ein c++ programm schreibe das auf knopfdruck über einen lokalen server aus von php gestartet wird. dieses programm soll dann auf die api zugreifen, prüfen ob das pad angeschlossen ist. wenn ja nehme unterschrift auf und schließe das programm wieder. wenn nein dann werfe fehler aus.


  • Mod

    Ja dann mach doch... mit USB hast Du dann nix am Hut...

    Schau Dir die API-Doku des Herstellers an und dessen Beispiele 😉


  • Administrator

    @Datsik,
    Täusche ich mich oder verändert sich deine Anforderungen immer wie mehr?

    Zuerst hiess es, dass du ein Programm brauchst, welches ein anderes startet, wenn ein Gerät per USB angeschlossen wird.
    Dann heisst es plötzlich, dass dein Programm manuell gestartet wird und nur überprüfen soll, ob das Gerät per USB angeschlossen ist.
    Jetzt wird das Programm per PHP gestartet, muss prüfen ob das Pad angeschlossen ist, muss entweder die Unterschrift selber aufnehmen oder einen Fehler werfen.

    Ja, was muss denn nun dein Programm können? Mir scheint, als wäre dir das gar nicht klar. Und solange du dies nicht weisst, kannst du auch nichts programmieren.

    Zudem sollte dir klar werden, dass wir dir nicht helfen können, denn:
    1. Wir kennen die API des Pad nicht.
    2. Wir kennen die Anforderungen ebenfalls nicht.

    Stell eine konkrete Frage, dann können wir dir helfen. Aber aktuell sind uns die Hände gebunden. Wo ist dein Problem? Und sag jetzt nicht, dass du kein C++ kannst, denn da können wir dir auch nicht helfen. Dazu gibt es Bücher, mit welchen du lernen kannst:
    http://www.c-plusplus.net/forum/251551

    Grüssli



  • Vermutlich will er das Programm per PHP auf dem Client starten!



  • Morgen,

    ich versuchs nochmal zu erklären, ja das programm ändert sich ständig weil mein chef immer wieder mit neuen fürzen auftaucht.

    Das C++ Programm läuft auf einem lokalen PHP Server wodrauf auch das eigentliche Programm installiert ist. Wie schon vorher beschrieben soll das C++ Programm von dem anderen Programm gestartet werden sobald man im bereich Unterschrift setzen angekommen ist. Dort befindet sich in Zukunft ein Button 'Hier klicken für Unterschrift'. Sobald dies geschiehen ist kommt das C++ Programm zum einsatz und sucht alle USB Ports nach dem Pad ab. Wenn dies erfolgreich war startet das C++ Programm die Pad Software. Nachdem die Unterschrift getätigt ist und die Unterschrift gespeichert wurde, wird die Pad Software beendet. Wenn kein Pad gefundet worden ist, soll eine meldung kommen 'kein Pad vorhanden'.

    Das ist ein Signotec Sigma Pad, um die Doku einzusehn müsste man sich das kostenlose Software Paket der Firma runterladen.
    Dabei sind zwar ein paar Programm vorschläge, diese bringen mich aber nicht weiter.

    Dravere schrieb:

    Und sag jetzt nicht, dass du kein C++ kannst, denn da können wir dir auch nicht helfen. Dazu gibt es Bücher, mit welchen du lernen kannst:
    http://www.c-plusplus.net/forum/251551

    Grüssli

    Ich muss leider sagen das ich kein C++ kann, ich habe zum 1.8 eine Umschulung zum Programmierer begonnen ja aber eher in richtung PHP, klar es ähnelt sich aber ich stehe total am Anfang. Hilfe seitens Firma gibt es keine, dazu habe ich einen Termin druck. Ich habe keine Ahnung wie ich das bewerkstelligen soll.
    Es wird wohl darin enden das die Firma sich das Programm des Herstellers kaufen muss.
    Eine Grund idee zur Lösung habe ich zwar schon aber es is auch nur eine grund idee

    void DeviceGetCount()
    
    long nPort = STDeviceGetComPort(0);
    WCHAR szText[64]; 
      if 
    (nPort < 0) swprintf_s(szText, 64, L"Error %d", nPort); 
    	else 
    
    if (nPort == 0)
    {
      swprintf_s(szText, 64, L"This is an HID device.”); 
      start(padprogramm.exe);
    }
    else
      swprintf_s(szText, 64, L"This device is connected to COM port %d", nPort); 
    
    AfxMessageBox(szText);
    

    Grüße


  • Administrator

    Datsik schrieb:

    Nachdem die Unterschrift getätigt ist und die Unterschrift gespeichert wurde, wird die Pad Software beendet.

    Den Satz musst du mir mal näher erläutern.

    Aber grundsätzlich (Unter der Annahme, dass Visual Studio verwendet wird):

    #include <sstream>
    
    #include <windows.h>
    
    #include "STPadLib.h"
    
    #pragma comment(lib, "STPadLib.lib")
    
    int main()
    {
      int error = 0;
      long deviceCount = STDeviceGetCount();
    
      if(deviceCount < 0)
      {
        std::wostringstream woss;
        woss << "Error: " << deviceCount;
    
        std::wstring message = woss.str();
        MessageBoxW(NULL, message.c_str(), L"Error", MB_OK | MB_ICONERROR);
    
        error = 1;
      }
      else if(deviceCount == 0)
      {
        MessageBoxW(NULL, L"No device connected!", MB_OK | MB_ICONERROR);
    
        error = 2;
      }
      else
      {
        ShellExecuteW(NULL, L"open", L"Pfad zur Pad Software (Exe)", NULL, NULL, SW_SHOW);
      }
    
      STControlExit();
    
      return error;
    }
    

    Bei ShellExecuteW musst du noch den Pfad zur Software des Pads einfügen.

    Der Code ist völlig ungetestet und ohne Garantie oder Gewähr.

    PHP und C++ sind übrigens zwei grundlegend verschiedene Sprachen. Und du solltest mal deinen Chef anhauen und um Unterstützung bitten. Man kann nicht einfach von heute auf morgen C++. C++ zu lernen dauert Monate, wenn man die Zeit dazu hat. Sonst wahrscheinlich Jahre ...

    Grüssli



  • Ich würde einfach mal sagen der Chef ist naiv. Wenn du nicht mal C/C++ kannst (ohne Dir nahe zu gehen), wie willst Du dann sowas professionell implementieren!?
    Denn genau so entsteht Schrott Software.

    Kannst du von deinem Chef sicher Hilfe erwarten, sofern er Dich unter Zeitdruck setzt. Denn ohne C/C++ Kenntnisse wirst Du hier nicht weit kommen. Da Muss er Dir schon viel Zeit geben oder einfach nichts zu erwarten haben. Wenn nicht, dann scheint es auch nicht Wichtig oder dringend zu sein, denn sonnst ist dein Chef wirklich naiv.

    Datsik schrieb:

    Ich versuchs nochmal zu erklären, ja das programm ändert sich ständig weil mein chef immer wieder mit neuen fürzen auftaucht.

    Dass ist mir bekannt. Kaum hat Er irgendwo was neues gesichtet, muss es auch in die Hauseigene Software hinein gequetscht werden, ohne Rücksicht und dies so schnell wie möglich...um dann auch glänzen zu können. Und dies wirkt sich meisten negativ auf die Sicherheit der SW aus!

    Versuche doch deiner Firma zu erklären, dass du die Weisheit der C/C++ Programmierung nicht aus dem Schöpflöffel fressen kannst, und Sie höflich bitten dir Zeit zu geben für die erlernung der Programmiersprache.
    Wenn nicht...Chef naiv!

    Datsik schrieb:

    Das ist ein Signotec Sigma Pad, um die Doku einzusehn müsste man sich das kostenlose Software Paket der Firma runterladen.
    Dabei sind zwar ein paar Programm vorschläge, diese bringen mich aber nicht weiter.

    Wenn Du die Samples nicht verstehst, dann mangelt es wohl an fehlenden Kenntnissen der Programmiersprache.



  • Morgen,

    Ich danke für den Code und die dafür verbrauchte Zeit, ich werde das mal testen und bescheid geben.

    Ja mein Chef ist sehr naiv, er denkt jeder der hier anfängt kann schon alles.
    Am anfang durfte ich etwas PHP machen dann musste ich direkt etwas in VB schreiben. Direkt darauf musste ich etwas in JavaScript programmieren, darauf dann wieder PHP. Dann kam Wordpress mit CSS anpassen, etwas HTML dazwischen und jetz C++.

    Abwechslung ist zwar nicht verkehrt aber das alles war in einem Zeitraum von knapp 4 Wochen. Da ich wie gesagt grade erst damit angefangen habe ist das alles etwas zuviel.

    Auch wenn ich ihm sage ich kanns nicht, ignoriert er es und sagt du schaffst das schon. Hast ja noch ne woche zeit ...

    Am schlimmsten finde ich immer die änderungen. Kaum ist man fertig kommt ne änderung rein. Man ist wieder fertig, will der Chef das es so ist, wie es am anfang war.

    Grüße



  • Also hab den Code mal getestet, kann den nichtmal compilieren. Bekomme nur fehlermeldungen. Mein Chef hat wieder neue änderungen grade reingebracht. Dabei hab ich noch nichtmal ein Grundgerüst das funktioniert. Der Kunde wird auch schon ungeduldig weil ers braucht.

    Hab mal rundgefragt ob das niemand übernehmen möchte ... niemand will, war ja auch klar. Unser einzigster ausgelernter Programmierer mag nix ins C++ machen da er PHP fetischist ist.

    Bin mal gespannt obs mein chef übernehmen möchte, er kann ja laut eigener aussage 21 programmiersprachen ...



  • Ok Code habe ich noch etwas angepasst(mit hängen und würgen), funktioniert soweit. Jetzt is mir aufgefallen das ich für diverse funktionen dieses afx... brauche. hatte mir eben dern microsoft sdk runtergeladen und siehe da microsoft unterstützt nichma selbst den visual c++ 2010 express...

    hab etwas gegoogelt aber mehr als afxwin.h finde ich nicht im netz.
    mir fehlt jetz noch:
    - afxdtctl.h
    - afxext.h
    - afxdisp.h
    - afxcmn.h

    grüße


  • Administrator

    afx bedeutet MFC oder ATL. Die sind in der Express Version nicht dabei und bekommt man auch nicht gratis.

    Aber ehrlich gesagt, habe ich ein wenig Mühe dir weiterzuhelfen. Das Problem liegt eindeutig bei deinem Chef und dabei kann ich dir nicht helfen. Wahrscheinlich denken noch andere so, welche den Thread hier lesen. Dir nun dabei zu helfen, irgendein Abfallprodukt zusammenzuschustern, sehe ich nun auch nicht wirklich als Problemlösung an 😞

    Grüssli


Anmelden zum Antworten