per usb plug n play programm starten


  • 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



  • Datsik schrieb:

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

    Und? Aber beherrschen tut er nicht mal eine... Nach dem was Du uns da erzählt hast, erwarte ich auch nichts anderes. 🙄



  • das ist richtig, er kann vllt in jeder hallo welt schreiben wobei ich das noch stark anzweifel! 😃
    er hat mir den auftrag gegeben ein angebot bei signotec einzuholen, da ihm visual studio zu teuer ist.

    grüße



  • Dravere schrieb:

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

    So ist es.
    Allerdings benötigt man für die Lösung dieses (einfachen) Problems wohl
    definitiv keine MFCs.

    Die Bibliothek könnte etwas besser dokumentiert sein, aber zusammen mit den
    mitgelieferten Demos sollte es kein Problem sein eine Win32-Konsolenanwendung
    (oder auch eine Win32-Applikation) als Projekt anzulegen, die STPadLib Dateien
    (.lib, .h, .cpp) dazu kopieren und die benötigten Funktionen hinzuzufügen.

    Folgendes kompiliert z.B. völlig fehlerfrei:

    #include "targetver.h"
    
    #include <windows.h> 
    #include <tchar.h>
    #include <iostream>
    
    #include "STPadLib.h" 
    
    #pragma comment(lib, "STPadLib.lib") 
    
    using namespace std;
    
    int main() 
    { 
    
    // Angeschlossene Geräte suchen
    long nDeviceCount = STDeviceGetCount();  // ab Version 8.0.19
    
    if(nDeviceCount <= 0) {
       wcout << L"Kein Gerät gefunden" << endl;
       exit(1);
       }
    
    // Nachsehen an welchem port das Gerät hängt
    long nPort = STDeviceGetComPort(0); 
    if (nPort < 0) { 
    	wcout << L"Error " << nPort << endl; 
    	exit(1);
    	}
    if (nPort == 0) 
    	wcout << L"HID Gerät gefunden" << endl;
    
    wcout << L"Gerät an COM port" << nPort << endl;
    
    // Gerät oeffnen
    long nResult = STDeviceOpen(0); 
    
    if (nResult < 0) {
    	wcout << L"Error " << nPort << endl; 
    	exit(1);
    	}
    
    // get display size of selected device
    long nWidth = STDisplayGetWidth();
    if (nWidth < 0) {   // error
    	wcout << L"Error " << nPort << endl; 
    	exit(1);
    	}
    
    long nHeight = STDisplayGetHeight();
    if (nHeight < 0) {
    	wcout << L"Error " << nPort << endl; 
    	exit(1);
    	}
    
    // print display size
    cout << L"Display: " << nWidth << L" x " << nHeight << L"Pixel" << endl;
    
    // erfasste Unterschrift als Bilddatei speichern  
    nResult = STSignatureSaveAsFileEx(L"C:/Signature.tif", 300, 0, 0, kTiff, 0, RGB(0, 0, 255), 0); 
    if (nResult < 0) {
    	wcout << L"Error " << nPort << endl; 
    	exit(1);
    	}
    
    // STPadLib Zugriff beenden 
    STControlExit();
    
    return 0;
    }
    


  • @merano Hi,
    ich weiß der Thread ist schon ziemlich alt. Bin darauf gestoßen, weil ich gerade auch mit dem Unterschriften Pad von Signotec zu tun habe. Ich habe ähnliche probleme wie @Datsik die Docu richtig zu verstehen. Mit deinem Beispielcode ist es dann doch ein wenig einfacher. Vielen Dank.
    Allerdings konnte ich diesen nicht gleich kompilieren folgendes musste ich noch einfügen.

    #include"stdafx.h"
    

Anmelden zum Antworten