|
Débuté par Julien PATIPE, 04 mar. 2020 18:10 - 22 réponses |
| |
| | | |
|
| |
Posté le 04 mars 2020 - 18:10 |
Bonjour à tous,
Je suis novice dans l'utilisation des ports série. Je dois communiquer mon logiciel de facturation à une machine de controle de facturation. Le format de la commande est : Position 1 : SOH, Longueur : 1 octet, valeur 01h Position 2 : LEN, Longueur : 1 octet, valeur 20h-FFh Position 3 : SEQ, Longueur : 1 octet, valeur 20h-FFh Position 4 : CMD, Longueur : 1 octet, valeur 20h-FFh Position 5 : DATA, Longueur : 0-200 octetS, valeur 20h-FFh Position 6 : AMB, Longueur : 1 octet, valeur 05h Position 7 : BBC, Longueur : 4 octetS, valeur 30h-3Fh Position 8 : ETX, Longueur : 1 octet, valeur 03h Je sais qu'il faut utiliser les fonctions souvre, sferme, sécrit, slit, sévenement. Mon problème est que mes fonctions ne renvoient pas les réponses escomptées. Ci dessous, ma fonction Write
[code:wl] PROCEDURE Write(bufCMD est un Buffer, bufDATA est un Buffer =Null ) ///// bufLEN est un Buffer IF bufDATA = Null THEN bufLEN=Caract(04)+Caract(20) bufBys est un Buffer sur 9 bufBys[[1]]=bufSOH bufBys[[2]]=bufLEN bufBys[[3]]=bufSEQ bufBys[[4]]=bufCMD bufBys[[5]]=bufAMB ///////////////////////////////declaration de la valeur faisans office de l'entier //nVal_Entier est un entier= bufLEN+bufSEQ+bufAMB //nVal_Entier=nVal_Entier+bufCMD bufValHex est un Buffer = bufLEN+bufSEQ+bufAMB+bufCMD //;trace(bufValHex) bufValString est une Buffer =bufValHex /////////////////////////////////////// IF Taille(bufValString)=1 THEN bufValString="000"+bufValHex END ////////////////////////////////// IF Taille(bufValString)=2 THEN bufValString="00"+bufValHex END ////////////////////////////////// IF Taille(bufValString)=3 THEN bufValString="0"+bufValHex END bufBys[[6]]=Caract(03)+bufValString[[1]] bufBys[[7]]=Caract(03)+bufValString[[2]] bufBys[[8]]=Caract(03)+bufValString[[3]] bufBys[[9]]=Caract(03)+bufValString[[4]] bufBys[[10]]=bufETX RENVOYER bufBys ELSE bufLEN=Caract(04)+Caract(20)+Taille(bufDATA) // nTailleBys est un entier = 9+Taille(bufDATA) bufBys est un Buffer //////il manquue la taille du buffer bufBys[[1]]=bufSOH bufBys[[2]]=bufLEN bufBys[[3]]=bufSEQ bufBys[[4]]=bufCMD II est un entier =4 nbCal est un entier =0 bb est un Buffer POUR TOUT CHAÎNE bb DE bufDATA bufBys[[II]]=bb nbCal+=bb II+=1 FIN bufBys[[II]]=bufAMB II+=1 // nVal_Entier est un entier= bufLEN+bufSEQ+bufAMB // nVal_Entier=nVal_Entier+bufCMD bufValHex est un Buffer=bufLEN+bufSEQ+bufAMB+bufCMD bufValString est une Buffer=bufValHex /////////////////////////////////////// IF Taille(bufValString)=1 THEN bufValString="000"+bufValHex END ////////////////////////////////// IF Taille(bufValString)=2 THEN bufValString="00"+bufValHex END ////////////////////////////////// IF Taille(bufValString)=3 THEN bufValString="0"+bufValHex END bufBys[[II]]=Caract(03)+bufValString[[1]] II+=1 bufBys[[II]]=Caract(03)+bufValString[[2]] II+=1 bufBys[[II]]=Caract(03)+bufValString[[3]] II+=1 bufBys[[II]]=Caract(03)+bufValString[[4]] II+=1 bufBys[[II]]=bufETX RENVOYER bufBys END |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 04 mars 2020 - 23:09 |
Bonsoir, Ni voyez aucune attaque mais votre code est très "fouilli" pas facile de comprendre ce que vous voulez faire... Il y a beaucoup d'erreur et c'est normal que cela ne fonctionne pas. //--------------------------------------------- la place de bufBys[[1]]=bufSOH bufBys[[2]]=bufLEN bufBys[[3]]=bufSEQ bufBys[[4]]=bufCMD bufBys = Caract(0x01) + bufLEN + bufSEQ + bufCMD //------------------------------------------ bb est un Buffer POUR TOUT CHAÎNE bb DE bufDATA bb est un buffer ou une chaine ??? //------------------------------------------ Pourquoi utilisez-vous beaucoup les buffer ? //----------------------------------------- ELSE bufLEN=Caract(04)+Caract(20)+Taille(bufDATA) bufBys est un Buffer Pourquoi Caract(04)+Caract(20)+Taille(bufDATA) car LEN est sur 1 octet ( 3 octets dans votre code) Taille renvoie un entier il sera casté automatiquement ce qui peut apporté des erreurs que la fonction NumériquVersChaine vous évitera //---------------------------------------- II est un entier = 4 nbCal est un entier = 0 bb est un Buffer POUR TOUT CHAÎNE bb DE bufDATA bufBys[[II]]=bb nbCal+=bb II+=1 FIN bufBys[[II]]=bufAMB II+=1 ou plus simplement bufBys += bufDATA + bufAMB nbCal ne sert à rien //------------------------------------------- bufValHex est un Buffer=bufLEN+bufSEQ+bufAMB+bufCMD bufValString est une Buffer=bufValHex /////////////////////////////////////// IF Taille(bufValString)=1 THEN bufValString="000"+bufValHex END ////////////////////////////////// IF Taille(bufValString)=2 THEN bufValString="00"+bufValHex END ////////////////////////////////// IF Taille(bufValString)=3 THEN bufValString="0"+bufValHex END bufLEN+bufSEQ+bufAMB+bufCMD : Vous ne respectez pas l'ordre des champs ! Position 1 : SOH, Longueur : 1 octet, valeur 01h Position 2 : LEN, Longueur : 1 octet, valeur 20h-FFh Position 3 : SEQ, Longueur : 1 octet, valeur 20h-FFh Position 4 : CMD, Longueur : 1 octet, valeur 20h-FFh Position 5 : DATA, Longueur : 0-200 octetS, valeur 20h-FFh Position 6 : AMB, Longueur : 1 octet, valeur 05h Position 7 : BBC, Longueur : 4 octetS, valeur 30h-3Fh Position 8 : ETX, Longueur : 1 octet, valeur 03h en plus la taille de bufLEN+bufSEQ+bufAMB+bufCMD est toujours égale à 4 ! NumériqueVersChaine(Taille(bufValString), "04d")) fait le travail de formatage... //----------------------------------------------------- Si vous désirez plus d'aide partagez la documentation du protocole de communication de votre matériel ou l'adresse du site pour la télécharger.
-- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. Quand un utilisateur vous a aidé, n'oubliez pas de le remercier... |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
Posté le 09 mai 2020 - 17:57 |
Bonjour, j'aimerais comprendre le format de la commande. la documentation en question est ci-dessous,
La chaîne a envoyer au port, Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 09 mai 2020 - 23:37 |
Bonsoir code qui devrais vous aider à répondre à votre problème
cSTX est un entier sans signe sur 1 octet = 0x01 cLEN est un entier sans signe sur 1 octet = 0x24 cSEQ est un entier sans signe sur 1 octet = 0x01 cCMD est un entier sans signe sur 1 octet = 0x00 sData est une chaîne = "" cAMB est un entier sans signe sur 1 octet = 0x05 iBCC est un entier sans signe sur 2 octets = 0x00 cETX est un entier sans signe sur 1 octet = 0x03 cBCC1, cBCC2, cBCC3, cBCC4 est un entier sans signe sur 1 octet
cLEN += Taille(sData) SousTrame est une chaîne = Caract(cLEN) + Caract(cSEQ) + Caract(cCMD) + sData + Caract(cAMB)
i est un entier FOR i=1 _TO_ Taille(SousTrame) iBCC += Asc(SousTrame[[i]]) END
cBCC1 = bitDécaleDroite(iBCC & 0xf000, 12) + 0x30 cBCC2 = bitDécaleDroite(iBCC & 0x0f00, 08) + 0x30 cBCC3 = bitDécaleDroite(iBCC & 0x00f0, 08) + 0x30 cBCC4 = iBCC & 0x000f + 0x30
sTrame est une chaîne = Caract(cSTX) + SousTrame + Caract(cBCC1) + Caract(cBCC2) + Caract(cBCC3) + Caract(cBCC4) + Caract(cETX)
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 09 mai 2020 - 23:38 |
Erreur remplacer : cBCC3 = bitDécaleDroite(iBCC & 0x00f0, 08) + 0x30 par : cBCC3 = bitDécaleDroite(iBCC & 0x00f0, 04) + 0x30 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 286 messages Popularité : +24 (28 votes) |
|
Posté le 10 mai 2020 - 11:21 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
Posté le 11 mai 2020 - 14:32 |
Merci pour cette réponse, en faisant les test, pas de réponse de mon terminal bien que connecte. j'aimerais tester la commande (C1h) comme a l'image
les commandes valides sont comme ; C1h,C2h,2Bh,C0h,31h,33h,35h,38h, Qu'est ce qui cloche? le code
sFerme(SAI_NumPort)
bPcom est un booléen = sOuvre(SAI_NumPort,SAI_BufferEntree, SAI_BufferSortie, SAI_DureeAttente, Vrai) SI ErreurDétectée ALORS Son(sonSystèmeArrêtCritique) ToastAffiche("Impossible d'ouvrir le port COM" + SAI_NumPort, toastLong, cvMilieu, chCentre, RougePastel) SINON ToastAffiche("Prêt pour recevoir les données du port Port COM" + SAI_NumPort) sEvénement(SAI_NumPort,sEveCaractèreReçu, LectureCom) sFixeParamètre(SAI_NumPort, SAI_Taux, SAI_Parite, SAI_NumBitDonnees, SAI_NumBitStop) sTrame est une chaîne = CmdTrame() Trace(sTrame) sEcrit(SAI_NumPort, sTrame) FIN
La procédure CmdTrame() votre code
Procedure CmdTrame(cCMD est un entier sans signe sur 1 octet = 0xC1 , sData est une chaîne = "" )
cSTX est un entier sans signe sur 1 octet = 0x01 cLEN est un entier sans signe sur 1 octet = 0x24 cSEQ est un entier sans signe sur 1 octet = 0x01
cAMB est un entier sans signe sur 1 octet = 0x05 iBCC est un entier sans signe sur 2 octets = 0x00 cETX est un entier sans signe sur 1 octet = 0x03 cBCC1, cBCC2, cBCC3, cBCC4 est un entier sans signe sur 1 octet
cLEN += Taille(sData) SousTrame est une chaîne = Caract(cLEN) + Caract(cSEQ) + Caract(cCMD )+ sData + Caract(cAMB)
i est un entier FOR i=1 _TO_ Taille(SousTrame) iBCC += Asc(SousTrame[[i]]) END
cBCC1 = bitDécaleDroite(iBCC & 0xf000, 12) + 0x30 cBCC2 = bitDécaleDroite(iBCC & 0x0f00, 08) + 0x30 cBCC3 = bitDécaleDroite(iBCC & 0x00f0, 04) + 0x30 cBCC4 = iBCC & 0x000f + 0x30
sTrame est une chaîne = Caract(cSTX) + SousTrame + Caract(cBCC1) + Caract(cBCC2) + Caract(cBCC3) + Caract(cBCC4) + Caract(cETX)
RENVOYER sTrame
la procédure LectureCom
NumPort est un entier=SAI_NumPort
i est un entier BufferRx += sLit(NumPort,sDansFileEntrée(NumPort))
i = Position(BufferRx, Caract(0x03)) IF i > 0 THEN Trace(BufferRx[[1 A i-1]]) BufferRx = BufferRx[[i+1 A]] END
Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 11 mai 2020 - 16:55 |
Bonjour Effectivement il y avait des erreurs... Testez avec cette procédure :
Procedure MakeTrame(cSEQ est un entier sans signe sur 1 octet, cCMD est un entier sans signe sur 1 octet, sData est une chaîne):chaîne
cSTX est un entier sans signe sur 1 octet = 0x02 cLEN est un entier sans signe sur 1 octet = 0x24 cAMB est un entier sans signe sur 1 octet = 0x05 iBCC est un entier sans signe sur 2 octets = 0x00 cETX est un entier sans signe sur 1 octet = 0x03 cBCC1, cBCC2, cBCC3, cBCC4 est un entier sans signe sur 1 octet SousTrame, sTrame est une chaîne
cLEN += Taille(sData) SousTrame = Caract(cLEN) + Caract(cSEQ) + Caract(cCMD) + sData + Caract(cAMB)
i est un entier FOR i=1 _TO_ Taille(SousTrame) iBCC += Asc(SousTrame[[i]]) END
cBCC1 = bitDécaleDroite(iBCC & 0xf000, 12) + 0x30 cBCC2 = bitDécaleDroite(iBCC & 0x0f00, 08) + 0x30 cBCC3 = bitDécaleDroite(iBCC & 0x00f0, 04) + 0x30 cBCC4 = (iBCC & 0x000f) + 0x30
sTrame = Caract(cSTX) + SousTrame + Caract(cBCC1) + Caract(cBCC2) + Caract(cBCC3) + Caract(cBCC4) + Caract(cETX)
RENVOYER sTrame n'oubliez pas d'incrémenter cSEQ après chaque envoie
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 11 mai 2020 - 16:58 |
j'ai laissé passer cette erreur : cSTX est un entier sans signe sur 1 octet = 0x02 doit être remplacé par cSOH est un entier sans signe sur 1 octet = 0x01
et sTrame = Caract(cSTX) + SousTrame + Caract(cBCC1) + Caract(cBCC2) + Caract(cBCC3) + Caract(cBCC4) + Caract(cETX) remplacée par sTrame = Caract(cEOT) + SousTrame + Caract(cBCC1) + Caract(cBCC2) + Caract(cBCC3) + Caract(cBCC4) + Caract(cETX)
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 11 mai 2020 - 17:01 |
avec la correction :
Procedure MakeTrame(cSEQ est un entier sans signe sur 1 octet, cCMD est un entier sans signe sur 1 octet, sData est une chaîne):chaîne cSOH est un entier sans signe sur 1 octet = 0x01 cLEN est un entier sans signe sur 1 octet = 0x24 cAMB est un entier sans signe sur 1 octet = 0x05 iBCC est un entier sans signe sur 2 octets = 0x00 cETX est un entier sans signe sur 1 octet = 0x03 cBCC1, cBCC2, cBCC3, cBCC4 est un entier sans signe sur 1 octet SousTrame, sTrame est une chaîne
cLEN += Taille(sData) SousTrame = Caract(cLEN) + Caract(cSEQ) + Caract(cCMD) + sData + Caract(cAMB)
i est un entier FOR i=1 _TO_ Taille(SousTrame) iBCC += Asc(SousTrame[[i]]) END
cBCC1 = bitDécaleDroite(iBCC & 0xf000, 12) + 0x30 cBCC2 = bitDécaleDroite(iBCC & 0x0f00, 08) + 0x30 cBCC3 = bitDécaleDroite(iBCC & 0x00f0, 04) + 0x30 cBCC4 = (iBCC & 0x000f) + 0x30
sTrame = Caract(cSOH) + SousTrame + Caract(cBCC1) + Caract(cBCC2) + Caract(cBCC3) + Caract(cBCC4) + Caract(cETX)
RENVOYER sTrame
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
Posté le 11 mai 2020 - 18:41 |
Merci pour vos réponses . Ce qui est bizarre ça ne fonctionne pas, un seul code comme ci dessous fait réagir le terminal mais pas de réponses sEcrit(SAI_NumPort, "C1h")
mais la procédure MakeTrame le terminal ne réagit pas du tout avec les paramètres cSEQ=1 , cCMD =C1h, sData=""
sTrame est une chaîne = MakeTrame(1,C1h,"")
sEcrit(SAI_NumPort, sTrame)
Ais-je omis un un bout de code? Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 11 mai 2020 - 18:59 |
- Etes vous sur e votre paramétrage dans la ligne : sFixeParamètre(SAI_NumPort, SAI_Taux, SAI_Parite, SAI_NumBitDonnees, SAI_NumBitStop) ? - Avez-vous changé la valeur de cSEQ en essayant de mettre 0x02 car d'après ce que j'ai compris vous ne pouvez pas envoyer deux fois de suite la même trame. - Pouvez vous m'envoyer la documentation par email : philippe.pasquali.76(at)hotmail.fr - L'appareil est-il fourni avec un programme de démo ?
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 946 messages Popularité : +102 (110 votes) |
|
Posté le 11 mai 2020 - 19:14 |
cSEQ doit être : 20H à FFh, alors testez avec 0x21h
-- « L'erreur ne devient pas vérité parce qu'elle se propage et se multiplie ; la vérité ne devient pas erreur parce que nul ne la voit. » Gandhi |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 messages |
|
Posté le 11 mai 2020 - 20:04 |
non plus cSEQ oui L'appareil -il fourni avec un programme de démo |
| |
| |
| | | |
|
| | |
| |
Posté le 12 novembre 2020 - 12:29 |
Bonjour je peux avoir aussi la documentation stp germain7g@gmail.com |
| |
| |
| | | |
|
| | |
| |
Posté le 06 mai 2021 - 18:38 |
Salut Julien. Je suis sur un projet de soutenance et j'ai ce genre de soucis actuellement. Je te demande vraiment de me donner un coup de main a propos du protocole de communication entre le site et le mcf. Je suis nul en langage machine et tout mes efforts a essayer les codes trouvés sur le net sont vains. J'espère que tu répondras vivement a ma requête |
| |
| |
| | | |
|
| | |
| |
Posté le 12 mai 2021 - 12:59 |
Bonjour les amis. j'ai eu le même travail à faire comme la communication avec la machine de facturation. Avec vos instructions j'ai pu réussi avec la Commande C1 mais les autres commandes ne marchent pas. Je voudrais demander si quelqu'un a pu faire et de m'aider. |
| |
| |
| | | |
|
| | |
| |
Posté le 02 juin 2021 - 17:56 |
Bonsoir ,
j'ai fini par avoir un code qui marche bien.
Puis je avoir le modèle de MCF que tu utilises ? |
| |
| |
| | | |
|
| | |
| |
Posté le 07 juin 2021 - 16:15 |
Bonjour Monsieur Julien j'ai le modèle incotex 133 |
| |
| |
| | | |
|
| | |
| |
Posté le 07 juin 2021 - 16:34 |
Bonjour Monsieur Julien PATIPE
Merci de me répondre. c'est la machine incotex 133 que j'ai. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 08 juin 2021 - 09:45 |
hello, pour piloter les imprimantes "fiscales" il y a aussi la possibilité d'utiliser ErpNet.FP ErpNet.FP est un serveur http léger qui facilite l'impression sur les imprimantes de type "fiscal" à travers une simple api json
ErpNet.FP is a light-weight multi-platform Http server facilitating printing to fiscal printers through simple JSON Api. The library provides methods to detect, get status, print receipts, reports and other documents to fiscal printers.
The ErpNet.FP http server provides a REST API with JSON input/output, which prints documents transactionally and returns result status.
The http server receives input through the REST API and uses different transports to communicate with the fiscal printers. The transports include:
COM serial connection Bluetooth connection through mapping to COM port TCP/IP etc.
All communication with the ErpNet.FP print server is based on the Net.FP (Net Fiscal Protocol).
Supported devices and operating systems Currently, the http server is available for:
Windows 32/64 bit macOS 10.10 and up Linux x64 Linux Arm The library supports printers from the following manufacturers:
Datecs (http://www.datecs.bg) Tremol (https://www.tremol.bg) Daisy (https://daisy.bg) Eltrade (https://www.eltrade.com) Incotex (http://www.incotex.bg) ISL (http://isl.bg) If you want your device to be supported, please contact us, and we will try our best to help you!
Tested on Datecs DP-25, firmware: 263453 08Nov18 131, protocol: bg.dt.c.isl.com Datecs WP-50, firmware: 261403 08Nov18 1050, protocol: bg.dt.c.isl.com Datecs FP-2000, firmware: 1.00BG 23NOV18 1000, protocols: bg.dt.p.isl.com, bg.dt.p.isl.tcp Datecs FP-700X, firmware: 266207 29Jan19 1634, protocols: bg.dt.x.isl.com, bg.dt.x.isl.tcp Daisy CompactM, firmware: ONL-4.01BG, protocol: bg.dy.isl.com Daisy CompactM, firmware: ONL01-4.01BG, protocol: bg.dy.isl.com Eltrade A1, firmware: KL5101.1811.0.3 15Nov18 15:49, protocol: bg.ed.isl.com Tremol FP01-KL-V2, firmware: 99C4, protocol: bg.zk.v2.zfp.com Tremol M20, firmware: Ver. 1.01 TRA20 C.S. 25411, protocol: bg.zk.zfp.com Incotex 300SM KL-Q, firmware: 2.11 Jan 22 2019 14:00, protocol: bg.in.isl.com ISL5011S-KL, firmware: BG R1 21.01.201948, protocol: bg.is.icp.com Supported protocols and devices bg.dt.c.isl - Datecs WP-50, Datecs DP-05, Datecs DP-05B, Datecs DP-05C, Datecs DP-25, Datecs DP-35, Datecs DP-150, Datecs DP-15
bg.dt.p.isl - Datecs FP-650, Datecs FP-800, Datecs FP-2000, Datecs FMP-10, Datecs SK1-21F, Datecs SK1-31F
bg.dt.x.isl - Datecs DP-25X, Datecs FMP-350X, Datecs FP-700X, Datecs WP-500X, Datecs FMP-55X, Datecs WP-50X, Datecs FP-700X, Datecs DP-150X, Datecs WP-25X, Datecs FP-700XE
bg.zk.zfp - Tremol A19Plus, Tremol S21, Tremol M23, Tremol M20, Tremol FP15, Tremol SB, Tremol S25, Tremol FP24
bg.zk.v2.zfp - Tremol Z-KL-V2, Tremol ZM-KL-V2, Tremol ZS-KL-V2, Tremol FP01-KL V2, Tremol FP05-KL V2, Tremol M-KL-V2, Tremol S-KL-V2, Tremol FP15 KL V2, Tremol FP03-KL V2, Tremol FP07-KL V2, Tremol FP01, Tremol FP21
bg.ed.isl - Eltrade A1 KL, Eltrade A1 KL, Eltrade A3 KL, Eltrade B1 KL, Eltrade PRP 250F KL, Eltrade A6 KL, Eltrade B3 KL, EPSON TM - T810F KL модел 01, EPSON TM - T81F KL модел 03, ELTRADE PRP 250F KL
bg.dy.isl - Daisy Compact S, Daisy Compact M, Daisy eXpert SX 01, Daisy eXpert SX, Daisy Compact M 02, Daisy Compact S 01, Daisy Perfect M 01, Daisy MICRO C 01, Daisy Compact M 01, Daisy eXpert 01, Daisy Perfect S 01, Daisy FX 1300, Daisy FX 1200C, Daisy Perfect SA, Daisy FX 21 01
bg.in.isl - Incotex 133 KL-Q, Incotex 181 KL-Q, Incotex 777, Incotex 300SM KL-Q, Incotex 300S KL-Q
bg.is.icp - ISL5011S-KL
On peut le télécharger ici : https://github.com/erpnet/ErpNet.FP/blob/master/README.md ( Download) Il a une licence BSD Zero Clause License ( gratuite)
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Posté le 19 octobre 2021 - 07:51 |
Bonjour mon cher ami
Puis-je avoir ton code qui marche bien là stp.
J'utilise deux machines Incotx 133 et eltrade
Merci pour ta générosité.
yawo907@gmail.com |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 message |
|
Posté le 01 novembre 2021 - 03:24 |
bonsoir j'ai besoin d'aide pour finir un projet semblable svp voici mon code
la reponse est sur 1 octet et je recois rien sFerme(SAI_Port_Com)
nPort est un entier
nPort = sOuvre(SAI_Port_Com, 4096, 4096, sTimeoutDéfaut, Vrai) SI ErreurDétectée ALORS ToastAffiche("Erreur sur le port") Erreur() SINON ToastAffiche("Ouverture du port") NumSeq est un entier = Hasard(32,255) sFixeParamètre(nPort, 115200, 1, 8, 0, Vrai, Vrai, Vrai) ToastAffiche("Ecriture") sEcrit(SAI_Port_Com, MakeTrame (Caract(NumSeq),0xC1, "")) Temporisation(100) sEvénement(SAI_Port_Com,sEveCaractèreReçu, LectureCOM) FIN
procedure mktrams
Procedure MakeTrame(cSEQ est un entier sans signe sur 1 octet, cCMD est un entier sans signe sur 1 octet, sData est une chaîne):chaîne cSOH est un entier sans signe sur 1 octet = 0x01 cLEN est un entier sans signe sur 1 octet = 0x24 cAMB est un entier sans signe sur 1 octet = 0x05 iBCC est un entier sans signe sur 2 octets = 0x00 cETX est un entier sans signe sur 1 octet = 0x03 cBCC1, cBCC2, cBCC3, cBCC4 est un entier sans signe sur 1 octet SousTrame, sTrame est une chaîne
cLEN += Taille(sData) SousTrame = Caract(cLEN) + Caract(cSEQ) + Caract(cCMD) + sData + Caract(cAMB) ToastAffiche(SousTrame,toastLong)
i est un entier FOR i=1 _TO_ Taille(SousTrame) iBCC += Asc(SousTrame[[i]]) END
cBCC1 = bitDécaleDroite(iBCC & 0xf000, 12) + 0x30 cBCC2 = bitDécaleDroite(iBCC & 0x0f00, 08) + 0x30 cBCC3 = bitDécaleDroite(iBCC & 0x00f0, 04) + 0x30 cBCC4 = (iBCC & 0x000f) + 0x30
sTrame = Caract(cSOH) + SousTrame + Caract(cBCC1) + Caract(cBCC2) + Caract(cBCC3) + Caract(cBCC4) + Caract(cETX) ToastAffiche(sTrame,toastLong,cvHaut)
RENVOYER sTrame
procedure lecture com
Procedure LectureCOM()
sMessageLu est une chaîne nNbCar est un entier sMessageRetour est une chaîne
nNbCar=sDansFileEntrée(SAI_Port_Com)
Trace(nNbCar)
sMessageLu+=sLit(SAI_Port_Com,sDansFileEntrée(SAI_Port_Com))
SI Contient(sMessageLu,EOT) ALORS sMessageRetour=ExtraitChaîne(sMessageLu,1,EOT) SINON sMessageRetour=sMessageLu FIN
SI Contient(sMessageRetour,Caract(1)) ALORS sMessageRetour = ExtraitChaîne(sMessageRetour,2,Caract(1)) sMessageRetour = sMessageRetour[[4 À]] FIN SAI_Retou +=" "+RC+sMessageRetour RENVOYER sMessageRetour
voici mon mail arthuravoce@yahoo.fr
-- “La victoire sur soi est la plus grande des victoires.”--- PLATON |
| |
| |
| | | |
|
| | | | |
| | |
|