kennis-ervaring met python (Computertechniek)

door loek @, Exloo (Drenthe), 29-07-2016, 18:58 (2800 dagen geleden)

Hallo forumlezers,

Als voorbereiding op het maken van een HPIB bus. Ben ik op zoek naar iemand die mij zou kunnen helpen met het programma Python.

Ondanks zeer veel uitleg en voorbeelden op internet zit ik zelf, al meerdere dagen, in een "denk-loop" waardoor je niet kan zien wat je fout doet.

Graag jullie reacties

Al vast bedankt met vriendelijke groet,

Loek

kennis-ervaring met python

door Maarten Bakker ⌂ @, Haarlem/Delft, 30-07-2016, 13:37 (2799 dagen geleden) @ loek

Je zou kunnen proberen om je probleem gewoon hier te posten en eens te zien of dat helpt. Soms werkt het al als je een wedervraag of een idee leest van iemand die weliswaar bekend is met programmeertalen in het algemeen maar niet zo met Python in het bijzonder.

kennis-ervaring met python

door loek @, Exloo (Drenthe), 30-07-2016, 14:41 (2799 dagen geleden) @ Maarten Bakker
Gewijzigd door loek, 30-07-2016, 14:51

Je zou kunnen proberen om je probleem gewoon hier te posten en eens te zien of dat helpt. Soms werkt het al als je een wedervraag of een idee leest van iemand die weliswaar bekend is met programmeertalen in het algemeen maar niet zo met Python in het bijzonder.

Hallo Maarten,

Ik zoekt eigenlijk iemand met ervaring van in Python die kan zien wat ik fout doe. Zelf weet ik dus bijna helemaal niets van Python.
Waarom zou ik dan Python in eens willen gebruiken?

Het antwoord is:
Ik wil wat experimenteren met een HPIB bus. Daarvoor heb je als eerste een converter nodig. Op internet zijn veel type zelfbouw converters te zien. Ik heb gekozen voor het ontwerp dat heet AGIPIBI. Deze converter bestaat in dit geval uit een Arduino Mega die via de USB is aangesloten op de computer. De poorten van de Arduino gaan naar alle data lijnen van de HPIB bus.

Het programma dat dus de opdrachten naar en van de data bus van HPIB stuurt/leest is gemaakt in de Arduino omgeving en staat dus los van Python.

Om nu bijvoorbeeld een meetapparaat via de HPIB bus te kunnen aansturen moet je dus via de USB commando's kunnen sturen naar de converter. En reacties zowel van de converter als van het meetapparaat weer kunnen zien op het computerscherm.

Ook daar zijn weer allerlei oplossingen voor. Maar bij het ontwerp van AGIPIBI waren ook deze stukken software mee geleverd. Echter deze waren geschreven in Python. Je zou dus denken dat hoort bij elkaar en zal dan ook wel snel werken zonder diepgaande kennis van Python.

Na veel gelezen te hebben leek mij Python wel geschikt voor wat ik eigenlijk van plan was.

De drie delen Python software die bij AGIPIBI geleverd waren zijn:

1e Voorbeeld om een oscilloscoop van tektronix uit te lezen
2e Software die de control lijnen van de AGIPIBI interface aanstuurt
3e software die de meldingen vanuit de Arduino vertaald.

Dus het 2e en 3e stukje software zijn er altijd. En het eerste stukje zou steeds per meetapparaat verschillend kunnen zijn. Of zelfs dat er in dat moduul meerde meetapparaten verwerkt zijn. Bijvoorbeeld je geeft een generator een opdracht voor niveau en frequentie. En daarna geeft je een niveau meter de opdracht om het resultaat te meten. En daarna te presenteren in een grafiek of iets dergelijks.

De software modulen zijn allemaal van het type *****.PY
Je kan in een scherm van Python deze naam oproepen en dan wordt het programma uitgevoerd.

De bedoeling is dat je de naam van het eerste programma uitvoert.
In dat deel zit een import commando die de tweede aanroept en in dat tweede programma zit weer een import die het derde aanroept. Daarna kom je dus weer terug in het eerste en zo verder.

Nu daar zit nu mijn probleem. Het lukt op geen enkele manier om vanuit het eerste of tweede stukje software een ander moduul aan te roepen.

Er komt dan een foutmelding: "Value Error: Atemted relatieve import in non-pakage."

Natuurlijk ben ik gaan zoeken op internet naar deze melding en er zijn honderden oplossingen die ook allemaal weer verschillen zijn. Maar geen één werkt er bij mij. Ook bij de geleverde oplossingen zit dan weer zoveel extra zeer specialistische aanwijzingen dat je door de bomen het bos niet meer ziet.
Ik heb nog geen enkele simpele uitleg gevonden. Het lijkt wel of bij deze taal er geen simpele oplossing/beschrijving mogelijk is.

Na vele dagen van zoeken/uitproberen kom ik tot de conclusie dat het niet werkt door een denkfout. Zelf heb ik onvoldoende kennis van Python om er achter te komen waar deze fout zit. Zelfs alle tutorials heb ik doorgenomen en uitgeprobeerd maar niets helpt. Ik zoek dus iemand die echt weet hoe het werkt en zegt: dat doe je fout.

Met vriendelijke groet,

Loek

kennis-ervaring met python

door Oldtimer @, Oegstgeest, 30-07-2016, 15:31 (2799 dagen geleden) @ loek

Loek,

Je geeft zelf al aan dat je bijna niets van Python af weet. Dat is geen schande, alles moet je leren.
En dat is dan ook mijn advies, zorg eerst dat je redelijk overweg kan met Python. Anders begrijp je een eventuele oplossing van je probleem ook niet...

En ik vraag me af of dit forum wel de meest aangewezen weg is om programmeerproblemen in welke taal dan ook op de lossen, daar zijn meer geëigende fora voor.

Tenslotte: die foutmelding "Value Error: Atemted relatieve import in non-pakage." moet natuurlijk zijn "ValueError: Attempted relative import in non-package". Als je ook zo slordig programmeert begrijp ik wel dat je vastloopt. :-(

Willem

kennis-ervaring met python

door loek @, Exloo (Drenthe), 31-07-2016, 10:34 (2798 dagen geleden) @ Oldtimer

Hallo Willem,

Bedankt voor je reactie. Het was/is mijn bedoeling niet om deze taal tot in detail te begrijpen. Ik had meer het idee het als een stuk gereedschap te kunnen gebruiken. En bijvoorbeeld bij het gebruik van een boormachine hoef je toch ook niet te weten hoe het inwendige werkt.

Maar het lijkt er steeds meer op dat deze taal wel verlangt dat je deze diepgaande kennis hebt.

Er zijn zeker ander fora die veel schrijven over deze onderwerpen. Maar als ik deze lees dan geven ze vaak antwoord met een voorbeeld er bij. En in dat voorbeeld zitten dan (voor mij) al weer een aantal nieuwe commando's die ik niet begrijp. Maar aan de reacties van de vraagstellers zie je dan dat zij het vaak ook niet begrijpen maar het eigenlijk niet (durven) te zeggen.

Op dergelijke fora ga ik geen vraag stellen.
Uiteindelijk komt er wel een oplossing. De eerste poging is dit forum.

Met vriendelijke groet,

Loek

kennis-ervaring met python

door Oldtimer @, Oegstgeest, 31-07-2016, 15:10 (2798 dagen geleden) @ loek

Als je snel aan de slag wilt waarom koop je dan niet gewoon zo'n GPIB-bus interfacekaart, zo duur zijn ze nou ook weer niet, zie:

http://nl.aliexpress.com/item/Pulled-Tested-Ok-Interface-PCI-4304-GPIB-Card/32421454182.html?isOr...

kennis-ervaring met python

door loek @, Exloo (Drenthe), 01-08-2016, 12:44 (2797 dagen geleden) @ Oldtimer

Als je snel aan de slag wilt waarom koop je dan niet gewoon zo'n GPIB-bus interfacekaart, zo duur zijn ze nou ook weer niet, zie:

http://nl.aliexpress.com/item/Pulled-Tested-Ok-Interface-PCI-4304-GPIB-Card/32421454182.html?isOr...

Hallo Oldtimer,

De belangrijkste reden is eigenlijk dat ik liever geen kaart wil, is omdat je dan vast zit aan computers die nog zo'n printkaart slot hebben. Meestal zijn dat de wat oudere PC's en daarbij dan ook nog dus oude software.

Met vriendelijke groet,

Loek

kennis-ervaring met python

door Oldtimer @, Oegstgeest, 02-08-2016, 15:01 (2796 dagen geleden) @ loek

In dat geval kun je dit overwegen:

https://www.antratek.nl/prologix-gpib-usb-controller?gclid=CLOAxJD8os4CFUHnGwodVAMPbQ

Let ook op de verwijzing naar de fabrikant in dat verhaal.

Programmeren van je meetapparatuur kan je met LabVIEW doen, er is een studentenversie die je gratis zes maanden mag gebruiken, zie:

https://decibel.ni.com/content/docs/DOC-30610

kennis-ervaring met python

door HM @, Hilversum, 30-07-2016, 18:22 (2799 dagen geleden) @ loek

Zonder kennis van Pyton lijkt me de foutmelding aan te geven dat er iets niet is.
Bestand niet aanwezig ( juiste map ? ) of er is iets niet (goed) geïnstalleerd.

kennis-ervaring met python

door Hans PA0H @, Apeldoorn, 30-07-2016, 20:25 (2799 dagen geleden) @ HM

Hier staat een lesje python. http://www.tutorialspoint.com/python/python_overview.htm.

groeten , Hans PA0H

kennis-ervaring met python

door Mans Veldman @, Leidschendam, 30-07-2016, 20:35 (2799 dagen geleden) @ Hans PA0H

Laatste punt in de link is er een teveel :-)

http://www.tutorialspoint.com/python/python_overview.htm

kennis-ervaring met python

door Hans PA0H @, Apeldoorn, 31-07-2016, 07:04 (2798 dagen geleden) @ Mans Veldman

ja ik zie het. Iets te slordig geweest met het selecteren.

groeten , Hans PA0H

kennis-ervaring met python

door loek @, Exloo (Drenthe), 31-07-2016, 10:57 (2798 dagen geleden) @ HM
Gewijzigd door loek, 31-07-2016, 11:13

Zonder kennis van Pyton lijkt me de foutmelding aan te geven dat er iets niet is.
Bestand niet aanwezig ( juiste map ? ) of er is iets niet (goed) geïnstalleerd.

Hallo HM,

Het klopt met wat je zegt. Bij Python is het zo dat alle programma onderdelen bestaan uit afzonderlijke tekst bestanden met de extentie .py. Deze bestanden staan in een directory structuur welke terug te vinden is in "sys.path".

Wordt er bijvoorbeeld in het zelf gemaakte programma iets gebruikt, bijvoorbeeld het ophalen van data van de USB bus, dan moet er ook een programma deel geladen zijn waar dit ophalen van USB in staat. Dit is bijvoorbeeld de module "serial.py". Deze module kan voor dat je python start eerst geïnstalleerd worden. Dit instaleren is eigenlijk dat onder anderen de "serial.py" in een directory wordt gezet. En dat in de DIR structuur "sys.path" ook deze folder wordt opgenomen.
In je programma moet dan staan import serial.py en daarna kan je alle functies die in deze module staan gebruiken. Veel modules zoals dus serial.py staan op de site van python als package met dus een installatie tool.

Maar nu komt mijn probleem: Als je dus zelf modules hebt zoals ik nu met de namen AGIPIBI.PY ARDUINO.PY en TEKTRONIX.PY die niet in een package zijn dan kan je vanuit deze modules wel de voorbeelden oproepen zoals ik hiervoor noemde.

Maar als je nu vanuit bijvoorbeeld AGIPIBI.PY de module ARDUINO.PY wilt oproepen dan gaat het fout. En komt de eerder genoemde foutmelding. Je kan met python ook direct de directory structuur zichtbaar maken en daar staat niet de eigen gemaakte files in. Dat zal dus ook wel de reden zijn dat het fout gaat.

Maar zoals al eerder opgemerkt zijn er dus veel oplossingen beschreven voor dit probleem. Je zou dan deze eigengemaakte files dan kunnen toevoegen in het sys.path. Maar helaas niets lukt nog tot nu toe.

Met vriendelijke groet,

Loek

kennis-ervaring met python

door HM @, Hilversum, 31-07-2016, 11:14 (2798 dagen geleden) @ loek

Ik ken het verschijnsel. Als je de MicroChip library gebruikt gaat die er van uit dat je een evaluatie board gebruikt ( 1 van de vele die ze hebben gemaakt ) en dat er een bepaalde processor op is geplaatst.
Allemaal prima als je een dergelijk board hebt maar het wordt pas leuk als je je eigen board hebt gemaakt met een processor die zelf hebt uitgekozen en een eigen project wilt opzetten.
Dan kun je om bijv. USB aan de gang te krijgen een bestandje op 20 doorspitten om allerlei verwijzingen naar gebruikte onderdelen en bestanden aan te passen.

Met python kan ik je helaas niet verder helpen maar zoek eens naar een compleet voorbeeld voor een ander meetinstrument en misschien zie je daarin hoe de koppelingen en bestandslocaties zijn gebruikt.

kennis-ervaring met python

door Maarten Bakker ⌂ @, Haarlem/Delft, 31-07-2016, 11:38 (2798 dagen geleden) @ loek
Gewijzigd door Maarten Bakker, 31-07-2016, 11:43

Misschien denk je te ver door. Sys.path kan ook gewoon de omgevingsvariabele path van je shell zijn, dus buiten Python om. Ik heb zelf wel wat ervaring met scripting en diverse programmeertalen maar Python staat bij mij ook nog op het lijstje "leren als ik het nodig heb". Het werd door de universitair docenten hoog geprezen, maar zat (nog) niet in het onderwijspakket toen ik daar rondliep.

Kun je eens aangeven hoe de import regels er uitzien waar het op misgaat? Die geven vast alleen een naam of een relatief pad op, en dan weet de Python interpreter niet waar hij het moet zoeken.

Onder welk operating system en op welke manier voer je de programma's uit? Windows commandline/powershell?

kennis-ervaring met python

door Maarten Bakker ⌂ @, Haarlem/Delft, 05-08-2016, 14:18 (2793 dagen geleden) @ Maarten Bakker

Hallo Loek,

Misschien tussen alle advertentiegeweld door een beetje ondergesneeuwd... Heb je nog iets aan bovenstaande tip gehad of er iets mee geprobeerd? Als het nog niet gelukt is, kun je mijn vragen eens beantwoorden?

powered by my little forum