per usb plug n play programm starten



  • Hallo,

    ich hätte eine frage zu der schwierigkeit einer aufgabe die ich gestellt bekommen habe. Darin gehts, wie schon im topic erwähnt um ein USB plug n play´gerät.

    Ich versuche mal die aufgabenstellung zu erklären.

    Wir haben ein Unterschriftenpad das per USB angeschlossen wird. Sobald dies angeschlossen wurde soll mein programm automatisch das eigentliche Unterschriftenprogramm starten.

    Was ich bis jetzt im Internet gelesen habe muss ich einen USB Treiber selbst dazu schreiben und eine USB schleife. Nur weiß ich nicht so recht wie ich das in C++ machen soll.

    Ich fordere keine aufgabenlösung oder des gleichen sondern nur wie hoch der schwierigkeitgrad ist/sein könnte. Ob man das ohne tiefgründige kenntnisse auch lösen kann.

    Schonmal danke im voraus.

    ja ich weiß rechtschreibung, grad etwas im stress und chef nervt 😃



  • OS?



  • das soll auf Windows 7 laufen



  • 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


Log in to reply