Seriovy port v C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Seriovy port v C – C / C++ – Fórum – Programujte.comSeriovy port v C – C / C++ – Fórum – Programujte.com

 

jatagan
~ Anonymní uživatel
5 příspěvků
14. 4. 2010   #1
-
0
-

Mám problém,
mám redukci na seriový port. Na tento port musím připojit robota se třemi servy, která jsou ovládána, přes seriový port. Ale bohužel nemohu ani vytvořit komunikaci pro seriový port a tento daný mikropočítač.
Mohl byste mi prosím nědko poradit?
Děkuji

Nahlásit jako SPAM
IP: 212.24.158.–
KIIV
~ Moderátor
+43
God of flame
14. 4. 2010   #2
-
0
-
Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
jouda0
Duch
14. 4. 2010   #3
-
0
-

To jatagan : Takze pokud to chapu dobre, tak potrebujes kod pro mikrokontroler i seriovy port v PC? Pokud tomu tak je, mas uz nejakou predstavu o necem jako komunikacni protokol - prikazy pro MCU, nastaveni komunikace...?

Nahlásit jako SPAM
IP: 212.20.106.–
Jatagan
~ Anonymní uživatel
5 příspěvků
14. 4. 2010   #4
-
0
-

jouda napsal:
To jatagan : Takze pokud to chapu dobre, tak potrebujes kod pro mikrokontroler i seriovy port v PC? Pokud tomu tak je, mas uz nejakou predstavu o necem jako komunikacni protokol - prikazy pro MCU, nastaveni komunikace...?





Pro mikrokontroler to nepotřebuji, ten už je připravenej od výrobce. Tam je jedno servo ovládáno takto:
<1byte><2byte><3byte>
kde 1byte je synchronizacni, takze vzdy 255
2byte je cislo serva
a 3byte je poloha serva


takze ja si myslim, ze ted potrebuju "jen " nejaky komunikacni program pres ktery toho robota a pocitac propojim pomoci portu a pak na stisk klavesy se odesle vzdy jeden pohyb

Nahlásit jako SPAM
IP: 212.24.158.–
jouda0
Duch
14. 4. 2010   #5
-
0
-

To Jatagan : Tak to neni problem... A je to jeste jednodussi, pokud te nezajima odpoved (pokud existuje) od MCU, protoze tam by to pak asi vedlo na vlakno(zalezi na protokolu)... Vsechny potrebne fce ti napsal KIIV, pokud chces jen odesilani, tak ti staci CreateFile, OpenFile, WriteFile a CloseFile. Kdybys u toho necemu nerozumel, tak zas napis....

Nahlásit jako SPAM
IP: 80.188.37.–
Jatagan
~ Anonymní uživatel
5 příspěvků
14. 4. 2010   #6
-
0
-

Děkuji mnohokrát za odpovědi, jdu se na to vrhnout, snad se už zadaří

Nahlásit jako SPAM
IP: 212.24.158.–
Jatagan
~ Anonymní uživatel
5 příspěvků
21. 4. 2010   #7
-
0
-

tak jsem vytvořila toto, zatim bez posílání, ale ted mám porblém, že mi to nidke nejde zkompiovat, takže to dělám asi blbě.. Jako základy programování krapet mám, ale nevim, jestli to otveřiát jako windows application nebo console application a jetsli mi na to stačí codeblock?Děkuji za odpovědi

#include <windows.h>

int main()
{
HANDLE hSerial;
hSerial=CreateFile("COM4",
GENERIC_READ | GENERIC_WRITE, //MOZNA POSTACI JEN WRITE, KDYZ NECHCEME CIST
0,
0,
OPEN_EXISTING,
FILE-ATRIBUTE_NORMAL,
0);

if (hSerial=INVALID_HANDLE_VALUE){
if (GetLastError()==ERROR_FILE_NOT_FOUND){
//Serial port does nost exost. Inform user.
}
//Some other error ocurred. Inform user.
}

DCB dcbSerialParams={0};
dcbSerial.DCBlenght=sizeof(dcbSerialParams);
if (!GetCommState(hSerial,&dcbSerialParams)){
//error getting state
}
dcbSerialParams.BaudRate=CBR_9600;
dcbSerialParams.ByteSize=8;
dcbSerialParams.StopBits=ONESTOPBIT;
dcbSerialparams.Parity=NOPARITY;

/*if (!SetCommState(hSerial;&dcbSerialParams)){
//error setting serial port state
}

COMMTIMEOUTS timeouts={0}; //casy v milisekundach
timeouts.ReadInternalTiomeout=50;
timeouts.ReadTotalTimeoutMultiplier=10;
timeouts.WriteTotalTimeoutConstant=50;
timeoutes.WriteTotalTimeoutMultiplier=10;
if (!SetCommTimeouts(hSerial;&timeouts)){
//error ocureed. Inform user.
} */

char szBuff[4]={0}; // n+1
DWOR dwBytesWrite=0;

if (!WriteFile(hSerial,szBuff, 3, &dwBytesWrite, NULL)){
//error ocurres. Report to user.
}

CloseHandle(hSerial);
return 0;
}

Nahlásit jako SPAM
IP: 212.24.158.–
liborb
~ Redaktor
+18
Guru
22. 4. 2010   #8
-
0
-

Když si opravíš chyby, překlepy a nedoklepy, tak ti to půjde, namátkou (jak to má být správně):



FILE_ATTRIBUTE_NORMAL

if (hSerial==INVALID_HANDLE_VALUE){

dcbSerialParams.DCBlength=sizeof(dcbSerialParams);

DWORD dwBytesWrite=0;

Nahlásit jako SPAM
IP: 85.207.166.–
jouda0
Duch
22. 4. 2010   #9
-
0
-

To Jatagan : DWOR dwBytesWrite=0; -> typ promenne by mel byt DWORD, s code blocks nedelam, ale urcite by ti to melo jit v devCpp, pokud nechces stahovat visual studio nebo Turbo C++. Asi by to melo jit i jako konzolova aplikace....

Pak tam jeste nikde nevidim pouziti funkce OpenFile... ta by mela predchazet pouziti WriteFile....

Nahlásit jako SPAM
IP: 212.20.106.–
liborb
~ Redaktor
+18
Guru
22. 4. 2010   #10
-
0
-

To jouda : Na otevření portu se spíše používá CreateFile (nikoliv OpenFile) a ten tam má.

Nahlásit jako SPAM
IP: 85.207.166.–
jouda0
Duch
22. 4. 2010   #11
-
0
-

To liborb : ups...sry...mas pravdu, jsem kouknul jinam nez jsem mel.....OpenFile opravdu neni potreba....

Nahlásit jako SPAM
IP: 212.20.106.–
jouda0
Duch
22. 4. 2010   #12
-
0
-

To Jatagan : Do kdy ten program mas mit hotovej? Nebo to je jen hobby?

Nahlásit jako SPAM
IP: 212.20.106.–
Anonymní uživatel
~ Anonymní uživatel
0 příspěvků
22. 4. 2010   #13
-
0
-

To jouda :

tak hobby to není, mám to mít do konce května. Prostě bakalářka. ale začla jsme pozdě, tradičně,ale když rozchodim toto, tak už to snad půjde.

Moc děkuji za rady:)

Nahlásit jako SPAM
IP: 212.24.158.–
jouda0
Duch
22. 4. 2010   #14
-
0
-

To Anonymní uživatel : jestli chces tak napis na icq 270497569 ti s tim pichnu....

Nahlásit jako SPAM
IP: 212.20.106.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 29 hostů

Podobná vlákna

Sériový port — založil Yety

Seriovy port v C — založil jatagan

Java - seriovy port — založil martin

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý