-------------------------------------------------------- =====infos===== Commentaires: // simple ligne aucune instruction sur la même ligne donc pas de commentaire après une instruction ====Création d'un projet avec la cellule en place mais pas d'application==== - copier Demo_rubiks_bvdp\ vers Cellule_depart_staubli_light\ - ouvrir avec SRS - effacer dans la vue 3D tout sauf la cellule et le robot - Tool, piece mobiles puis geometrie - régler le layout de la fenetre en plein écran pour la taille d'écran des étudiants - dans cellule, effacer l'application sous controller - clic droit puis fermer - tout sauver et fermer SRS - effacer les dossiers .git blob_storage - dans CAD, ne laisser que - CELL_IUT0.kxml CELL_IUT0.png cellule_simplifiee_1.wrl et simulation.xml - effacer les dossiers dans Controller1/usr/usrapp - effacer le dossier utils - effacer les fichiers dans Controller1/log - effacer les fichiers dans GPUCache - zipper avant d'ouvrir SRS: Cellule_depart_staubli_light.zip 152Ko https://bvdp.inetdoc.net/files/iut/staubliiut/projets_srs/Cellule_depart_staubli_light.zip -> il y a un probleme a cause du path du fichier .wrl de la cellule en relatif je fait un projet sans la cellule: https://bvdp.inetdoc.net/files/iut/staubliiut/projets_srs/Cellule_depart_staubli_vide.zip 176Ko ====Changer le nom du projet dans la cellule pour ne pas ecraser sur le robot==== -> faire un script python changement nom projet substitution simple fonctionnelle: find . -name "test" -exec sed -i 's,Demo_vissage_bvdp,Demo_rubiks_bvdp, g' {} \; sed avec variables en bash: https://askubuntu.com/questions/76808/how-do-i-use-variables-in-a-sed-command sed -i "s/$var1/ZZ/g" "$file" substitution complete fonctionnelle: ancien_nom="Demo_vissage_bvdp" nouveau_nom="Demo_rubiks_bvdp" find . -name "*.cuo" -exec sed -i "s,$ancien_nom,$nouveau_nom, g" {} \; find . -name "*.pjx" -exec sed -i "s,$ancien_nom,$nouveau_nom, g" {} \; git mv Controller1/usr/usrapp/$ancien_nom/$ancien_nom.dtx Controller1/usr/usrapp/$ancien_nom/$nouveau_nom.dtx git mv Controller1/usr/usrapp/$ancien_nom/$ancien_nom.pjx Controller1/usr/usrapp/$ancien_nom/$nouveau_nom.pjx git mv Controller1/usr/usrapp/$ancien_nom Controller1/usr/usrapp/$nouveau_nom ~/testgit/rubiksstaubli$ grep -nRi Demo_vissage_bvdp * CELL_IUT0.cuo:4: Disk://Demo_vissage_bvdp/Demo_vissage_bvdp.pjx CELL_IUT0.cuo:10: CELL_IUT0.cuo:11: CELL_IUT0.cuo:12: CELL_IUT0.cuo:13: CELL_IUT0.cuo:14: CELL_IUT0.cuo:15: CELL_IUT0.cuo:16: CELL_IUT0.cuo:17: CELL_IUT0.cuo:18: CELL_IUT0.cuo:19: CELL_IUT0.cuo:20: CELL_IUT0.cuo:21: CELL_IUT0.cuo:22: CELL_IUT0.cuo:23: CELL_IUT0.cuo:30: CELL_IUT0.cuo:31: CELL_IUT0.cuo:32: CELL_IUT0.cuo:33: CELL_IUT0.cuo:40: CELL_IUT0.cuo:41: CELL_IUT0.cuo:42: CELL_IUT0.cuo:43: CELL_IUT0.cuo:44: CELL_IUT0.cuo:45: CELL_IUT0.cuo:46: CELL_IUT0.cuo:47: CELL_IUT0.cuo:48: CELL_IUT0.cuo:53: Controller1/log/user.log:14610:{"entry":{"date":"2022-11-08T19:06:41","ts":"2135.720476500","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"04c46e3bef440bba71"} Controller1/log/user.log:15234:{"entry":{"date":"2022-11-08T19:10:01","ts":"2335.247940600","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"55e1a6ad9da24163c0"} Controller1/log/user.log:15235:{"entry":{"date":"2022-11-08T19:10:01","ts":"2335.581087000","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"041388c8938667f628"} Controller1/log/user.log:15766:{"entry":{"date":"2022-11-08T19:13:01","ts":"2514.791671600","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"7d5fc809542efcc4de"} Controller1/log/user.log:15767:{"entry":{"date":"2022-11-08T19:13:01","ts":"2515.034596100","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"c7bf4b434cbf4ce311"} Controller1/log/user.log:15772:{"entry":{"date":"2022-11-08T19:14:29","ts":"2603.271855100","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"7bd84f45101910458a"} Controller1/log/user.log:15773:{"entry":{"date":"2022-11-08T19:14:29","ts":"2603.593135100","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"28791b14976eccc924"} Controller1/log/user.log:16001:{"entry":{"date":"2022-11-08T19:23:40","ts":"3154.261730800","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"f3ba94b4717505fcd2"} Controller1/log/user.log:16004:{"entry":{"date":"2022-11-08T19:25:18","ts":"3252.202974300","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"2744ae21c081b14249"} Controller1/log/user.log:16067:{"entry":{"date":"2022-11-08T19:26:24","ts":"3317.745352399","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"77b92e868d8dc13e8c"} Controller1/log/user.log:16068:{"entry":{"date":"2022-11-08T19:26:24","ts":"3317.992475999","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"0359f6bc452209f8f0"} Controller1/log/user.log:16454:{"entry":{"date":"2022-11-08T19:31:04","ts":"3598.639613999","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"7b889c9be276912468"} Controller1/log/user.log:16455:{"entry":{"date":"2022-11-08T19:31:05","ts":"3598.799416699","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"1ea1cacf43596d7234"} Controller1/log/user.log:16548:{"entry":{"date":"2022-11-08T19:32:00","ts":"3654.586997100","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"22360f252d34190909"} Controller1/log/user.log:16549:{"entry":{"date":"2022-11-08T19:32:01","ts":"3654.796171000","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"cd6895f3b95dce80f6"} Controller1/log/user.log:16577:{"entry":{"date":"2022-11-08T19:32:29","ts":"3683.497306100","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"97257919cc9ca7b943"} Controller1/log/user.log:16578:{"entry":{"date":"2022-11-08T19:32:29","ts":"3683.594245500","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"bf492a13eded5accf1"} Controller1/log/user.log:16906:{"entry":{"date":"2022-11-08T19:36:01","ts":"3894.769062499","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"c42d3ee2c673a08e8b"} Controller1/log/user.log:16907:{"entry":{"date":"2022-11-08T19:36:01","ts":"3894.980314200","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"6b76f7da276146eb6a"} Controller1/log/user.log:16939:{"entry":{"date":"2022-11-08T19:36:31","ts":"3925.186446900","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"1f6830a0c9bc385484"} Controller1/log/user.log:16940:{"entry":{"date":"2022-11-08T19:36:31","ts":"3925.440486900","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"2c5c349c6286b19f8f"} Controller1/log/user.log:17162:{"entry":{"date":"2022-11-08T19:38:57","ts":"4071.388284400","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"4fa1a9e36ed3f64092"} Controller1/log/user.log:17163:{"entry":{"date":"2022-11-08T19:38:57","ts":"4071.580464500","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"0b1e1670403e92274b"} Controller1/log/user.log:18785:{"entry":{"date":"2022-11-08T20:04:22","ts":"494.728978199","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"16b660b20e3ab10b23"} Controller1/log/user.log:18790:{"entry":{"date":"2022-11-08T20:04:43","ts":"516.126917499","type":"msg","lvl":"ERROR","id":"0x5404","val":"Erreur d'exécution VAL3. Accès à un tableau avec un index plus grand que la taille du tableau.. Demo_vissage_bvdp~. "},"hash":"71a8da682f2f7c72a8"} Controller1/log/user.log:18791:{"entry":{"date":"2022-11-08T20:04:43","ts":"516.126941699","type":"msg","lvl":"ERROR","id":"0x5404","val":"ERR 20 Accès à un tableau avec un index plus grand que la taille du tableau.. Demo_vissage_bvdp~. "},"hash":"a066dadfca71305675"} Controller1/log/user.log:18792:{"entry":{"date":"2022-11-08T21:12:31","ts":"4583.828104699","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"38be06f72fcfc74c04"} Controller1/log/user.log:18793:{"entry":{"date":"2022-11-08T21:12:31","ts":"4584.034821800","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"d050926879c7bec4be"} Controller1/log/user.log:19201:{"entry":{"date":"2022-11-08T21:16:26","ts":"4819.194506799","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"04ecf6463adc50b936"} Controller1/log/user.log:19202:{"entry":{"date":"2022-11-08T21:16:26","ts":"4819.397078899","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"3c4e30378220d93eb6"} Controller1/log/user.log:19331:{"entry":{"date":"2022-11-08T21:17:40","ts":"4893.141122199","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"1c4b53f194e4ba41fb"} Controller1/log/user.log:19332:{"entry":{"date":"2022-11-08T21:17:40","ts":"4893.359090499","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"c4ba5f1e5abaa14029"} Controller1/log/user.log:20272:{"entry":{"date":"2022-11-08T21:21:58","ts":"5150.815771199","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"dc3580217bd0123d77"} Controller1/log/user.log:20273:{"entry":{"date":"2022-11-08T21:21:58","ts":"5151.023802199","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"870cffd920c99bd892"} Controller1/log/user.log:20531:{"entry":{"date":"2022-11-08T21:23:25","ts":"5238.200896200","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"6e36dbd77832e77a66"} Controller1/log/user.log:20532:{"entry":{"date":"2022-11-08T21:23:26","ts":"5238.457031499","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"6423620317503e748e"} Controller1/log/user.log:20630:{"entry":{"date":"2022-11-08T21:24:30","ts":"5303.091238699","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"b16b720d5ecbdbc2d4"} Controller1/log/user.log:20631:{"entry":{"date":"2022-11-08T21:24:30","ts":"5303.395415899","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"f6603b70fb9c0dccca"} Controller1/log/user.log:20869:{"entry":{"date":"2022-11-08T21:27:54","ts":"5507.043431999","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"aa3866ec4ec7af2ee0"} Controller1/log/user.log:20870:{"entry":{"date":"2022-11-08T21:27:55","ts":"5507.423099600","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"434c0f9bcb8e6a3796"} Controller1/log/user.log:20875:{"entry":{"date":"2022-11-08T21:29:56","ts":"5629.215342500","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"5c4fb4063e6d295b08"} Controller1/log/user.log:20876:{"entry":{"date":"2022-11-08T21:29:57","ts":"5629.442880399","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"e943d4217414b450b5"} Controller1/log/user.log:20881:{"entry":{"date":"2022-11-08T21:30:32","ts":"5665.136526999","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"e583700a5ff40cb180"} Controller1/log/user.log:20882:{"entry":{"date":"2022-11-08T21:30:33","ts":"5665.455688200","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"4a180211c51094be2d"} Controller1/log/user.log:20934:{"entry":{"date":"2022-11-08T21:31:18","ts":"5711.218030100","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"91515917fa363e8eee"} Controller1/log/user.log:20935:{"entry":{"date":"2022-11-08T21:31:19","ts":"5711.455119999","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"8db2f0b2d7962366e1"} Controller1/log/user.log:21010:{"entry":{"date":"2022-11-21T16:22:20","ts":"1510.238550400","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"6b1254e2032579ad29"} Controller1/log/user.log:21015:{"entry":{"date":"2022-11-21T16:24:49","ts":"27.520267400","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"9e99e86d2b7e42f7ab"} Controller1/log/user.old:738:{"entry":{"date":"2022-02-20T18:45:35","ts":"1357.143896699","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"97d4f8e14d7e3fad24"} Controller1/log/user.old:739:{"entry":{"date":"2022-02-20T18:45:36","ts":"1357.357032500","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"db09751f4b38af26a5"} Controller1/log/user.old:13238:{"entry":{"date":"2022-02-20T20:08:34","ts":"597.090076200","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"f0ef8e0e00af6a145f"} Controller1/log/user.old:17124:{"entry":{"date":"2022-02-20T21:02:23","ts":"3826.311147500","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"6226336956c02d89de"} Controller1/log/user.old:17125:{"entry":{"date":"2022-02-20T21:02:23","ts":"3826.630530600","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"cb1ce5f14c1ca7242f"} Controller1/log/user.old:17132:{"entry":{"date":"2022-02-20T21:02:48","ts":"3850.892647500","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"ef1ed9c44d84ddfa42"} Controller1/log/user.old:17133:{"entry":{"date":"2022-02-20T21:02:48","ts":"3851.104061000","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"604e6d4d56ea692f1a"} Controller1/log/user.old:18991:{"entry":{"date":"2022-02-20T21:08:39","ts":"4201.987151599","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"cd1f5fe86b3069ac0c"} Controller1/log/user.old:18992:{"entry":{"date":"2022-02-20T21:08:39","ts":"4202.454484899","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"3887df931a48c7187c"} Controller1/log/user.old:19137:{"entry":{"date":"2022-02-20T21:09:41","ts":"4264.330786099","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"90251afa31e70244f0"} Controller1/log/user.old:19138:{"entry":{"date":"2022-02-20T21:09:41","ts":"4264.647409700","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"b70778ef8d9e00d2f8"} Controller1/log/user.old:19273:{"entry":{"date":"2022-02-20T21:17:56","ts":"4758.839484499","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"e7f2bf98fda2b5a279"} Controller1/log/user.old:19274:{"entry":{"date":"2022-02-20T21:17:56","ts":"4759.272553299","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"64e711e5232acc678b"} Controller1/log/user.old:19832:{"entry":{"date":"2022-02-20T21:21:59","ts":"5001.898113900","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"6b906435cfd5e5c66d"} Controller1/log/user.old:19833:{"entry":{"date":"2022-02-20T21:21:59","ts":"5002.156467899","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"9b46ff77ffdf337df9"} Controller1/log/user.old:20236:{"entry":{"date":"2022-02-20T21:22:43","ts":"5045.943205299","type":"msg","lvl":"ERROR","id":"0x5404","val":"Erreur d'exécution VAL3. L'entrée-sortie ne répond pas.. Demo_vissage_bvdp~. "},"hash":"88eaf93869386fc37c"} Controller1/log/user.old:20237:{"entry":{"date":"2022-02-20T21:22:43","ts":"5045.943218699","type":"msg","lvl":"ERROR","id":"0x5404","val":"ERR 125 L'entrée-sortie ne répond pas.. Demo_vissage_bvdp~. "},"hash":"7e73e0100b1ae0aaa8"} Controller1/log/user.old:20238:{"entry":{"date":"2022-02-20T21:22:49","ts":"5052.303203400","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"749a578d472670dacb"} Controller1/log/user.old:20239:{"entry":{"date":"2022-02-20T21:22:49","ts":"5052.625404799","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"d5dc1c84ea4df7a403"} Controller1/log/user.old:20263:{"entry":{"date":"2022-02-20T21:23:13","ts":"5076.135020700","type":"msg","lvl":"ERROR","id":"0x5404","val":"Erreur d'exécution VAL3. Le temps maximal d'exécution de l'instruction a été atteint. Demo_vissage_bvdp~. "},"hash":"e1a392707d2f7c086b"} Controller1/log/user.old:20264:{"entry":{"date":"2022-02-20T21:23:13","ts":"5076.135030300","type":"msg","lvl":"ERROR","id":"0x5404","val":"ERR 60 Le temps maximal d'exécution de l'instruction a été atteint. Demo_vissage_bvdp~. "},"hash":"262070e2ffee660509"} Controller1/log/user.old:20266:{"entry":{"date":"2022-11-07T14:41:02","ts":"96.653606199","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"f304afc5410ad7e18f"} Controller1/log/user.old:20290:{"entry":{"date":"2022-11-07T14:42:51","ts":"206.602255700","type":"msg","lvl":"ERROR","id":"0x5404","val":"Erreur d'exécution VAL3. Le temps maximal d'exécution de l'instruction a été atteint. Demo_vissage_bvdp~. "},"hash":"4bc932a1c6a494accd"} Controller1/log/user.old:20291:{"entry":{"date":"2022-11-07T14:42:51","ts":"206.602273699","type":"msg","lvl":"ERROR","id":"0x5404","val":"ERR 60 Le temps maximal d'exécution de l'instruction a été atteint. Demo_vissage_bvdp~. "},"hash":"a1a38ce53041d4c285"} Controller1/log/user.old:20292:{"entry":{"date":"2022-11-07T14:44:38","ts":"312.838417800","type":"msg","lvl":"INFO","id":"0x5403","val":"Application 'Demo_vissage_bvdp' arrêtée."},"hash":"f258d15c404d89dbb9"} Controller1/log/user.old:20293:{"entry":{"date":"2022-11-07T14:44:38","ts":"313.304041900","type":"msg","lvl":"INFO","id":"0x5402","val":"Application 'Demo_vissage_bvdp' lancée."},"hash":"f66c92628115623bc9"} Controller1/usr/usrapp/Demo_vissage_bvdp/Demo_vissage_bvdp.pjx:11: bvandepo@bvandepo-HP-ZBook-14-G2:~/testgit/rubiksstaubli$ et ~/testgit/rubiksstaubli$ find .| grep -i Demo_vissage_bvdp ./Controller1/usr/usrapp/Demo_vissage_bvdp ./Controller1/usr/usrapp/Demo_vissage_bvdp/start.pgx ./Controller1/usr/usrapp/Demo_vissage_bvdp/Demo_vissage_bvdp.dtx ./Controller1/usr/usrapp/Demo_vissage_bvdp/emissionEtat.pgx ./Controller1/usr/usrapp/Demo_vissage_bvdp/stop.pgx ./Controller1/usr/usrapp/Demo_vissage_bvdp/logMsgBlock.pgx ./Controller1/usr/usrapp/Demo_vissage_bvdp/Demo_vissage_bvdp.pjx ./Controller1/usr/usrapp/Demo_vissage_bvdp/.outlining.json ---------------------------------- ====Questions sans réponse==== a quoi servent les données PUBLIQUES? (partagées entre applications?) comment animer la pince? onglet accueil->deboguer sur->tableau de bord DIO ?????? Déplacement manuel en cartésien: c'est quel repère (bride/outils)? -------------------------------------------------------- =====Adaptation pour rubikscube===== Import du modèle de pince Récupérer le modèle STL de la pince Schunk et du préhenseur de bouchon: https://bvdp.inetdoc.net/files/iut/staubli/stl/adaptateur_pince_rubiks_iut2022_open.stl Régler tout à 0 dans la position absolue sauf Z à 140.00 -> je garde la même valeur comme çà j'aurai la même variable tTool que pour vissage Ajout des éléments dans la cellule https://bvdp.inetdoc.net/files/iut/staubli/stl/rubikscube_support_et_pied_LR.stl https://bvdp.inetdoc.net/files/iut/staubli/stl/rubikscube.stl faire une première version avec une liste de 9 position à apprendre ensuite une seconde ou le rubiks cube définit un repère et les positions sont calculées à partir du repère cube -avec appro: avec le trsf est définit dans le repère World point appro(point pPosition, trsf trTransformation) -en utilisant les frame (orienter le support n'importe comment), le trsf est alors définit dans le frame attaché au cube ---------------------------------------------------------------------------------------- variable globale: pPointSaisieCubeRef Données->pPointSaisieCubeRef->pPointSaisieCubeRef[0]->clic droit->ici avec config 0 396,903687 -66,361694 77,289926 -180 0 -180 LEFTY EPOSITIVE WPOSITIVE jBrasbaisse 0 -16,0396692462951 4,20500190148891 64,320275201713 -3,58871392837573E-14 111,474722896799 -16,0396692462945 ---------------------------------------------------------------------------------------- - fVariable est une variable de type frame voir chapitre 9: Positions du bras Organigramme : frame / point / tool / trsf Le type frame décrit un repère géométrique. L'utilisation de repères rend en particulier les manipulations géométriques sur les points plus simples et intuitives. Le type trsf décrit une transformation géométrique. Il est utilisé par les types tool, point et frame. point compose(point pPosition, frame fReference, trsf trTransformation) trsf position(point pPosition, frame fReference) trsf position(frame fFrame, frame fReference) point here(tool tTool, frame fReference) 9.4. Type frame 9.4.1. Définition Le type frame permet de définir la position de repères de référence dans la cellule. Le type frame est un type structuré avec un seul champ accessible : trsf trsf position du repère dans son repère de référence Le repère de référence d'une variable de type frame est défini quand il est initialisé (à l'aide de l'interface utilisateur, de l'opérateur = ou de l'instruction link()). Le repère de référence world est toujours défini dans une application : tout repère de référence est, directement ou via d'autres repères, lié au repère world. Une erreur d'exécution est générée pendant un calcul géométrique si les coordonnées du repère world ont été modifiées. Par défaut, les variables de repère local et les repères dans les variables de type utilisateur n'ont pas de repère de référence. Avant de pouvoir être utilisés, ils doivent être initialisés à partir d'un autre repère à l'aide de l'opérateur ’=’ ou de l'une des instructions link() et setFrame(). 9.4.2. Utilisation L'utilisation de repères de référence dans une application robotique est vivement recommandée : - Pour donner une vue plus intuitive des points de l'application L'affichage des points de la cellule est structuré selon l'organisation hiérarchique des repères. - Pour mettre à jour rapidement la position d'un ensemble de points Dès qu'un point de l'application est lié à un objet, il est souhaitable de définir un repère pour cet objet, et de lier les points à ce repère. Si l'objet est déplacé, il suffit de réapprendre le repère pour que tous les points qui y sont liés soient corrigés du même coup. - Pour reproduire une trajectoire à plusieurs endroits de la cellule On peut pour cela définir les points de la trajectoire par rapport à un repère de travail, et apprendre un repère pour chaque endroit où la trajectoire doit être reproduite. En affectant la valeur d'un repère appris au repère de travail, la trajectoire entière se "déplace" sur le repère appris. - Pour calculer facilement des déplacements géométriques L'instruction compose() permet d'effectuer sur tout point des déplacements géométriques exprimés dans un repère de référence quelconque. L'instruction position() permet de calculer la position d'un point dans un repère de référence quelconque num setFrame(point pOrigin, point pAxisOx, point pPlaneOxy, frame& fResult) trsf position(frame fFrame, frame fReference) void link(frame fFrame, frame fReference) point compose(point pPosition, frame fReference,trsf trTransformation) Cette instruction renvoie le pPosition auquel la transformation géométrique trTransformation est appliquée par rapport au repère fReference. DANGER La composante rotation de tTransformation modifie en général non seulement l'orientation de pPosition, mais aussi ses coordonnées cartésiennes (sauf si pPosition se situe sur l'origine de fReference). Si l'on souhaite que tTransformation ne modifie que l'orientation de pPosition, il faut mettre à jour le résultat avec les coordonnées cartésiennes de pPosition (voir exemple). Le repère de référence et la configuration du point renvoyé sont ceux de pPosition. Une erreur d'exécution est générée si aucun repère de référence n'est défini pour pPosition. Exemple // modification of the orientation without modification of PositionpResult = compose(pPosition,fReference,trTransformation)pResult.trsf.x = pPosition.trsf.xpResult.trsf.y = pPosition.trsf.ypResult.trsf.z = pPosition.trsf.z// modification of Position without modification of the orientationtrTransformation.rx = trTransformation.ry =trTransformation.rz = 0pResult = compose(pResult,fReference,trTransformation) =====Dossier de travail====== Bertrand travail dans le dossier D:\travail\bertrand installation de git portable dans D:\travail\bertrand\git création des alias pour git voir [[git]] D:\travail\bertrand\alias.txt: git=D:\travail\bertrand\git\bin\git $* gitk=D:\travail\bertrand\git\cmd\gitk pour ajouter la clef: reg add "HKCU\Software\Microsoft\command processor" /v AutoRun /d "Doskey /MACROFILE=D:\travail\bertrand\alias.txt" /f >null pour recharger le fichier d'alias sans redémarrer: Doskey /MACROFILE=D:\travail\bertrand\alias.txt =====Lancement de l'application python===== Télécharger le fichier d'application python en cliquant droit sur le nom du fichier puis "Enregistrer sous". Avec l'explorateur, cliquer droit sur le fichier puis "Edit with IDLE". Modifier le code tel que demandé dans le sujet. Lancer le programme en tapant sur la touche F5. En cas de message d'avertissement de pare feu, cliquer sur Annuler. ===15 décembre 2021=== 15/12 a 11h38 rapid récupère sur prise 41 à gauche du robot un ip sur vlan rouge (alors que philippe avait mis les 2 prises sur vlan bleu le 13/12....???? enp0s25: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether a0:8c:fd:a7:a0:52 brd ff:ff:ff:ff:ff:ff inet 172.16.8.65/24 brd 172.16.8.255 scope global dynamic enp0s25 valid_lft 295sec preferred_lft 295sec ===6 janvier 2022=== Philippe remet les 2 prises 41 et 42 sur VLAN bleu. Mise en commentaire sur raspberry pi de passerelle 192.168.1.254 sur config wifi dans /etc/network/interface. Fixation raspberry pi vision sur robot. ssh -X fonctionnel. ===Connexion à raspberry pi vision=== slogin -Y pi@172.16.6.57 Pour visualiser image camera: ~/bvdp/opencv_bouchon/camera3.py Pour sauver une image, la fenêtre avec l'image ayant le focus, presser S. (image .jpg dans le dossier sur raspberry pi) . pour quitter, presser q. =====Questions:===== * Sur evalbyod, Philippe risque virer l'ARP, mais il conservera sur GE2I_ROBOTICS pour que l'on puisse pinger des hotes. * Est ce que PC Rapid wifi sur evalbyod récupérera une autre ip que le bail sur GE2I_ROBOTICS? * oui si bail statique configuré (todo) * Est ce qu'il est possible de configurer des baux dhcp statiques sur GE2I_ROBOTICS? * Philippe dit oui, mais je n'ai pas forcement besoin, car les capteurs wifi connaisse l'IP du serveur de données capteur qui est sur VLAN bleu * prises 27 et 28 n'ont pas de gommette et ont l'air d’être sur gommette rouge * TODO à traiter * est il possible d'avoir prise bleue sur mon bureau (avec un commutateur de table) (et sachant que la prise réseau actuelle ne fonctionne pas) * TODO: Bertrand doit faire un tiquet à manu si Philippe n'a pas réussi d'ici vendredi 17 * est il possible que PC Rapid ethernet interne enp0s25, a0:8c:fd:a7:a0:52 branché sur prise quelconque (pas de gomette) de l'iut récupère un bail dhcp (dynamique) et puisse via routage accéder à vlan bleu ? * TODO: Bertrand doit faire ticket à manu pour donner mon adresse MAC (philippe dit que ca ne rentrera pas en conflit avec bail statique sur vlan Bleue) * Sur le principe, le bail DHCP de rapid peut il être "pris" par une machine dont l'ip serait réglée en statique par moi (de sorte que je puisse facilement substituer mon pc par un autre en cas de besoin/problème, ou bien y a t il vérification de la cohérence entre @IP et @MAC * oui philippe dit que les commut vont le dégager * j'ai eu des problèmes de DNS sur le réseau gomette rouge, est ce que rapid et raspberry auront accès à internet sur ce réseau (pour apt, pip etc....) * oui Philippe a réparé le DNS * lors de l'exécution de programmes python (à faire modifier aux étudiants) dialoguant via sockets udp, j'obtiens un message du pare feu windows. Est il possible de désactiver ce message, il n'empêche pas de communiquer mais c'est pénible. Quelle règle définir? plage de port/ip? ou type de programme/emplacement? ou???? * Est ce que je peux avoir PLUSIEURS prises VLAN bleue dans mon bureau (pour mon PC + raspberry pi par exemple) {{https://bvdp.inetdoc.net/files/iut/staubliiut/configreseau/parefeu.png}} ----------------------------------------------------------------------------------- =====Application python pour simuler un capteur===== Utilisable sous windows à l'IUT, mais avec le warning pare feu :( Ignorer ce message, il n'empêche pas de communiquer. Comment le désactiver? #!/usr/bin/python3 # -*- coding: utf-8 -* #Bertrand Vandeportaele 2022 import os import sys debug=True global numeroPremiereDonneeCapteur #TODO: donner une valeur à cette variable en fonction de votre numéro d'étudiant numeroPremiereDonneeCapteur=156 global destIP global portOut global etatBouton etatBouton=0 global slider1Value slider1Value=0 global slider2Value slider2Value=0 global led0Button ######################################## #https://stackoverflow.com/questions/1051254/check-if-python-package-is-installed #install automatically watchdog if not already installed import subprocess import sys reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) installed_packages = [r.decode().split('==')[0] for r in reqs.split()] if 'PyQt5' in installed_packages: if debug: print('PyQt5 pip package already installed') else: if debug: print('PyQt5 pip package missing, lets install it') import pip pip.main(['install','PyQt5']) ''' Could not find a version that satisfies the requirement PyQt5-Qt5>=5.15.2 (from PyQt5) (from versions: ) No matching distribution found for PyQt5-Qt5>=5.15.2 (from PyQt5) You are using pip version 9.0.1, however version 21.3.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Traceback (most recent call last): File "/home/bvandepo/Bureau/pythonb/staubli/simu_sensor_2_qt5.py", line 32, in from PyQt5.QtGui import * ModuleNotFoundError: No module named 'PyQt5' ''' ######################################## #from PyQt5 import QtCore, QtGui, QtWidgets ''' from PyQt5.QtGui import * from PyQt5.QtNetwork import * from PyQt5.QtCore import * from PyQt5 import * from PyQt5.QtWidgets import * ''' from PyQt5.QtGui import * from PyQt5.QtNetwork import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5 import * import re #pour découpage chaine comme sur https://stackoverflow.com/questions/2175080/sscanf-in-python ################################################################################ def close(): print('close') exit(0) ################################################################################ def commutTimer(): global timer print('commutTimer') if timer.isActive(): timer.stop() commutTimerButton.setText('start stream sensor') else: timer.start() commutTimerButton.setText('stop stream sensor') ################################################################################ def slider1ValueChanged( value ): #label.setText( str( value ) global numeroPremiereDonneeCapteur global labelSlider1Value global slider1Value slider1Value=value labelSlider1Value.setText( str( numeroPremiereDonneeCapteur+5)+" : {:6d}".format(slider1Value) ) #print('changed') ################################################################################ def slider2ValueChanged( value ): #label.setText( str( value ) global numeroPremiereDonneeCapteur global labelSlider2Value global slider2Value slider2Value=value labelSlider2Value.setText( str( numeroPremiereDonneeCapteur+6)+" : {:6d}".format(slider2Value) ) #print('changed') ################################################################################ def bouton0(): global numeroPremiereDonneeCapteur global labelButtonValue global led0Button global etatBouton etatBouton=(etatBouton+1)%2 if etatBouton==0: led0Button.setText('Activer la sortie TOR') else: led0Button.setText('Desactiver la sortie TOR') labelButtonValue.setText( str( numeroPremiereDonneeCapteur+2)+" : {:6d}".format(etatBouton) ) print('etatBouton: '+ str(etatBouton) +" \n"); ################################################################################ def sendUDP(i): global udpSocket global destIP global portOut DestIP = QHostAddress(destIP); global slider1Value global slider2Value global etatBouton global numeroPremiereDonneeCapteur # chaine=str(slider1Value)+ " " + str(slider2Value) #ajout @MAC bidon # chaine="00:00:00:00:00:00 "+str(slider1Value)+ " " + str(slider2Value) #ajout champs vides pour être compatible avec le joystick wifi #@MAC: BC:DD:C2:FE:6F:F0 num: 0 0 -> 529.0 , 1 -> 534.0 , 2 -> 0.0 , 3 -> 0.0 , 4 -> 0.0 , 5 -> -73.0 , 6 -> 63.0 , chaine="00:00:00:00:00:00 "+str(numeroPremiereDonneeCapteur)+" 0 0 "+str(etatBouton)+" 0 0 "+str(slider1Value)+ " " + str(slider2Value) #chaines bidons pour générer erreur de parsing sur le serveur # chaine="00:00:00:00:00:00 0 0 0 "+"687f"+" 0 0 "+str(slider1Value)+ " " + str(slider2Value) chaine=chaine+chr(13)+chr(10) print("la chaine envoyée vers ip: "+str(destIP)+":"+str(portOut) +" est: "+chaine) udpSocket.writeDatagram(chaine.encode('utf-8'),DestIP, portOut); ################################################################################ def timerUpdate(): sendUDP(0) ################################################################################ global led0Button #destIP='192.168.1.50' #pc simulateur #destIP='192.168.0.112' #pc simulateur #destIP='192.168.1.49' #pc serveur rapid connecté en filaire à réseau AIP #destIP='127.0.0.1' #pc serveur sur la boucle locale #destIP='192.168.3.5' #pc serveur rapid connecté en wifi à réseau AIP #destIP='192.168.3.4' #pc serveur rapid connecté en ethernet à réseau AIP #destIP='127.0.0.1' #ip locale destIP='10.6.11.62' #un pc de la salle u2 IUT portOut=10000 posx=100 posy=100 sizex=500 sizey=150 ################################################################################ app = QApplication(sys.argv) w=QDialog() statusLabel =QLabel('En attente de datagrammes UDP depuis le PIC32') commutTimerButton=QPushButton('stop stream sensor') quitButton = QPushButton('&Quit') led0Button = QPushButton('Activer la sortie TOR') udpSocket =QUdpSocket() udpSocket.bind(portOut, QUdpSocket.ShareAddress) quitButton.clicked.connect(close) commutTimerButton.clicked.connect(commutTimer) led0Button.clicked.connect(bouton0) #led1Button.clicked.connect(bouton1) #led2Button.clicked.connect(bouton2) #app.connect(quitButton,QtCore.SIGNAL('clicked()'), close) #app.connect(commutTimerButton, QtCore.SIGNAL('clicked()'), commutTimer) #app.connect(led0Button,QtCore.SIGNAL('clicked()'), bouton0) buttonLayout =QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addWidget(commutTimerButton) buttonLayout.addStretch(1) global labelButtonValue labelButtonValue=QLabel( ) labelButtonValue.setGeometry(250, 50, 50, 35) #labelButtonValue.setText( "x: "+str(0 ) ) labelButtonValue.setText( str( numeroPremiereDonneeCapteur+2)+" : {:6d}".format(0) ) button1Layout =QHBoxLayout() button1Layout.addStretch(1) button1Layout.addWidget(labelButtonValue) button1Layout.addStretch(1) button1Layout.addWidget(led0Button) button1Layout.addStretch(1) ####################################################"" #http://koor.fr/Python/CodeSamplesQt/PyQtSlider.wp slider1 = QSlider(Qt.Horizontal); amplitude=1800; slider1.setMinimum(int(-amplitude/2)) slider1.setMaximum(int(amplitude/2)) slider1.setGeometry( 10, 10, 600, 40 ) slider1.valueChanged.connect(slider1ValueChanged ) slider1.setValue( 0 ) global labelSlider1Value labelSlider1Value=QLabel( ) labelSlider1Value.setGeometry(250, 50, 50, 35) #labelSlider1Value.setText( "x: "+str(0 ) ) labelSlider1Value.setText( str( numeroPremiereDonneeCapteur+5)+" : {:6d}".format(0) ) slider1Layout =QHBoxLayout() slider1Layout.addWidget(labelSlider1Value) slider1Layout.addWidget(slider1) #labelSlider1Value=QLabel( ) #labelSlider1Value.setGeometry(250, 50, 50, 35) #labelSlider1Value.setText( str( slider1.getValue() ) ) sliderLayout =QHBoxLayout() sliderLayout.addStretch(1) sliderLayout.addWidget(slider1) sliderLayout.addStretch(1) #sliderLayout.addWidget(labelSlider1Value) #sliderLayout.addStretch(1) slider2 = QSlider(Qt.Horizontal); slider2.setMinimum(int(-amplitude/2)) slider2.setMaximum(int(amplitude/2)) slider2.setGeometry( 10, 10, 600, 40 ) slider2.valueChanged.connect(slider2ValueChanged ) slider2.setValue( 0 ) global labelSlider2Value labelSlider2Value=QLabel( ) labelSlider2Value.setGeometry(250, 50, 50, 35) #labelSlider2Value.setText( "Y: "+str(0 ) ) labelSlider2Value.setText( str( numeroPremiereDonneeCapteur+6)+" : {:6d}".format(0) ) slider2Layout =QHBoxLayout() slider2Layout.addWidget(labelSlider2Value) slider2Layout.addWidget(slider2) sliderLayout.addWidget(slider2) sliderLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addLayout(buttonLayout) mainLayout.addLayout(button1Layout) mainLayout.addLayout(slider1Layout) mainLayout.addLayout(slider2Layout) mainLayout.addWidget(statusLabel) w.setLayout(mainLayout) chaine='@BVDP2022: Port Em '+str(portOut) +' vers IP: '+str(destIP) print(chaine) w.setWindowTitle(chaine) #timer adapted from example 1 of https://www.programcreek.com/python/example/52106/PyQt4.QtCore.QTimer timer = QtCore.QTimer() #app.connect(timer, QtCore.SIGNAL('timeout()'), timerUpdate) timer.timeout.connect(timerUpdate) timer.setInterval(100) timer.start() w.setGeometry(posx,posy,sizex,sizey) #donne le focus au bouton 1 led0Button.setDefault(True) w.show() app.exec_() Autre programme de simulateur: #!/usr/bin/python3 # -*- coding: utf-8 -* #Bertrand Vandeportaele 2019 import os import sys debug=True ######################################## #https://stackoverflow.com/questions/1051254/check-if-python-package-is-installed #install automatically watchdog if not already installed import subprocess import sys reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) installed_packages = [r.decode().split('==')[0] for r in reqs.split()] if 'PyQt5' in installed_packages: if debug: print('PyQt5 pip package already installed') else: if debug: print('PyQt5 pip package missing, lets install it') import pip pip.main(['install','PyQt5']) ''' Could not find a version that satisfies the requirement PyQt5-Qt5>=5.15.2 (from PyQt5) (from versions: ) No matching distribution found for PyQt5-Qt5>=5.15.2 (from PyQt5) You are using pip version 9.0.1, however version 21.3.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Traceback (most recent call last): File "/home/bvandepo/Bureau/pythonb/staubli/simu_sensor_2_qt5.py", line 32, in from PyQt5.QtGui import * ModuleNotFoundError: No module named 'PyQt5' ''' ######################################## #from PyQt5 import QtCore, QtGui, QtWidgets ''' from PyQt5.QtGui import * from PyQt5.QtNetwork import * from PyQt5.QtCore import * from PyQt5 import * from PyQt5.QtWidgets import * ''' from PyQt5.QtGui import * from PyQt5.QtNetwork import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5 import * import re #pour découpage chaine comme sur https://stackoverflow.com/questions/2175080/sscanf-in-python global capteur0 global capteur1 global capteur2 capteur0=0 capteur1=0 capteur2=0 global slider1Value slider1Value=0 global slider2Value slider2Value=0 ################################################################################ def close(): print('close') exit(0) ################################################################################ def commutTimer(): global timer print('commutTimer') if timer.isActive(): timer.stop() commutTimerButton.setText('start stream sensor') else: timer.start() commutTimerButton.setText('stop stream sensor') ################################################################################ def slider1ValueChanged( value ): #label.setText( str( value ) global slider1Value slider1Value=value print('changed') ################################################################################ def slider2ValueChanged( value ): #label.setText( str( value ) global slider2Value slider2Value=value print('changed') ################################################################################ def bouton0(): global capteur0 capteur0=(capteur0+1)%2 print('capteur0: '+ str(capteur0) +" \n"); ################################################################################ def bouton1(): global capteur1 capteur1=(capteur1+1)%2 print('capteur1: '+ str(capteur1) +" \n"); ################################################################################ def bouton2(): global capteur2 capteur2=(capteur2+1)%2 print('capteur2: '+ str(capteur2) +" \n"); ################################################################################ def sendUDP(i): global capteur0 global capteur1 global capteur2 global udpSocket global destIP global portOut DestIP = QHostAddress(destIP); global slider1Value global slider2Value chaine=str(slider1Value)+ " " + str(slider2Value) chaine=chaine+chr(13)+chr(10) print("la chaine envoyée est: "+chaine) udpSocket.writeDatagram(chaine.encode('utf-8'),DestIP, portOut); ################################################################################ def timerUpdate(): sendUDP(0) ################################################################################ #destIP='192.168.1.50' #pc simulateur #destIP='192.168.0.112' #pc simulateur #destIP='192.168.1.49' #pc serveur rapid connecté en filaire à réseau AIP #destIP='127.0.0.1' #pc serveur sur la boucle locale destIP='172.16.6.59' #pc serveur rapid connecté en filaire à réseau IUT Gomette bleue portOut=10000 posx=10 posy=10 sizex=500 sizey=150 ################################################################################ app = QApplication(sys.argv) w=QWidget(None) #QDialog() statusLabel =QLabel('En attente de datagrammes UDP depuis le PIC32') commutTimerButton=QPushButton('start clignote LED0') quitButton = QPushButton('&Quit') led0Button = QPushButton('Led&0') led1Button = QPushButton('Led&1') led2Button = QPushButton('Led&2') udpSocket =QUdpSocket() udpSocket.bind(portOut, QUdpSocket.ShareAddress) quitButton.clicked.connect(close) commutTimerButton.clicked.connect(commutTimer) led0Button.clicked.connect(bouton0) led1Button.clicked.connect(bouton1) led2Button.clicked.connect(bouton2) ''' app.connect(quitButton,QtCore.SIGNAL('clicked()'), close) app.connect(commutTimerButton, QtCore.SIGNAL('clicked()'), commutTimer) app.connect(led0Button,QtCore.SIGNAL('clicked()'), bouton0) app.connect(led1Button,QtCore.SIGNAL('clicked()'), bouton1) app.connect(led2Button,QtCore.SIGNAL('clicked()'), bouton2) ''' buttonLayout =QHBoxLayout() buttonLayout.addStretch(1) buttonLayout.addWidget(quitButton) buttonLayout.addWidget(commutTimerButton) buttonLayout.addStretch(1) button1Layout =QHBoxLayout() button1Layout.addStretch(1) button1Layout.addWidget(led0Button) button1Layout.addStretch(1) button1Layout.addWidget(led1Button) button1Layout.addStretch(1) button1Layout.addWidget(led2Button) button1Layout.addStretch(1) #http://koor.fr/Python/CodeSamplesQt/PyQtSlider.wp slider1 = QSlider(Qt.Horizontal); slider1.setMinimum(-70) slider1.setMaximum(70) slider1.setGeometry( 10, 10, 600, 40 ) slider1.valueChanged.connect(slider1ValueChanged ) slider1.setValue( 0 ) #labelSlider1Value=QLabel( ) #labelSlider1Value.setGeometry(250, 50, 50, 35) #labelSlider1Value.setText( str( slider1.getValue() ) ) sliderLayout =QHBoxLayout() sliderLayout.addStretch(1) sliderLayout.addWidget(slider1) sliderLayout.addStretch(1) #sliderLayout.addWidget(labelSlider1Value) #sliderLayout.addStretch(1) slider2 = QSlider(Qt.Horizontal); slider2.setMinimum(-70) slider2.setMaximum(70) slider2.setGeometry( 10, 10, 600, 40 ) slider2.valueChanged.connect(slider2ValueChanged ) slider2.setValue( 0 ) sliderLayout.addWidget(slider2) sliderLayout.addStretch(1) mainLayout = QVBoxLayout() mainLayout.addLayout(buttonLayout) mainLayout.addLayout(button1Layout) mainLayout.addLayout(sliderLayout) mainLayout.addWidget(statusLabel) w.setLayout(mainLayout) chaine='@BVDP2019: Port Em '+str(portOut) +' vers IP: '+str(destIP) w.setWindowTitle(chaine) #timer adapted from example 1 of https://www.programcreek.com/python/example/52106/PyQt4.QtCore.QTimer timer = QtCore.QTimer() #app.connect(timer, QtCore.SIGNAL('timeout()'), timerUpdate) timer.timeout.connect(timerUpdate) timer.setInterval(100) timer.start() w.setGeometry(posx,posy,sizex,sizey) #donne le focus au bouton 1 led0Button.setDefault(True) w.show() app.exec_() =====En cas de problème avec pip==== J'avais eu un Problème sur pc dev staubli, pip s'est cassé car fenêtre terminal fermée pendant l'upgrade de pip: C:\Users\bertrand.vandeportae\Downloads>python simu_sensor_2_qt5.py Traceback (most recent call last): File "C:\Program Files\Python39\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Program Files\Python39\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "\\iut.iut-tlse3.fr\ponsan\profil\p-ge2i\bertrand.vandeportae\redirections_10\Appdata\Python\Python39\site-packages\pip\__main__.py", line 29, in from pip._internal.cli.main import main as _main File "\\iut.iut-tlse3.fr\ponsan\profil\p-ge2i\bertrand.vandeportae\redirections_10\Appdata\Python\Python39\site-packages\pip\_internal\cli\main.py", line 9, in from pip._internal.cli.autocompletion import autocomplete File "\\iut.iut-tlse3.fr\ponsan\profil\p-ge2i\bertrand.vandeportae\redirections_10\Appdata\Python\Python39\site-packages\pip\_internal\cli\autocompletion.py", line 10, in from pip._internal.cli.main_parser import create_main_parser File "\\iut.iut-tlse3.fr\ponsan\profil\p-ge2i\bertrand.vandeportae\redirections_10\Appdata\Python\Python39\site-packages\pip\_internal\cli\main_parser.py", line 8, in from pip._internal.cli import cmdoptions File "\\iut.iut-tlse3.fr\ponsan\profil\p-ge2i\bertrand.vandeportae\redirections_10\Appdata\Python\Python39\site-packages\pip\_internal\cli\cmdoptions.py", line 21, in from pip._vendor.packaging.utils import canonicalize_name ModuleNotFoundError: No module named 'pip._vendor.packaging' Traceback (most recent call last): File "C:\Users\bertrand.vandeportae\Downloads\simu_sensor_2_qt5.py", line 14, in reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) File "C:\Program Files\Python39\lib\subprocess.py", line 424, in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, File "C:\Program Files\Python39\lib\subprocess.py", line 528, in run raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError: Command '['C:\\Program Files\\Python39\\python.exe', '-m', 'pip', 'freeze']' returned non-zero exit status 1. C:\Users\bertrand.vandeportae\Downloads> ===Tentative infructueuse de localiser les fichiers de config Python=== explorateur Windows: Affichage , cocher "éléments masqués" copier l'URL: C:\Users\bertrand.vandeportae\AppData (il y a des correspondances bidons entre les noms affichés par explorateur et le vrai chemin...) je ne trouve pas les dossiers python ====Réinstallation manuelle de pip en tant qu'utilisateur==== doc sur: https://www.codegrepper.com/code-examples/python/install+pip+windows+10+python+3.9 télécharger le script de réparation: https://bootstrap.pypa.io/get-pip.py puis l'exécuter: python get-pip.py Defaulting to user installation because normal site-packages is not writeable Collecting pip Downloading pip-21.3.1-py3-none-any.whl (1.7 MB) |████████████████████████████████| 1.7 MB 3.2 MB/s Collecting wheel Downloading wheel-0.37.0-py2.py3-none-any.whl (35 kB) Installing collected packages: wheel, pip WARNING: The script wheel.exe is installed in '\\iut.iut-tlse3.fr\ponsan\profil\p-ge2i\bertrand.vandeportae\redirections_10\Appdata\Python\Python39\Scripts' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. WARNING: The scripts pip.exe, pip3.9.exe and pip3.exe are installed in '\\iut.iut-tlse3.fr\ponsan\profil\p-ge2i\bertrand.vandeportae\redirections_10\Appdata\Python\Python39\Scripts' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed pip-21.3.1 wheel-0.37.0 WARNING: You are using pip version 21.2.3; however, version 21.3.1 is available. You should consider upgrading via the 'C:\Program Files\Python39\python.exe -m pip install --upgrade pip' command. =====Pour faire des captures d'écran avec windows 10 ===== SHIFT+WINDOWS+S =====Réseau gommette rouge===== rapid connecté en ethernet à prise 41 ou 42 (gomettes rouges) 2: enp0s25: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether a0:8c:fd:a7:a0:52 brd ff:ff:ff:ff:ff:ff inet 172.16.8.58/24 brd 172.16.8.255 scope global dynamic enp0s25 valid_lft 297sec preferred_lft 297sec inet6 fe80::90ba:7bbd:724c:1921/64 scope link valid_lft forever preferred_lft forever est ce un bail dhcp static? =====PC de développement à coté du robot===== =====Installation SRS2022===== il faut mettre la version SRS 2022.6.1 dans S:\commun\BUT2\installeur_SRS2022\Installeur_Staubli2022.6.1\setup.exe tout installer dans S:\commun\BUT2\installeur_SRS2022\Installeur_Emulateur_s8.11Cs9BS2229\setup.exe tout installer s8.11Cs9BS2229 Fichier->Configuration Fichier→Aide→Ouvrir l'outils de mise à jour en ligne (afficher les mises à jour Emulateur/robot) (show online updater) s8.11Cs9BS2229 et télécharger +installer a mis l'installer dans: C:\Users\bertrand.vandeportae\AppData\Local\Temp\0lpkbaib.iv1 installe dans C:\Program Files (x86)\Staubli\CS8\s8.11cs9_BS2229\ redemarrer SRS 2022 pour qu'il prenne en compte la nouvelle version d'emulateur tx2 60 Fixation sol Horizontal base cable outlet =====Upgrade projet vers SRS 2022===== H:\test_projet_staubli_2019_2022 H:\test_projet_staubli_2019_2022\CellStylo_vide\CellStylo_vide pour repasser à 2019 CellStylo.cell: Controller1/Controller1.controller s8.11Cs9_BS2229 TX2_60-HB-WS je vire du projet de mary: tous les P:/s3aii/s3aii2/mari_elyamin/SAE_S4/CELL_IUT0/CAD/cellule_simplifiee_1.wrl mais import cellule foire...