06. juli 2015 - 20:04 Der er 5 kommentarer og
1 løsning

ARDUINO -- USB // SERIAL

HEJ,

Indledningsvis: Jeg ved ikke om dette spørgsmål retteligen hører til i Delphi-gruppen , men jeg prøver her (og flytter hvis jeg er gal på den):



Min 14 årige søn har købt en Arduino Uno. Den er han meget tilfreds med.

Nu er han ikke en ørn til C (eller C++) og det er jeg heller ikke. Men hidtil har han med større eller mindre vejledning (eller vildledning !) fra min side fået hans projekter til at fungere som han ønsker det.

Men i går kom han med et nyt spørgsmål:

"Er det muligt at skrive en kommunikations-rutinen til Arduino'en i Delphi ?"

Jeg ved at svaret er klart JA, men de praktiske detaljer er ukendte...

Så er der nogen i dette forum, som kan hjælpe ?

(Vi har set på arduino.com men det er ikke særlig godt beskrevet (for overfladisk og uden væsentlige detaljer om USB-protokollen og er (selvfølgelig) skrevet i C ).

Kristian
Avatar billede Xenu Juniormester
07. juli 2015 - 23:58 #1
Noget i denne stil: http://www.vwlowen.co.uk/arduino/usb-digital/pc-control.htm

ellers skal du ned på driver niveau og fifle med deres protokoller, men det er jo open-source :-)
08. juli 2015 - 11:30 #2
Hej,

Tak for responsen.

Vil bruge dagen i dag til at kigge lidt på det her og se om det vil funke. Kender lidt til den anvendte komponent (Delphi), så det skulle funke. 

Og begynde at fifle med protokoller ( = UF, UF og atter UF), og det ville være tåbeligt, hvis high-level komponenter fungerer... (Vi skal ikke være dataloger på universitets-niveau.. !)


Melder tilbage .
Avatar billede Xenu Juniormester
08. juli 2015 - 22:57 #3
ja, TComPort er lige så gammel som Delphi.

Men, det er jo "kun" til at kommunikeret til en COM-port driver, lige som Windows programmet HyperTerminal, som Arduino IDE også har sin Terminal, til at modtage print-output fra selve Arduino.

Hvis du forsøger at erstatte Arduino IDE med Delphi, er vi ovre i en hel anden boldgade. Internt kører Arduino en bootloader, som kun skal modtage det compilerede program fra Arduino IDE når du uploader og starte programmet op. Der har du en protokol, som jeg ikke lige er stødt på endnu, men den må være i sourcen til Arduino IDE, og så er det C/java kode.

Der findes Arduino plugins til forskelige IDE´s f.eks Microsoft Visual Studio - hvis det er den `grønne´ arduino IDE du vil undgå. Der findes muligvis også desideret plugin til Delphi IDE, men jeg husker ikke om jeg testede den.

Der er Arduino alle vegne efterhånden :-)
Avatar billede Xenu Juniormester
08. juli 2015 - 23:06 #4
Læste lige spørgsmålet igen: "Er det muligt at skrive en kommunikations-rutinen til Arduino'en i Delphi ?"

Nej! Arduino C/Java er et meget begrænset sprog, tilpasset de muligheder man har med en Arduino, så compileren forstår kun denne afart af Java. Delhi er meget mere omfattende og der skal laves en speciel Delphi/Arduino compiler eller fortolker. Sådan én har jeg ikke set endnu og så svært er java altså heller ikke, hvis man allerede kan programmere i Delphi.
09. juli 2015 - 00:25 #5
HEJ,

Har prøvet at bruge det i #2 skitserede program. Det virker.

Vores problem er imidlertid 2-sidet.

Den består af en DELPHI-('C/C++/Java PC Arduino ')-siden og så selve ATMEga 328 -siden.

AT få Delphi til at agere "snyde"-USB via COM X og sende Delphi-compilerede data til ARD'en er nemt nok, når driveren er installeret. Lidt ændringer i Delphi / TCOM applicationen (så den ikke defaulter til en ikke eksisterende USB/COM port ) men "pænt" må vente til den er fundet i TCOM. Osg så starte applicatiionen og sende / modtage data til/fra selve ARD-hardwaren.

Og lade softwaren i ARD*en reagere (forhåbentlig korrekt) på output fra Delphi.

Jeg ved at for at lade ARD-hardwaren kunne modtage Delphi-genereret ASSEMBler (ATMega 328 asm) er der mange betingelser, som skal være opfyldt.  Hvis vi ønsker at gå så vidt (næppe troligt - for det er ikke det vores overordnede formål er) er der protokoller, hardware-beskrivelser- interrupts og meget andet, som skal passe sammen - og vi vil gerne være færdige inden jul (hehe).

Formålet var at kunne kontrollere ARDen (4 stepper-motorer koblet på en lidt specielt måde // 4 bit databus til 4 externe latches  - til stepper-motorerne drevet af ULN 2003 - , 2 pins adresse-select og lidt styring af strobe, Output enable og LATCH) fra DELPHI  og det er (principielt) opfyldt.

Koden i ARDEN laver vi i C_Java (og må eksperimentere os frem til en løsning). Har vi problemer her skal I nok høre om det... (hehe).....

Kristian.

PS: Drop et svar !
Avatar billede Xenu Juniormester
09. juli 2015 - 21:49 #6
Det lyder rigtigt :-) Hvis du graver dig ned i TCom kildekoden, vil du se at det "bare" er windows API kald til alm. fil funktioner som Create/open/read/write etc. bare på en COM port. Men det har altid været lidt drilsk i Windows med den COM-port som ikke altid reagere og skal aflæses (polles) hele tiden for indput fra Arduino, det er ikke med hardware interupt lige som musen og keybrd, så hut jeg visker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester