pixter Inserito: 29 ottobre 2005 Segnala Share Inserito: 29 ottobre 2005 Salve a tutti..non so se questa è la sezione pù giusta per inserire questa domanda..però..volevo sapere se è possibile gestire la porta usb con un programma scritto in coppure se è possibile gestire la porta seriale o la scheda di rete..perchè vorrei connettere dei dispositivi al pc e gestirli con un programmino..grazie in anticipo.. Link al commento Condividi su altri siti More sharing options...
Federico Milan Inserita: 29 ottobre 2005 Segnala Share Inserita: 29 ottobre 2005 non so se questa è la sezione pù giusta per inserire questa domanda..però.. Link al commento Condividi su altri siti More sharing options...
ifachsoftware Inserita: 29 ottobre 2005 Segnala Share Inserita: 29 ottobre 2005 Federico stai rispondendo da dentro una Valle ? perche' ti torna l'eco Ciao Link al commento Condividi su altri siti More sharing options...
pixter Inserita: 29 ottobre 2005 Autore Segnala Share Inserita: 29 ottobre 2005 Su internet ho gia fatto un sacco di ricerche ma con risultati molto scarsi..sono riuscito a trovare solo come gestire la parallela..che è la cosa che vorrei evitare..mi volevo concentrare più su usb o lan.. Link al commento Condividi su altri siti More sharing options...
elettro83 Inserita: 29 ottobre 2005 Segnala Share Inserita: 29 ottobre 2005 Se devi usare per forsa il C/C++ non lo so ma se ti "butti" su altri tipi di programma tipo il Lab View per gestire seriale o usb ci sono blocchi gi implementati. Link al commento Condividi su altri siti More sharing options...
irpick Inserita: 29 ottobre 2005 Segnala Share Inserita: 29 ottobre 2005 2 soluzioni :costrursi il driver (complicao e per utenti esperti)farsi fornire libreria o dll Link al commento Condividi su altri siti More sharing options...
pixter Inserita: 29 ottobre 2005 Autore Segnala Share Inserita: 29 ottobre 2005 E percaso sapete dove trovare queste librerie?..ho cercato un po'in rete ma con risultati molto molto scarsi.. Link al commento Condividi su altri siti More sharing options...
Random Inserita: 16 novembre 2005 Segnala Share Inserita: 16 novembre 2005 Ciao a tutti sono appena iscritto a questo forum e cosa c'e' di meglio che iniziare con un bel :offtopic: !!! Siccome stavo cercando all'interno del forum se esistono cross-compilatori C gratuiti per i PIC (Sto iniziando adesso ad avventurarmi in queste cose, quindi ignoranza totale!!! P.S. Se ce ne sono mi indirizzate per favore)Ho notato questo post e siccome ho una infarinatura di C e guardacaso di come utilizzare le porte seriali rispondo al volo!!!Per quanto riguarda i sistemi Win 2000 e XP esistono delle API apposite per la gestione di questi dispositivi ti posto il codice per farti capire meglio quali API si utilizzano #include "seriale.h" #define RESETSIGNAL EV_RLSD BOOL aperta; HANDLE porta; int apriporta(char com[],long baud,int parity,int bytesize,int stopbits){ DCB dcb; COMMTIMEOUTS timeouts; /*printf("%s,%ld,%d,%d,%d",com,baud,parity,bytesize,stopbits);*/ porta = CreateFile(com, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if(porta ==INVALID_HANDLE_VALUE){ printf("Porta non aperta\n"); chiudiporta(); exit(1); } SetupComm( porta, 1024, 1024); timeouts.ReadIntervalTimeout = 0; timeouts.ReadTotalTimeoutMultiplier = 1; timeouts.ReadTotalTimeoutConstant = 50; timeouts.WriteTotalTimeoutMultiplier = 1; timeouts.WriteTotalTimeoutConstant = 500; if(!SetCommTimeouts(porta,&timeouts)){ printf("Errore di comunicazione\n"); chiudiporta(); exit(1); } SetCommMask(porta, RESETSIGNAL | EV_RXCHAR); dcb.DCBlength = sizeof(dcb); GetCommState(porta,&dcb); dcb.BaudRate = baud; switch (parity){ case 'E': dcb.Parity = EVENPARITY; break; case 'O': dcb.Parity = ODDPARITY; break; case 'N': dcb.Parity = NOPARITY;break; case 'S': dcb.Parity = SPACEPARITY;break; case 'M': dcb.Parity = MARKPARITY;break; } dcb.ByteSize = bytesize; switch (stopbits){ case 1 : dcb.StopBits = ONESTOPBIT; break; case 2 :*/ dcb.StopBits = TWOSTOPBITS;/*break; } dcb.fParity = TRUE; dcb.EofChar = 0x1b; dcb.fBinary = TRUE; dcb.ErrorChar = 0x00; dcb.XonLim = 0x2048; dcb.XoffLim = 0x512; dcb.XonChar = 0x13; dcb.XoffChar = 0x17; aperta = SetCommState(porta,&dcb); if(!aperta){ puts("Porta non aperta!!!"); chiudiporta(); exit(1); } return 1; } void chiudiporta(){ CloseHandle(porta); } int readbyte(unsigned char dims) { BYTE b; DWORD bytesread, evtMask = 0; do { ReadFile(porta, &b, 1, &bytesread, NULL); /* cerca di leggere il byte */ if(bytesread == 1)/*Se lo trova esce dal ciclo altrimenti si mette in ascolto*/ break; WaitCommEvent(porta, &evtMask, NULL); if(evtMask | RESETSIGNAL) { Sleep(700); return -1; } } while(1); if (dims) printf(" %02x",b); return (int)b; } int sendbyte(BYTE byte) { static DWORD byteswritten, bytesread; static BYTE b2transmit, b2read; b2transmit =byte; WriteFile(porta, &b2transmit, 1, &byteswritten, NULL); if(byteswritten == 0) { printf("Errore di scrittura\n"); return -1; } ReadFile(porta, &b2read, 1, &bytesread, NULL); if(bytesread == 0) { printf("Nessun byte disponibile\n"); return -1; } if(b2read != b2transmit) { printf("Bytes non allineati %02x - %02x\n", b2transmit, b2read); return -1; } printf(" %02x",b2transmit); return 0; } int sendbyte_n(BYTE *bytes, int n) { int i; BYTE *p=bytes; for(i=0; i<n; i++) if (sendbyte(*(p++))) return i; return n; } void GetReset() { DWORD resetmask; printf("\n\rAttendo il reset\n"); PurgeComm(porta, PURGE_TXCLEAR | PURGE_RXCLEAR); do { WaitCommEvent(porta, &resetmask, NULL); } while(!(resetmask & RESETSIGNAL)); readbyte(0); } Un elenco completo delle API di win lo trovi oltre che sul sito di MSDN anche quiftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exeSpero di aver fatto cosa gradita e di non aver abusato troppo della vostra gentilezza con il proseguimento di questo :offtopic:Saluti Link al commento Condividi su altri siti More sharing options...
dannyspacey Inserita: 30 gennaio 2006 Segnala Share Inserita: 30 gennaio 2006 io ho lo stesso problemino...comunicare attraverso c con una periferica collegata via USB...ahimè anch'io ho ricercato invano in rete con penosi risultati......AIUTOOOOOOOOOOOOOO Link al commento Condividi su altri siti More sharing options...
Giorgio Demurtas Inserita: 30 gennaio 2006 Segnala Share Inserita: 30 gennaio 2006 Mi sembra scontato cercare documenti in INGLESE. In italiano c'è molto meno materiale. Link al commento Condividi su altri siti More sharing options...
dannyspacey Inserita: 30 gennaio 2006 Segnala Share Inserita: 30 gennaio 2006 beh...ho provato anche con quelli!!!Ho sentito parlare anche di "direct drivers" senza i quali non è possibile in alcun modo risolvereil problema su citato...confermate la cosa o è possibile senza l'ausilio di questi ultimi?!? Link al commento Condividi su altri siti More sharing options...
pcb-proto Inserita: 30 gennaio 2006 Segnala Share Inserita: 30 gennaio 2006 Ciao,io penso che tu debba prima di tutto selezionare un hardware per controllare i tuoi circuiti elettronici. Una volta scelto il controller USB (per esempio un PIC o un controller FTDI o un prodotto Cypress) allora potrai cercare direttamente sul sito dei produttori i drivers che fanno al caso tuo (di solito distribuiti gratuitamente). Io ho provato sia gli FTDI (www.ftdichip.com) sia i PIC (www.microchip.com) e funzionano entrambi benissimo: se vuoi fare alla svelta ti consiglio i controllori FTDI, praticamante sono pronti all'uso e vengono forniti sia drivers che DLL per C, Delphi e VB.Spero di esserti stato d'aiuto,Ciao Link al commento Condividi su altri siti More sharing options...
mirchetto Inserita: 8 febbraio 2006 Segnala Share Inserita: 8 febbraio 2006 (modificato) Per RANDOM> ciao! Interessante il codice che hai postato, io sono un profano e dovrei gestire la seriale da c++ quindi mi sarebbe molto utile; sorge pero un problema: dove trovo seriale.h ? è una libreria? un pezzetto di codice che hai scritto tu?...Grazie ciao. Modificato: 8 febbraio 2006 da mirchetto Link al commento Condividi su altri siti More sharing options...
Random Inserita: 10 febbraio 2006 Segnala Share Inserita: 10 febbraio 2006 Per RANDOM> ciao! Interessante il codice che hai postato, io sono un profano e dovrei gestire la seriale da c++ quindi mi sarebbe molto utile; sorge pero un problema: dove trovo seriale.h ? è una libreria? un pezzetto di codice che hai scritto tu?...Grazie ciao. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora