Šta je novo?

C i COM portovi

kUdtiHaEX

Super ridža
Administrator
Učlanjen(a)
18.07.2001
Poruke
18,077
Poena
1,365
Moja oprema  
CPU & Cooler
Intel® Core™ i5-9500F, NZXT Kraken Z63
GPU
Asus GTX 2070 Super
Storage
Samsung 980 Pro NVMe 1 TB
Kućište
NZXT H210i
Monitor
LG C2 42"
Miš & tastatura
Logitech G502, Keychron K8, Nuphy Air75, Ducky TKL One 2
Ostale periferije
Glupi HP štampač
Laptop
Apple Macbook Pro 14" M1
Tablet
Apple iPad Pro 11"
Mobilni telefon
Apple iPhone 13 Pro Max
Pametni uređaji
Apple Watch Ultra
Pristup internetu
  1. Kablovski internet
Pozdrav,

trebao bi mi mali input oko ove teme. Zadatak mi je da napisem aplikaciju koja ce citati odredjene podatke iz tekstualnog fajla i slati iste na COM port. Posto nikad u zivotu nisam slao bilo sta na bilo kakav port, trebala bi mi mala pomoc oko tog dela price.

Googlao sam ali nisam siguran koji nacin od pronadjenih je ispravan a vreme mi je relativno ograniceno.

Hvala.
 
U Windows-u možeš COM port da otvoriš preko CreateFile (kao ime navedeš "COM1", "COM2"... koliko se ja sećam). I onda ga koristiš kao običan file.

U Linux-u otvoriš sa open() /dev/ttyS0 recimo i isto ga koristiš kao običan file.

edit:
Ne mogu ovo sada da proverim, ali mislim da je to meni tako radilo :)
 
Poslednja izmena:
Ukratko:

CreateFile()
SetupComm()
GetCommState()
SetCommState()
EscapeCommFunction()
SetCommTimeouts()
ReadFile()
WriteFile()

To su API f-je koje ti trebaju za rad sa COM portovima u Windowsu. Mozda ti ne trebaju bas sve ali cisto da znas sta sve da pogledas u MSDN.

Za linux iskreno receno nemam pojma.
 
za linux je provereno otvoris fajl i upisuje odnosno ciras iz njega.. mozes cak i u obicnom editoru. mozes da otvoris i flopi kao fajl odnosno cela filozofija unixa je da se uredjaji mapiraju u falove.. bilo blokovski uredjaji bilo character uredjaji
 
Osim sto ima jos neke f-je za linux za setovanje baud-rate i sl sto ja ne mogu da se setim sada.
 
Mislis, termios + tcsetattr za podesavanje terminal parametara? :)
 
silverglider je napisao(la):
Mislis, termios + tcsetattr za podesavanje terminal parametara? :)

ne, nego nesto za kontrolu DTR/CTS/RTS linija slicno kao u Windowsu EscapeCommFunction().
bese neki stat() ili tako nesto?
 
Radi to (izmedju ostalog) i ovo sta sam naveo.

Kod:
int hw_flowcontrol(int fd, int onoff)
{
struct termios tty;

tcgetattr(fd, &tty);

if (onoff) {
tty.c_cflag |= CRTSCTS; /* enable flowcontrol*/
} else {
tty.c_cflag &= ~CRTSCTS; /* disable flowcontrol*/
}

return tcsetattr(fd, TCSANOW, &tty);
}
 
Poslednja izmena:
Nazad
Vrh Dno