|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
[WD17] Utilisation d'une classe .NET du SDK Motorola |
Débuté par GUILLAUME H, 27 jan. 2012 19:15 - 6 réponses |
| |
| | | |
|
| |
Membre enregistré 21 messages Popularité : +1 (1 vote) |
|
Posté le 27 janvier 2012 - 19:15 |
| |
| |
| | | |
|
| | |
| |
Posté le 20 août 2012 - 19:09 |
Bonjour,
j'ai le même besoin. Avez-vous réussi finalement à utiliser la classe .NET ? Comment avez-vous réussi à importer la DLL en tant que assemblage .NET ?
Cordialement
GUILLAUME H a écrit dans le message de news <1cf36c967de55203cdb3b628a5d2a018@news.pcsoft> :
|
| |
| |
| | | |
|
| | |
| |
Posté le 23 août 2012 - 14:43 |
Bonjour,
Je n'ai pas réussi a utilisé l'assemblage .net dans windev il me dit aucune syntaxe de Open ne correspond.
En revanche en automation cela fonctionne voici le code :
remarques : - la douchette doit être en mode IBM hand-held USB ou bien USB OPOS hand-Held. Lorsqu'elle est paramétré en HID keyboard Emulation cela ne fonctionne pas. -Il faut installer le SDK cf lien précédent -Pour les postes client il existe une installation silencieuse x86 x64 cf lien SDK -j'ai testé sur un poste windows 7 64 bits virtualisé sur un MAC est cela fonctionne très bien contrairement à l'émulation de port COM.
Déclaration de la procédure de collection
gautScanner est un objet automation "CoreScanner.CoreScanner.1"
CONSTANTE
SUBSCRIBE_BARCODE = 1 SUBSCRIBE_IMAGE = 2 SUBSCRIBE_VIDEO = 4 SUBSCRIBE_RMD = 8 SUBSCRIBE_PNP = 16 SUBSCRIBE_OTHER = 32
GET_VERSION = 1000 REGISTER_FOR_EVENTS = 1001 UNREGISTER_FOR_EVENTS = 1002 CLAIM_DEVICE = 1500 RELEASE_DEVICE = 1501 ABORT_MACROPDF = 2000 ABORT_UPDATE_FIRMWARE = 2001 DEVICE_AIM_OFF = 2002 DEVICE_AIM_ON = 2003 FLUSH_MACROPDF = 2005 GET_ALL_PARAMETERS = 2006 GET_PARAMETERS = 2007 DEVICE_GET_SCANNER_CAPABILITIES = 2008 DEVICE_LED_OFF = 2009 DEVICE_LED_ON = 2010 DEVICE_PULL_TRIGGER = 2011 DEVICE_RELEASE_TRIGGER = 2012 DEVICE_SCAN_DISABLE = 2013 DEVICE_SCAN_ENABLE = 2014 SET_PARAMETER_DEFAULTS = 2015 DEVICE_SET_PARAMETERS = 2016 SET_PARAMETER_PERSISTANCE = 2017 DEVICE_BEEP_CONTROL = 2018 REBOOT_SCANNER = 2019 DEVICE_CAPTURE_IMAGE = 3000 ABORT_IMAGE_XFER = 3001 DEVICE_CAPTURE_VIDEO = 4000 RSM_ATTR_GETALL = 5000 RSM_ATTR_GET = 5001 RSM_ATTR_GETNEXT = 5002 RSM_ATTR_SET = 5004 RSM_ATTR_STORE = 5005 GET_DEVICE_TOPOLOGY = 5006 START_NEW_FIRMWARE = 5014 UPDATE_ATTRIB_META_FILE = 5015 UPDATE_FIRMWARE = 5016
KEYBOARD_EMULATOR_ENABLE = 6300 KEYBOARD_EMULATOR_SET_LOCALE = 6301 KEYBOARD_EMULATOR_GET_CONFIG = 6302
ST_NOT_APP = 0 ST_CODE_39 = 1 ST_CODABAR = 2 ST_CODE_128 = 3 ST_D2OF5 = 4 ST_IATA = 5 ST_I2OF5 = 6 ST_CODE93 = 7 ST_UPCA = 8 ST_UPCE0 = 9 ST_EAN8 = 10 ST_EAN13 = 11 ST_CODE11 = 12 ST_CODE49 = 13 ST_MSI = 14 ST_EAN128 = 15 ST_UPCE1 = 16 ST_PDF417 = 17 ST_CODE16K = 18 ST_C39FULL = 19 ST_UPCD = 20 ST_TRIOPTIC = 21 ST_BOOKLAND = 22 ST_COUPON = 23 ST_NW7 = 24 ST_ISBT128 = 25 ST_MICRO_PDF = 26 ST_DATAMATRIX = 27 ST_QR_CODE = 28 ST_MICRO_PDF_CCA = 29 ST_POSTNET_US = 30 ST_PLANET_CODE = 31 ST_CODE_32 = 32 ST_ISBT128_CON = 33 ST_JAPAN_POSTAL = 34 ST_AUS_POSTAL = 35 ST_DUTCH_POSTAL = 36 ST_MAXICODE = 37 ST_CANADIN_POSTAL = 38 ST_UK_POSTAL = 39 ST_MACRO_PDF = 40 ST_RSS14 = 48 ST_RSS_LIMITET = 49 ST_RSS_EXPANDED = 50 ST_SCANLET = 55 ST_UPCA_2 = 72 ST_UPCE0_2 = 73 ST_EAN8_2 = 74 ST_EAN13_2 = 75 ST_UPCE1_2 = 80 ST_CCA_EAN128 = 81 ST_CCA_EAN13 = 82 ST_CCA_EAN8 = 83 ST_CCA_RSS_EXPANDED = 84 ST_CCA_RSS_LIMITED = 85 ST_CCA_RSS14 = 86 ST_CCA_UPCA = 87 ST_CCA_UPCE = 88 ST_CCC_EAN128 = 89 ST_TLC39 = 90 ST_CCB_EAN128 = 97 ST_CCB_EAN13 = 98 ST_CCB_EAN8 = 99 ST_CCB_RSS_EXPANDED = 100 ST_CCB_RSS_LIMITED = 101 ST_CCB_RSS14 = 102 ST_CCB_UPCA = 103 ST_CCB_UPCE = 104 ST_SIGNATURE_CAPTURE = 105 ST_MATRIX2OF5 = 113 ST_CHINESE2OF5 = 114 ST_UPCA_5 = 136 ST_UPCE0_5 = 137 ST_EAN8_5 = 138 ST_EAN13_5 = 139 ST_UPCE1_5 = 144 ST_MACRO_MICRO_PDF = 154
SCANNER_TYPES_ALL = 1 SCANNER_TYPES_SNAPI = 2 SCANNER_TYPES_IBMHID = 6 SCANNER_TYPES_NIXMODB = 7 SCANNER_TYPES_HIDKB = 8
FIN
Connexion()
Procedure Connexion()
LOCAL Status est un entier système TableauTypesScanner est un tableau d'entier sur 2 octet NbTypeScanner est un entier sur 2 octet TotalScanners est un entier = 0 NombreDeScanner est un entier sur 2 octet TableauIdScanner est un tableau de 10 entier outXML est une chaîne InXML est une chaîne
TableauAjoute(TableauTypesScanner,SCANNER_TYPES_ALL) NbTypeScanner=TableauTypesScanner..Occurrence
gautScanner>>Open(0,TableauTypesScanner,NbTypeScanner,Status)
SI Status<>0 ALORS
Erreur("Echec de connexion au scanner Statut: : " + StatusCodes(Status))
FIN
Procedure BarcodeScanner_PnpEvent(nEventType , sPNPdata )
SELON nEventType
CASE 0
ToastAffiche("Le scanner est connecté")
CASE 1
ToastAffiche("Le scanner est déconnecté.")
AUTRE CAS
ToastAffiche("??")
FIN
Procedure OnBarcodeEvent(eventType ,pscanData )
sCodeBarre est une chaîne TypeCodeBarre est une chaîne souschaine est une chaîne sCodeBarreDecrypte est une chaîne
SI PAS XMLDocument("DocXML",pscanData) ALORS
Erreur(HErreurInfo())
FIN
XMLRecherche("DocXML", "datalabel",XMLElement+XMLSousElément,XMLIgnoreLaCasse) SI XMLTrouve("DocXML") = Vrai ALORS sCodeBarre = XMLDonnée("DocXML") FIN
sCodeBarre=Remplace(sCodeBarre,"0x","")
POUR TOUTE CHAINE souschaine DE sCodeBarre SEPAREE PAR " "
SI souschaine<>"" ALORS
sCodeBarreDecrypte+=Caract(Val(souschaine,"x"))
FIN
FIN
Trace(sCodeBarreDecrypte)
XMLRacine("DocXML") XMLRecherche("DocXML", "datatype",XMLElement+XMLSousElément,XMLIgnoreLaCasse) SI XMLTrouve("DocXML") = Vrai ALORS TypeCodeBarre = XMLDonnée("DocXML") FIN
Trace(getSymbology(Val(TypeCodeBarre)))
XMLTermine("DocXML")
Procedure getSymbology(Code est un entier)
CodeBarre est une chaîne
SELON Code
CASE ST_NOT_APP CodeBarre = "NOT APPLICABLE" CASE ST_CODE_39 CodeBarre = "CODE 39" CASE ST_CODABAR CodeBarre = "CODABAR" CASE ST_CODE_128 CodeBarre = "CODE 128" CASE ST_D2OF5 CodeBarre = "D 2 OF 5" CASE ST_IATA CodeBarre = "IATA" CASE ST_I2OF5 CodeBarre = "I 2 OF 5" CASE ST_CODE93 CodeBarre = "CODE 93" CASE ST_UPCA CodeBarre = "UPCA" CASE ST_UPCE0 CodeBarre = "UPCE 0" CASE ST_EAN8 CodeBarre = "EAN 8" CASE ST_EAN13 CodeBarre = "EAN 13" CASE ST_CODE11 CodeBarre = "CODE 11" CASE ST_CODE49 CodeBarre = "CODE 49" CASE ST_MSI CodeBarre = "MSI" CASE ST_EAN128 CodeBarre = "EAN 128" CASE ST_UPCE1 CodeBarre = "UPCE 1" CASE ST_PDF417 CodeBarre = "PDF 417" CASE ST_CODE16K CodeBarre = "CODE 16K" CASE ST_C39FULL CodeBarre = "C39FULL" CASE ST_UPCD CodeBarre = "UPCD" CASE ST_TRIOPTIC CodeBarre = "TRIOPTIC" CASE ST_BOOKLAND CodeBarre = "BOOKLAND" CASE ST_COUPON CodeBarre = "COUPON" CASE ST_NW7 CodeBarre = "NW7" CASE ST_ISBT128 CodeBarre = "ISBT128" CASE ST_MICRO_PDF CodeBarre = "MICRO PDF" CASE ST_DATAMATRIX CodeBarre = "DATAMATRIX" CASE ST_QR_CODE CodeBarre = "QR CODE" CASE ST_MICRO_PDF_CCA CodeBarre = "MICRO PDF CCA" CASE ST_POSTNET_US CodeBarre = "POSTNET US" CASE ST_PLANET_CODE CodeBarre = "PLANET CODE" CASE ST_CODE_32 CodeBarre = "CODE 32" CASE ST_ISBT128_CON CodeBarre = "ISBT 128 CON" CASE ST_JAPAN_POSTAL CodeBarre = "JAPAN POSTAL" CASE ST_AUS_POSTAL CodeBarre = "AUS POSTAL" CASE ST_DUTCH_POSTAL CodeBarre = "DUTCH POSTAL" CASE ST_MAXICODE CodeBarre = "MAXICODE" CASE ST_CANADIN_POSTAL CodeBarre = "CANADA POSTAL" CASE ST_UK_POSTAL CodeBarre = "UK POSTAL" CASE ST_MACRO_PDF CodeBarre = "MACRO PDF" CASE ST_RSS14 CodeBarre = "RSS 14" CASE ST_RSS_LIMITET CodeBarre = "RSS LIMITET" CASE ST_RSS_EXPANDED CodeBarre = "RSS EXPANDED" CASE ST_SCANLET CodeBarre = "ST SCANLET" CASE ST_UPCA_2 CodeBarre = "UPCA 2" CASE ST_UPCE0_2 CodeBarre = "UPCE0 2" CASE ST_EAN8_2 CodeBarre = "EAN8 2" CASE ST_EAN13_2 CodeBarre = "EAN13 2" CASE ST_UPCE1_2 CodeBarre = "UPCE1 2" CASE ST_CCA_EAN128 CodeBarre = "CCA EAN 128" CASE ST_CCA_EAN13 CodeBarre = "CCA EAN 13" CASE ST_CCA_EAN8 CodeBarre = "CCA EAN 8" CASE ST_CCA_RSS_EXPANDED CodeBarre = "CCA RSS EXPANDED" CASE ST_CCA_RSS_LIMITED CodeBarre = "CCA RSS LIMITED" CASE ST_CCA_RSS14 CodeBarre = "CCA RSS 14" CASE ST_CCA_UPCA CodeBarre = "CCA UPCA" CASE ST_CCA_UPCE CodeBarre = "CCA UPCE" CASE ST_CCC_EAN128 CodeBarre = "CCC EAN 128" CASE ST_TLC39 CodeBarre = "TLC39" CASE ST_CCB_EAN128 CodeBarre = "CCB EAN 128" CASE ST_CCB_EAN13 CodeBarre = "CCB EAN 13" CASE ST_CCB_EAN8 CodeBarre = "CCB EAN 8" CASE ST_CCB_RSS_EXPANDED CodeBarre = "CCB RSS EXPANDED" CASE ST_CCB_RSS_LIMITED CodeBarre = "CCB RSS LIMITED" CASE ST_CCB_RSS14 CodeBarre = "CCB RSS 14" CASE ST_CCB_UPCA CodeBarre = "CCB UPCA" CASE ST_CCB_UPCE CodeBarre = "CCB UPCE" CASE ST_SIGNATURE_CAPTURE CodeBarre = "SIGNATURE CAPTURE" CASE ST_MATRIX2OF5 CodeBarre = "MATRIX 2 OF 5" CASE ST_CHINESE2OF5 CodeBarre = "CHINESE 2 OF 5" CASE ST_UPCA_5 CodeBarre = "UPCA 5" CASE ST_UPCE0_5 CodeBarre = "UPCE0 5" CASE ST_EAN8_5 CodeBarre = "EAN8 5" CASE ST_EAN13_5 CodeBarre = "EAN13 5" CASE ST_UPCE1_5 CodeBarre = "UPCE1 5" CASE ST_MACRO_MICRO_PDF CodeBarre = "MACRO MICRO PDF"
AUTRE CAS CodeBarre = "UNKNOWN" FIN
RENVOYER CodeBarre
Procedure StatusCodes(Status est un entier)
sDetailErreur est une chaîne
SELON Status
CAS 0 sDetailErreur = "SUCCESS" CAS 10 sDetailErreur = "STATUS_LOCKED" CAS 100 sDetailErreur = "ERROR_INVALID_APPHANDLE" CAS 101 sDetailErreur = "ERROR_COMMLIB_UNAVAILABLE" CAS 102 sDetailErreur = "ERROR_NULL_BUFFER_POINTER" CAS 103 sDetailErreur = "ERROR_INVALID_BUFFER_POINTER" CAS 104 sDetailErreur = "ERROR_INCORRECT_BUFFER_SIZE" CAS 105 sDetailErreur = "ERROR_DUPLICATE_TYPES" CAS 106 sDetailErreur = "ERROR_INCORRECT_NUMBER_OF_TYPES" CAS 107 sDetailErreur = "ERROR_INVALID_ARG" CAS 108 sDetailErreur = "ERROR_INVALID_SCANNERID" CAS 109 sDetailErreur = "ERROR_INCORRECT_NUMBER_OF_EVENTS" CAS 110 sDetailErreur = "ERROR_DUPLICATE_EVENTID" CAS 111 sDetailErreur = "ERROR_INVALID_EVENTID" CAS 112 sDetailErreur = "ERROR_DEVICE_UNAVAILABLE" CAS 113 sDetailErreur = "ERROR_INVALID_OPCODE" CAS 114 sDetailErreur = "ERROR_INVALID_TYPE" CAS 115 sDetailErreur = "ERROR_ASYNC_NOT_SUPPORTED" CAS 116 sDetailErreur = "ERROR_OPCODE_NOT_SUPPORTED" CAS 117 sDetailErreur = "ERROR_OPERATION_FAILED" CAS 118 sDetailErreur = "ERROR_REQUEST_FAILED" CAS 200 sDetailErreur = "ERROR_ALREADY_OPENED" CAS 201 sDetailErreur = "ERROR_ALREADY_CLOSED" CAS 202 sDetailErreur = "ERROR_CLOSED" CAS 300 sDetailErreur = "ERROR_INVALID_INXML" CAS 301 sDetailErreur = "ERROR_XMLREADER_NOT_CREATED" CAS 302 sDetailErreur = "ERROR_XMLREADER_INPUT_NOT_SET" CAS 303 sDetailErreur = "ERROR_XMLREADER_PROPERTY_NOT_SET" CAS 304 sDetailErreur = "ERROR_XMLWRITER_NOT_CREATED" CAS 305 sDetailErreur = "ERROR_XMLWRITER_OUTPUT_NOT_SET" CAS 306 sDetailErreur = "ERROR_XMLWRITER_PROPERTY_NOT_SET" CAS 307 sDetailErreur = "ERROR_XML_ELEMENT_CANT_READ" CAS 308 sDetailErreur = "ERROR_XML_INVALID_ARG" CAS 309 sDetailErreur = "ERROR_XML_WRITE_FAIL" CAS 310 sDetailErreur = "ERROR_XML_INXML_EXCEED_LENGTH" CAS 311 sDetailErreur = "ERROR_XML_EXCEED_BUFFER_LENGTH" CAS 400 sDetailErreur = "ERROR_NULL_POINTER" CAS 401 sDetailErreur = "ERROR_DUPLICATE_CLIENT" CAS 500 sDetailErreur = "ERROR_FW_INVALID_DATFILE" CAS 501 sDetailErreur = "ERROR_FW_UPDATE_FAILED_IN_SCN" CAS 502 sDetailErreur = "ERROR_FW_READ_FAILED_DATFILE" CAS 503 sDetailErreur = "ERROR_FW_UPDATE_INPROGRESS" CAS 504 sDetailErreur = "ERROR_FW_UPDATE_ALREADY_ABORTED" CAS 505 sDetailErreur = "ERROR_FW_UPDATE_ABORTED" CAS 506 sDetailErreur = "ERROR_FW_SCN_DETTACHED" CAS 600 sDetailErreur = "STATUS_FW_SWCOMP_RESIDENT" AUTRE CAS sDetailErreur = "UNKNOWN" FIN
RENVOYER sDetailErreur
Il y a plus qu'à copier-coller Bon dev |
| |
| |
| | | |
|
| | |
| |
Posté le 23 août 2012 - 15:54 |
oupsss!
j'ai mal copie la procédure de connexion
Procedure Connexion()
LOCAL Status est un entier système TableauTypesScanner est un tableau d'entier sur 2 octet NbTypeScanner est un entier sur 2 octet TotalScanners est un entier = 0 NombreDeScanner est un entier sur 2 octet TableauIdScanner est un tableau de 10 entier outXML est une chaîne InXML est une chaîne
TableauAjoute(TableauTypesScanner,SCANNER_TYPES_ALL) NbTypeScanner=TableauTypesScanner..Occurrence
gautScanner>>Open(0,TableauTypesScanner,NbTypeScanner,Status)
SI Status<>0 ALORS
Erreur("Echec de connexion au scanner Statut: : " + StatusCodes(Status))
FIN
InXML= [ <inArgs> <cmdArgs> <arg-int>6</arg-int> <arg-int>1,2,4,8,16,32</arg-int> </cmdArgs> </inArgs> ]
AutomationEvénement(OnBarcodeEvent,gautScanner,"BarcodeEvent") AutomationEvénement(BarcodeScanner_PnpEvent,gautScanner,"PNPEvent")
gautScanner>>ExecCommand(REGISTER_FOR_EVENTS,InXML,outXML,Status)
SI Status<>0 ALORS
Erreur("Echec lors de l'enregistrement d'événements sur le scanner Statut : "+StatusCodes(Status))
FIN
gautScanner>>getScanners(NombreDeScanner, TableauIdScanner, outXML, Status)
SI Status<>0 ALORS
Erreur("Echec de connexion au scanner Statut :: " + StatusCodes(Status))
FIN |
| |
| |
| | | |
|
| | |
| |
Posté le 27 août 2012 - 19:40 |
Effectivement, en automation, cela fonctionne parfaitement.
Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages Popularité : +1 (1 vote) |
|
Posté le 13 octobre 2017 - 18:32 |
Merci pour ce code ... il est toujours opérationnel à ce jour. J'ai passé une dizaine d'heure à tenter de passer par l'assemblage .Net sans sucées.
D'une part, impossible de réaliser un delegate avec WinDev malgré un code correct... j'ai vu dans le répertoire NET/Compile du projet que VS n'arrive pas à compiler le code généré par WinDev et d'autre part le même soucis sur la méthode Open qui est IMPOSSIBLE à utiliser malgré les dizaines de syntaxe essayées.
J'aurais préféré ne pas passer par de l'automation mais à ce jour c'est le SEUL moyen de travailler avec un scanner Motorola ou Zebra (c'est mon cas).
Donc vraiment un grand MERCI, si je peux renvoyer l'appareil, ne pas hésiter à me solliciter, et pour PC SOFT, carton rouge sur ce coup car les promesses interopérabilités avec le .Net ne sont pas du tout respectée à mon sens.
J'espère que ce post sera lu par le support PC SOFT pour améliorer l'utilisation des assembly car je ne pense pas que les développeurs ne soit intéressés que par le branchement de delegate FileSystemWatcher .
My 2 cents. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 13 messages Popularité : +1 (1 vote) |
|
Posté le 13 octobre 2017 - 18:32 |
Merci pour ce code ... il est toujours opérationnel à ce jour. J'ai passé une dizaine d'heure à tenter de passer par l'assemblage .Net sans sucées.
D'une part, impossible de réaliser un delegate avec WinDev malgré un code correct... j'ai vu dans le répertoire NET/Compile du projet que VS n'arrive pas à compiler le code généré par WinDev et d'autre part le même soucis sur la méthode Open qui est IMPOSSIBLE à utiliser malgré les dizaines de syntaxe essayées.
J'aurais préféré ne pas passer par de l'automation mais à ce jour c'est le SEUL moyen de travailler avec un scanner Motorola ou Zebra (c'est mon cas).
Donc vraiment un grand MERCI, si je peux renvoyer l'appareil, ne pas hésiter à me solliciter, et pour PC SOFT, carton rouge sur ce coup car les promesses interopérabilités avec le .Net ne sont pas du tout respectée à mon sens.
J'espère que ce post sera lu par le support PC SOFT pour améliorer l'utilisation des assembly car je ne pense pas que les développeurs ne soit intéressés que par le branchement de delegate FileSystemWatcher .
My 2 cents. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|