Čau všichni
Pracuji teď na projektu kde potřebuji aby mi počítač posílal data do procesoru (jedná se o jednotlivý kroky krokovejch motorů). V proceoru je napsanej program kde je mezi každým krokem mezera 4ms. Moje teorie byla taková: počítač mi pošle bajht kde bude řečeno jak se maj motory hnout, procesor než začne hejbat s motorama mu odpoví že data dostal a že může poslat další. Počítač odešle další bajt a čeká nato až mu procesor opťe pošle že může poslat další. Problém je vtom, že pocítač se snaží odesílat vždicky určitej blok dat posobě a nechce mi posílat jednotliví bajt. Když už ho ktomu přiměju, tak čeká asi 18ms než mi ten bajt pošle. Skoušel jsem obslužnej program napsat v C++ a ve visual basicu net 08. Nesetkal se nikdo s něčim podobnym, popřípadě nemá nikdo nějakej zdrojovej kód pro ovládání sériovýho portu nejlépe v C++.
Díky za jakoukoliv reakci.
administrator: přesunuto z "Elektronika s mikrokontroléry, procesory"
Nevím o jaký operační systém se jedná. Předpokládám, že jde o windows XP. Pro komunikaci s COMem potřebuješ sužby WIN API. Pracuje se s ním stejně jako se souborem, ale jméno souboru je COMx. X je číslo COMu. Otevření se provádí přes CreatFile. Má hodně parametrů, proto Tě mohu odkázat pouze na helpy SDK. Jsou obsaženy ve vývojovém prostředí alespoň u Borlandu ano. U Microsotftu nevím. V helpech najdeš odkazy na WriteFile a ReadFile pro zápis a čtení COMu.
Odesílání po jednom byte jsem nikdy nedělal, ale mělo by to jít. Záleží na nastavení. Problém může být v těch 4 ms. To nemusí OS dodržet, když bude něčím zaneprázdněn. Používám COM pro řízení RS485 a je tam problém obracení směru toku dat řízený signálem RTS. Ten někdy přesahuje až 10ms za posledním odvysílaným bytem, takže docela pochybuju o tom, že by tok dat probíhal plynule po 4 ms.
Díky za reakci, ale bohužel jsem zjistil že stim časováním je to docela oříšek a nikdy se mi nepodařilo dosáhnout toho aby mi odesílal bajty podle toho jak popisuju nahoře, je to nejspíš stoho důvodu že PC má různý odesílací bufry a chce mi odeslat víc dat najednou a to mu nejde vymluvit (apoň se mi to nepovedlo) Nakonec jsem to vyřešil tak že si posílam několik bajtů který mi vždy definujou posun motorů po určitej interval a díky tomu nepotřebuju při každym kroku přijmout bajt, ale procesor si kroky vypočítá sám.